delphi程式熱鍵

2021-09-06 20:24:27 字數 1880 閱讀 2017

要定義乙個全域性熱鍵,通常有三個步驟:     

1、定義windows的訊息wm_hotkey的hook鏈,即

procedure myshortcut(var message:tmessage);message wm_hotkey;         

2、向windows加入乙個全域性原子hotkey:globaladdatom(』hotkey』),   並保留其控制代碼          

3、向windows登記熱鍵鏈:   registerhotkey   函式原形如下     

bool registerhotkey(     

hwnd   hwnd,        //   連線熱鍵的視窗控制代碼     

int   id,            //   全域性原子控制代碼    

uint   fsmodifiers,       //   熱鍵修飾標誌     

uint   vk           //   虛擬鍵盤碼

);     

這裡,fsmodifiers是指虛擬鍵盤碼vk結合何種鍵一起生成wm_hotkey的訊息,它是下列三值的組合:          

mod_alt      //   alt   鍵必須按下

mod_control   //   ctrl   鍵必須按下    

mod_shift     //   shift   鍵必須按下    

有了這些準備,你就可以定義自己喜歡的方式了。

下面是乙個範例,當ctrl+q在任何時候被按下時,都會打出「你好,crtl+q被按下」的資訊。     

[delphi]view plain

copy

print?

type       

tform1   =   class(tform)       

procedure   formcreate(sender:   tobject);       

procedure   formdestroy(sender:   tobject);       

protected       

procedure   myshortcut(var   message:   tmessage);   message wm_hotkey;       

private       

public       

end;       

var       

form1:   tform1;       

id:integer;       

implementation       

procedure   tform1.myshortcut(var   message:   tmessage);       

begin       

showmessage(』你好,crtl   +   q   被按下』);       

end;       

procedure   tform1.formcreate(sender: tobject);     

begin       

id:=globaladdatom(』hotkey』);       

registerhotkey(handle,id,mod_control,88);     // 88是q的ascii值   

end;     

退出時候取消熱鍵定義:     

procedure   tform1.formdestroy(sender: tobject);       

begin       

unregisterhotkey(handle,id);         

end;

delphi熱鍵設定的方法

問題是你要全域性的.還是要系統級的,還是要區域性的。如果是全域性和區域性的,那麼在主窗體上 或其他控制項上 form 的keypress等屬性上監控就行了.如果是系統級的,那麼需要api了.簡單 用到3個api函式 bool registerhotkey hwnd hwnd,響應該熱鍵的視窗控制代碼...

Delphi 全域性熱鍵註冊 使用

rad studio 10.2.3 測試 全域性變數 var mhotkey01,mhotkey02 integer 1 在程式建立的時候或者窗體顯示的時候註冊熱鍵 begin 原子 mhotkey01 mhotkey01 globaladdatom xiaoyin hotkey ctrl f1 c...

Delphi全域性熱鍵的註冊

1.在窗啟動時建立atom aatom atom 定義在private中 1 if findatom zwxhotkey 0 then 2begin 3 aatom globaladdatom zwxhotkey 4end 5 if registerhotkey handle,aatom,mod a...