按下Ctrl+K+L键如何在窗口中捕捉?

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormKeyUp(Sender: TObject; var Key: Word;
          Shift: TShiftState);
        procedure FormKeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    var
      IsKDown,IsLDown:Boolean;{$R *.dfm}procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if ssCtrl in shift then
      begin
        if IsKDown and IsLDown then
        begin
          showmessage('KeyUP Event For "Ctrl + k +l"');
        end;
      end;
      if (chr(key)='k') or (chr(key)='K') then IsKDown:=false;
      if (Chr(key)='l') or (chr(key)='L') then IsLDown:=false;;
    end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (chr(key)='k') or (chr(key)='K') then IsKDown:=True;
      if (Chr(key)='l') or (chr(key)='L') then IsLDown:=True;
    end;end.
      

  2.   

    我想不出更好的办法了..召唤更好的办法ing
      

  3.   

    If ((GetKeyState(VK_CONTROL) AND 128)=128) and((GetKeyState(VK_F5) AND 128)=128) and((GetKeyState(ord('8')) AND 128)=128)thenShowMessage('CTRL+F5+8 Pressed');
      

  4.   

    private
     procedure WMHOTKEY(var msg: TWMHOTKEY); message WM_HOTKEY;
    定义一个系统原子:
    var
     atom: word;//系统原子procedure TYourForm.OnCreate(......);
    begin
     atom:=GlobalAddAtom('MINIZHUXIANCHUN');//参数为任意PCHAR字符串.
     RegisterHotKey(Self.Handle,atom,MOD_ALT+MOD_SHIFT,VkKeyScan('q'));
    end;procedure TYourForm.WMHOTKEY(var msg: TWMHOTKEY);
    begin
     写你想要响应的代码。
    end;