Hallo,
Ich habe folgendes Problem:
Ich trage beim Start eines Prog's Werte in die Registry ein und möchte, dass alle
laufenden Programme die Änderungen "mitbekommen". Dazu nutze ich folgenden 3-Zeiler:
Delphi-Quellcode:
procedure BroadcastChanges;
var
success: DWORD;
begin
SendMessageTimeout(HWND_BROADCAST,
WM_SETTINGCHANGE,
CDS_UPDATEREGISTRY,
0,
SMTO_ABORTIFHUNG,
1000,
success);
end;
Das Problem steckt im Detail: Änderungen bezüglich des Wertes: "NoWinKeys" werden
erst nach dem Abmelden und erneuten Anmelden akzeptiert; Ich möchte aber während
der Zeit in der mein Prog im Userkontext läuft die 'WinKeys' abschalten.
Auch mit dem Versuch ein KeyboardHook :
Delphi-Quellcode:
VAR
oldHook: HHook;
FUNCTION KbHook(iCode: Integer; wParam: Word; lParam: LongInt): LongInt; StdCall;
BEGIN
if iCode < 0 THEN
BEGIN
Result := CallNextHookEx(oldHook, iCode, wParam, lParam);
Exit;
END;
IF (wParam = VK_LWIN) or (wParam = VK_RWIN) or (wParam = VK_APPS) THEN Result := 1
ELSE Result := CallNextHookEx(oldHook, iCode, wParam, lParam);
END;
FUNCTION DisableWinKeys: Boolean;
BEGIN
oldHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, hInstance, 0);
Result := oldHook <> 0;
END;
PROCEDURE EnableWinKeys;
BEGIN
IF oldHook <> 0 THEN
BEGIN
UnhookWindowshookEx(oldHook);
oldHook := 0;
END;
END;
zu installieren lauf ich gegen die Wand.
Ziel der ganzen Übung ist es, das mittels "Win(L or R) + E" der Explorer nicht
aufgerufen werden kann.
Wer hat also eine Idee oder Lösung?