大佬教程收集整理的这篇文章主要介绍了delphi – 如何设置热键(“win Key”)组合来调用应用程序?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,您需要一个在后台运行的程序,并监听并响应击键.像这样:
program Project1; uses Windows,messages,SHellAPI; var W: HWND; M: MSG; const WM_SETHOTKEY = WM_APP + 1; WM_UNSETHOTKEY = WM_APP + 2; AppName = 'Rejbrand Hot Key Listener'; const Filenames: arraY[0..1] of String = ('notepad.exe','pbrush.exe'); begin if FindWindow('STATIC',PChar(AppName)) <> 0 then Exit; W := CreateWindow('STATIC',PChar(AppName),100,HWND_messaGE,HInstance,nil); while Getmessage(M,W,0) do case m.message of WM_HOTKEY: SHellExecute(0,nil,PChar(Filenames[m.wParam]),SW_SHOWNORMAL); WM_SETHOTKEY: RegisterHotKey(W,m.wParam,m.lParam shr 16,m.lParam and $FFFF); WM_UNSETHOTKEY: UnregisterHotKey(W,m.wParam); end; end.
(要创建此程序,请选择New / VCL Forms Application,然后从项目中删除主窗体.然后选择Project / View source并删除Application.Initialize废话.程序应如上所示.)
上面的程序监听注册新Windows热键的消息WM_SETHOTKEY,删除以前注册的热键的WM_UNSETHOTKEY,以及最终用户激活注册的热键时由Windows发送的WM_HOTKEY.前两条消息由我在此应用程序中定义.
要注册热键,请将消息WM_SETHOTKEY发送到窗口W.消息的wParam应该是要启动的程序的索引(在Filenames数组中). lParam的格式应为$MMMMKKK,其中$MMMM是修饰符(Ctrl,Alt,Shift),$KKKK是热键的虚拟键代码.要删除热键,请将带有程序索引的WM_UNSETHOTKEY消息作为wParam发送到W.
样品用法
从任何应用程序,您都可以(假设Project1.exe在后台运行)
const WM_SETHOTKEY = WM_APP + 1; WM_UNSETHOTKEY = WM_APP + 2; const MODIFIER_ALT = MOD_ALT shl 16; MODIFIER_CTRL = MOD_CONTROL shl 16; MODIFIER_SHIFT = MOD_SHIFT shl 16; procedure TForm1.RegisterHotkeys; var w: HWND; begin w := FindWindow('STATIC','Rejbrand Hot Key Listener'); Postmessage(w,WM_UNSETHOTKEY,MODIFIER_CTRL + MODIFIER_ALT + ord('N')); Postmessage(w,WM_SETHOTKEY,1,MODIFIER_CTRL + MODIFIER_ALT + ord('P')); end;
现在,即使您关闭此新程序,notepad.exe和pbrush.exe也将分别在Ctrl Alt N和Ctrl Alt P上启动.
还有一些讨论
注意,编译时,Project1.exe只有20 kB小!对于Delphi中的应用程序来说这很小!
要取消注册以前注册的热键,请执行
Postmessage(w,N,0);
其中N,在这个例子中,对于记事本是= 0而对于pbrush是= 1.
但是,当然,如果退出project1.exe,Windows将取消注册所有热键.
你可能想做
procedure TForm1.RegisterHotkeys; var w: HWND; begin w := FindWindow('STATIC','Rejbrand Hot Key Listener'); if w = 0 then messageBox('Error: Rejbrand Hot Key Listener not running!'); Postmessage(w,MODIFIER_CTRL + MODIFIER_ALT + ord('P')); end;
如果找不到窗口,甚至可以启动project1.exe.
以上是大佬教程为你收集整理的delphi – 如何设置热键(“win Key”)组合来调用应用程序?全部内容,希望文章能够帮你解决delphi – 如何设置热键(“win Key”)组合来调用应用程序?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。