麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

按下某組鍵(HotKey)便執行某程式

2019-11-18 17:52:55
字體:
來源:轉載
供稿:網友
在Dos的年代,我們常會以攔截中斷向量的方式,做到按下某個hotkey而自動執行某個程式,在Window呢,也可以,不過它是用RegisterHotkeyAPI來完成。

使用RegisterHotkey的概念是,它會定義一組按鍵的組合,當使用者不管在哪個程式之中,按下Window有注冊的HotKey時,OS會傳送WM_HOTKEY的訊息給待接收該訊息的Window,而該Window收到WM_HOTKEY時,便可知道有本身Thread所定義的HotKey被按下,於是可以從wParam,lParam來得知是哪一組HotKey被按下。

RegisterHotKey(
ByValhwndAsLong,//接收Hotkey的Window
ByValidHotKeyasLong,//identifierofhotkey,range0x0000through0xBFFF
ByValModifiersAsLong,//定義altshiftcontrol等的組合
ByValuVirtKeyAsLong//virtual-keycode
)

WM_HOTKEY叁數的定義
idHotKey=wParam;//identifierofhotkey
Modifiers=(UINT)LOWord(lParam);//key-modifierflags
uVirtKey=(UINT)HIWORD(lParam);//virtual-keycode

所以了,除了設定RegisterHotkey外,另要使用SubClassing的技巧才會得知HotKey被按下;最後,程式結束前要使用UnRegisterHotkey將HotKey的定義取消掉。

以下程式功能是:不管在哪個程式中,只要按下ALT-SHIFT-G便執行NotePad。
'以下在.BasOptionExplicit

DeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"_
(ByValhwndAsLong,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong
DeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"_
(ByValhwndAsLong,ByValnIndexAsLong)AsLong
DeclareFunctionCallWindowModifiers=MOD_ALT MOD_SHIFT
uVirtKey=vbKeyG
ret=RegisterHotKey(Me.hwnd,idHotKey,Modifiers,uVirtKey)
EndSub

PrivateSubForm_Unload(CancelAsInteger)
DimretAsLong
'取消Message的截取,而使之又只送往原來的WindowProcedure
ret=SetWindowLong(Me.hwnd,GWL_WNDPROC,preWinProc)
CallUnregisterHotKey(Me.hwnd,uVirtKey)
EndSub->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品成人亚洲一区二区 | 黄色大片网 | 亚州视频在线 | 亚洲精华液久久含羞草 | 色妞欧美 | 一级免费a | 久久国产精品久久久久久 | 久久不射电影网 | 日韩区在线| 视频一区 在线 | 失禁高潮抽搐喷水h | 爱操影视| 欧美在线观看禁18 | 一级做受毛片免费大片 | 高清一区二区在线观看 | 免费的性生活视频 | 久久精品网 | 国产精品久久久久久久四虎电影 | 成人勉费视频 | 成人免费观看毛片 | 亚洲小视频在线观看,com | 成人不卡 | 在线播放亚洲视频 | 免费人成年短视频在线观看网站 | 国产精品免费久久久久久 | 亚洲第一成人av | 国产日韩欧美一区 | 在线观看精品视频 | 99riav国产在线观看 | 99麻豆久久久国产精品免费 | 少妇一级淫片免费放播放 | 午夜热门福利 | 黄网站在线免费 | 黄色大片网站在线观看 | 久久精品亚洲国产奇米99 | 男女生羞羞视频网站在线观看 | 国产小视频一区 | 欧美特一级 | 欧美性猛交xxxxx按摩国内 | 国产精品自在线拍 | 中国产一级毛片 |