分享

delphi热键调用

 美美花花 2011-04-11
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Edit1: TEdit;
    Label1: TLabel;
    Label3: TLabel;
    Button2: TButton;
    Label2: TLabel;
    Label4: TLabel;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
     hotkeyid     :integer;
    procedure   WMhotkeyhandle(var   msg:Tmessage);
    message   wm_hotkey;   //响应敏感键按键消息
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
 
implementation
{$R *.dfm}
procedure   TForm1.Wmhotkeyhandle
(var   msg:Tmessage);
          begin
              if   (msg.LParamHi=$41)   and
(msg.lparamLo=MOD_CONTROL   or   mod_Alt)   then  
              begin
                  msg.Result:=1;   //该消息已经处理
                  Form1.Show; 
//把窗口现形
              end;
end;
procedure TForm1.Button1Click(Sender: TObject) ;
var  i:integer;
begin
Timer1.Enabled:=true;
timer1.Interval:=StrToInt(Edit1.Text)*3000;
Form1.Hide;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  keybd_event(18, MapVirtualKey(18, 0 ), 0 , 0 ); //alt
  keybd_event(9, MapVirtualKey(9, 0 ), 0 , 0 ); //tab
  keybd_event(9, MapVirtualKey(9, 0 ), KEYEVENTF_KEYUP , 0  );
  keybd_event(18, MapVirtualKey(18, 0 ), KEYEVENTF_KEYUP , 0 );
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
if( MessageBox(form1.Handle,'您确定要退出吗?','系统提示',MB_OKCANCEL)=IDOK)then
begin
Form1.Close;
end
else
begin
  Timer1.Enabled:=true;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption:='窗口定时切换器'  ;
 hotkeyid:=GlobalAddAtom(pchar
('UserDefineHotKey'))-$C000;
        //减去$C000是为了保证取值范围的限制
 registerhotkey(handle,hotkeyid,
 MOD_CONTROL or   mod_Alt  ,$41);
        //敏感键为ctrl+Alt+A
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
MessageBox(form1.Handle,'!哈哈','系统提示',MB_OKCANCEL) ;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
 Timer1.Enabled:=false;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
unregisterhotkey(handle,hotkeyid);
      DeleteAtom(HotKeyID);
end;
end.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多