【发布时间】:2012-01-27 16:25:57
【问题描述】:
您好,我有以下代码:
var
KeyHook: HHOOK;
function KeyHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
type
PKBDLLHOOKSTRUCT = ^TKBDLLHOOKSTRUCT;
TKBDLLHOOKSTRUCT = packed record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: DWORD;
end;
const
LLKHF_ALTDOWN = $20;
var
pkbhs: PKBDLLHOOKSTRUCT;
begin
pkbhs := PKBDLLHOOKSTRUCT(lParam);
if nCode = HC_ACTION then
begin
if (pkbhs^.vkCode = VK_ESCAPE) and WordBool(GetAsyncKeyState(VK_CONTROL) and $8000) then
begin
Result := 1;
Exit;
end;
end;
Result := CallNextHookEx(KeyHook, nCode, wParam, lParam);
end;
initialization
KeyHook := SetWindowsHookEx(WH_KEYBOARD_LL, @KeyHookProc, 0{HInstance}, 0);
if KeyHook = 0 then
RaiseLastOSError;
当我将它作为流程启动时,这种好方法效果很好。
但是当我尝试让它在服务下工作时它不起作用。
不起作用 = 不检测击键。
我做错了什么?
谢谢!
【问题讨论】:
-
您应该编辑您的问题以删除不应该存在的部分。如果您使用发布问题的同一帐户登录,则可以这样做;只需单击问题下方的
edit链接。您还应该解释“它不起作用”的含义,因为如果没有更多信息,我们将无法提供帮助。 “它不起作用”可以表示从“它引发异常”到“没有任何反应”到“我的电脑爆炸”。更具体可以提高您获得答案的机会。 :) -
看来你正在尝试一些不可能的事情:stackoverflow.com/questions/5815424/…