导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
sy0116 (sy0116)
★☆☆☆☆
-
盒子活跃会员
2004/1/12 17:45:51
标题:
加入我的收藏
楼主:
我用以下代码实现热键功能,但为什么老是在 procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;这一行上出错呢,这代码我是在网上找的,有什么错误吗?那位高手还有更好的办法 unit Unit1; interface uses Windows, Messages, Forms, Dialogs, Classes, Controls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private {热键标识ID} id: Integer; procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; { Privat-Declarations} public { Public-Declarations} end; var Form1 : TForm1; implementation const RSP_SIMPLE_SERVICE=1; function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external ’KERNEL32.DLL’; {$R *.DFM} {捕获热键消息} procedure TForm1.WMHotKey (var Msg : TWMHotKey); begin if msg.HotKey = id then ShowMessage(’Ctrl+Alt+R键被按下!’); form1.Visible :=true; end; procedure TForm1.FormCreate(Sender: TObject); Const {ALT、CTRL和R键的虚拟键值} MOD_ALT = 1; MOD_CONTROL = 2; VK_R = 82; begin {首先判断程序是否已经运行} if GlobalFindAtom(’MyHotkey’) = 0 then begin {注册全局热键Ctrl + Alt + R} id:=GlobalAddAtom(’MyHotkey’); RegisterHotKey(handle,id,MOD_CONTROL+MOD_Alt,VK_R); end else halt; end;
----------------------------------------------
-
作者:
sy0116 (sy0116)
★☆☆☆☆
-
盒子活跃会员
2004/1/12 18:02:35
2楼:
procedure ONHotkey(var message:Tmessage);message WM_HOTKEY; 这一行变红,提示 [Error] Hidepro.pas(19): Unsatisfied forward or external declaration: 'TForm1.ONHotkey' [Fatal Error] Hidepro1.dpr(5): Could not compile used unit 'Hidepro.pas'
----------------------------------------------
-
作者:
bios (阿贡)
★☆☆☆☆
-
盒子中级会员
2004/1/12 18:09:10
3楼:
--
----------------------------------------------
作者:
sy0116 (sy0116)
★☆☆☆☆
-
盒子活跃会员
2004/1/12 18:33:32
4楼:
可是这样的热键在运行游戏时没用阿,我运行星际争霸时按热键没反应,但不运行游戏可以,怎样才能让运行游戏时也可以呢
----------------------------------------------
-
作者:
bios (阿贡)
★☆☆☆☆
-
盒子中级会员
2004/1/12 18:36:22
5楼:
星际争霸 总在最前面,要在 消息映射中 写 程序 把 当前进程 强行 切换到 偶们的FORM窗口 具体 偶还没做过! 这种 大型游戏 占满了内存 和显存 使的 偶们的程序 很难被 操作系统 响应!
----------------------------------------------
作者:
sy0116 (sy0116)
★☆☆☆☆
-
盒子活跃会员
2004/1/13 19:40:32
6楼:
thanks
----------------------------------------------
-