熱鍵的註冊與攔截無法發生作用 |
缺席
|
pcernet
初階會員 ![]() ![]() 發表:69 回覆:113 積分:41 註冊:2002-11-29 發送簡訊給我 |
各位先進,下面這一段熱鍵的設定與攔截程序,小弟研究了幾天,也認真的扒了不少文章,還是找不出問題, 完全沒有作用,不知您是否能看出問題所在,謝謝! <textarea class="delphi" rows="10" cols="60" name="code">unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
MyCoCoHotkeyid1, MyCoCoHotkeyid2, MyCoCoHotkeyid3, MyCoCoHotkeyid4:integer;
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
// procedure HotKeyDown(var Msg:Tmessage);message WM_HOTKEY;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if Msg.HotKey = MyCoCoHotkeyid1 then
ShowMessage('Ctrl F10 pressed !');
if Msg.HotKey = MyCoCoHotkeyid2 then
ShowMessage('Ctrl Alt R pressed !');
if Msg.HotKey = MyCoCoHotkeyid3 then
ShowMessage('Win F4 pressed !');
if Msg.HotKey = MyCoCoHotkeyid4 then
ShowMessage('Print Screen pressed !');
end;
//procedure TForm1.HotKeyDown(var Msg: Tmessage);
//begin
//if (Msg.LparamLo=MOD_CONTROL) AND (Msg.LParamHi=VK_F10) then showmessage('Ctrl-F10!');
//if (Msg.LParamLo=MOD_CONTROL MOD_Alt) and (Msg.LParamHi=Ord('R')) then ShowMessage('Ctrl-Alt-R')
//end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Register Hotkey Ctrl F10
MyCoCoHotkeyid1 := GlobalAddAtom('MyCoCoHotkey1')- $C000;
RegisterHotKey(Handle, MyCoCoHotkeyid1, MOD_CONTROL, VK_F10);
// Register Hotkey Ctrl Alt R
MyCoCoHotkeyid2 := GlobalAddAtom('MyCoCoHotkey2')- $C000;
RegisterHotKey(Handle, MyCoCoHotkeyid2,MOD_CONTROL MOD_Alt, Ord('R'));
// Register Hotkey Win F4
MyCoCoHotkeyid3 := GlobalAddAtom('MyCoCoHotkey3')- $C000;
RegisterHotKey(Handle, MyCoCoHotkeyid3, MOD_WIN, VK_F4);
// Globally trap the Windows system key "PrintScreen"
MyCoCoHotkeyid4 := GlobalAddAtom('MyCoCoHotkey4')- $C000;
RegisterHotKey(Handle, MyCoCoHotkeyid4, 0, VK_SNAPSHOT);
end;
// Unregister the Hotkeys
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Handle, MyCoCoHotkeyid1);
GlobalDeleteAtom(MyCoCoHotkeyid1);
UnRegisterHotKey(Handle, MyCoCoHotkeyid2);
GlobalDeleteAtom(MyCoCoHotkeyid2);
UnRegisterHotKey(Handle, MyCoCoHotkeyid3);
GlobalDeleteAtom(MyCoCoHotkeyid3);
UnRegisterHotKey(Handle, MyCoCoHotkeyid4);
GlobalDeleteAtom(MyCoCoHotkeyid4);
end;
end.</textarea>
|
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
pcernet
初階會員 ![]() ![]() 發表:69 回覆:113 積分:41 註冊:2002-11-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |