delphi如何实现像金山词霸一样在程序最小化时按某个热键呼出主窗体(50)

  • 主题发起人 主题发起人 qqingmu
  • 开始时间 开始时间
Q

qqingmu

Unregistered / Unconfirmed
GUEST, unregistred user!
如题.谢谢
 
定义全局热键啊!网上有很多的
 
窗体都隐藏了没用吧.
 
好象是调API,将热键定义到系统中。
 
定义操作系统级别的热键。自己写需要用到WindowsAPI,或者用第三方组件(例如:amhotkey)。
 
键盘钩子也可以吧,好像《Delphi 下深入Windows 核心编程.pdf》有详细描述,网上下一本看看就会了。
 
全局热键 谷歌一下 没必要浪费怎么多分数
 
第一步:注册热键const StartHotKeyID = $BF00; StopHotKeyID = $BF01; HotKeyList:array[0..11]of DWORD=( VK_F1,VK_F2,VK_F3,VK_F4,VK_F5,VK_F6, VK_F7,VK_F8,VK_F9,VK_F10,VK_F11,VK_F12 ); HotKeyListStr:array[0..11]of String= ( 'F1','F2','F3','F4','F5','F6', 'F7','F8','F9','F10','F11','F12' ); procedure TForm1.FormCreate(Sender: TObject);begin if not RegisterHotKey(handle,StartHotKeyID,MOD_CONTROL,HotKeyList[cbStart.ItemIndex]) then ShowMessage('注册启动热键Ctrl+'+HotKeyListStr[cbStart.ItemIndex]+'失败,程序运行后请重新设置!'); if not RegisterHotKey(handle,StopHotKeyID,MOD_CONTROL,HotKeyList[cbStop.ItemIndex]) then ShowMessage('注册停止热键Ctrl+'+HotKeyListStr[cbStop.ItemIndex]+'失败,程序运行后请重新设置!'); end;第二步:实现热键处理,你可以在此处理代码中改为RESTORE主程序窗口。 procedure WMHOTKEY( Var msg:TwmHotKey );message WM_HOTKEY;procedure TForm1.WMHOTKEY( Var msg:TwmHotKey );begin case msg.HotKey of StartHotKeyID: begin if cbinterval.ItemIndex < 10 then tmrTriger.Interval :=strtoint(cbInterval.text) else tmrTriger.Interval :=500+random(501); tmrTriger.Enabled :=True; MEMO1.Lines.Add('开始'); caption:='鼠标点击模拟器 - [模拟点击已启动]'; abfTrayIcon1.Hint:=Caption; DisplayMsg('鼠标模拟点击已启动!'); end; StopHotKeyID: begin tmrTriger.Enabled :=False; MEMO1.Lines.Add('停止'); caption:='鼠标点击模拟器 - [模拟点击已停止]'; abfTrayIcon1.Hint:=Caption; DisplayMsg('鼠标模拟点击已停止!'); end; end;end;第三步:取消注册的热键procedure TForm1.FormDestroy(Sender: TObject);begin UnregisterHotKey(handle,StartHotKeyID); UnregisterHotKey(handle,StopHotKeyID);end;
 
接受答案了.
 
后退
顶部