Ich habe ein Problem. Und zwar habe ich einen Service erstellt der die
API SetWindowsHookEx zum Sperren der Tasten aufrufen soll. Und zwar über folgenden Code:
Code:
function MyTaskKeyHookLL(nCode: Integer; wp: WPARAM; lp: LPARAM): integer;
var
pkh: PKBDLLHOOKSTRUCT;
bCtrlKeyDown: BOOL;
begin
pkh:=PKBDLLHOOKSTRUCT(lp);
if nCode=HC_ACTION then
begin
bCtrlKeyDown := GetAsyncKeyState(VK_CONTROL) shr ((sizeof(SHORT) * 8) - 1)<>0;
// Ctrl+Esc
if ((pkh^.vkCode=VK_ESCAPE) and bCtrlKeyDown) or
// Alt+TAB
((pkh^.vkCode=VK_TAB) and (pkh^.flags and LLKHF_ALTDOWN=LLKHF_ALTDOWN)) or
// Alt+Esc
((pkh^.vkCode=VK_ESCAPE) and (pkh^.flags and LLKHF_ALTDOWN=LLKHF_ALTDOWN)) or
// Start Menu
((pkh^.vkCode=VK_LWIN) or (pkh^.vkCode=VK_RWIN)) then
begin
result:=1;
exit;
end;
end;
result:=CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
end;
function DisableKeys(bDisable: bool): bool;
begin
if bDisable then
begin
if g_hHookKbdLL=0 then
g_hHookKbdLL := SetWindowsHookEx(WH_KEYBOARD_LL, @MyTaskKeyHookLL, HInstance, 0);
end
else
if g_hHookKbdLL<>0 then
begin
UnhookWindowsHookEx(g_hHookKbdLL);
g_hHookKbdLL := 0;
end;
result:=g_hHookKbdLL<>0;
end;
Das Problem ist, dass die Tasten nicht gesperrt werden. Dieser Fehler tritt allerdings nur bei Services auf, bei normalen Programmen nicht. Ich habe außerdem versucht das Ding in eine
DLL zu packen und vom aus aufzurufen, das funktioniert auch nicht!
Wie kann ich die Windows-Tasten in einem Service sperren?
Grüße