Hook do zmiennej !!

0

to jest kod hooka, a moje pytanie jest na dole...

unit MainFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TMainForm = class(TForm)
    Memo: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  end;

var
  MainForm: TMainForm;
  ZmiennaQ, ZmiennaW, ZmiennaE, ZmiennaR, ZmiennaT: String;

implementation

{$R *.dfm}

var
  MainHook : HHOOK; // wskazanie na HOOK'a
  lpWnd : PChar; // nazwa okna, w którym użytkownik naciska klawisz

function KeyboardHook(Code: Integer; wParam : WPARAM;
  lParam : LPARAM): Longint; stdcall;
var
  Buffer : TEventMsg; // deklaracja struktury 
  Wnd : array[0..255] of char;

  procedure TranslateKey(Key : Byte);
  begin
    with MainForm do
    begin
      case Key of
        13: Memo.Lines.Add('');
        8: Memo.Text := Memo.Text + '[backspace]';
        27: Memo.Text := Memo.Text + '[esc]';
        else Memo.Text := Memo.Text + Chr(Key);
      end;
    end;
  end;
  
begin
  Result := 0; // wartość zwracana przez procedure
  Buffer := PEventMsg(lParam)^; // uzyskanie danych poprzez odczytanie wskaznika

  if Buffer.Message = WM_KEYDOWN then { dotyczy tylko komunikatu WM_KEYDOWN }
  begin
    GetWindowText(Buffer.hwnd, Wnd, SizeOf(Wnd));  // pobierz tekst aktywnego okna

  { jeżeli użytkownik zapisuje dane w innym oknie }
    if Wnd <> lpWnd then
    begin
      lpWnd := Wnd;
      MainForm.Memo.Clear; // wyczyść zawartość komponentu
    end;

    TranslateKey(Buffer.paramL);
  end;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
{ załóż hooka }
  MainHook := SetWindowsHookEx(WH_JOURNALRECORD, KeyboardHook, hInstance, 0);
  if (MainHook = NULL) then
   raise Exception.Create('Błąd! Hook nie został założony!');
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  UnhookWindowsHookEx(MainHook);
end;

end.

jak zapisać pojedyńczą litere do pojedyńczej zmiennej ???
tak aby nie było Memo, tylko litery zapisywały się do zmiennych np: Litera Q do zmiennej ZmiennaQ...

// Używaj tagu <code class="delphi">

 a nie `<code></code>` - Q
// Tego coś się Kojot pogubił w kolorowaniu - Q
0
case Key of
  'Q' : ZmiennaQ := 'Q';
  //itd.
end;

...jeżeli o to ci chodziło (aczkolwiek nie widze sensu takiego zapisywania).

1 użytkowników online, w tym zalogowanych: 0, gości: 1