Thema: Delphi Registry Aktualisieren

Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
947 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Registry Aktualisieren

  Alt 31. Jan 2004, 00:10
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?
  Mit Zitat antworten Zitat