Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Registry Aktualisieren (https://www.delphipraxis.net/15559-registry-aktualisieren.html)

Alter Mann 30. Jan 2004 23:10


Registry Aktualisieren
 
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?

Leuselator 30. Jan 2004 23:32

Re: Registry Aktualisieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
kann Dir in der Sache leider nicht helfen, aber ich muß Dir einfach zeigen, wie ich das Problem für mich gelöst habe - vielleicht muntert es Dich wenigstens ein wenig auf... :-)
Gruß

TStringlist 31. Jan 2004 03:18

Re: Registry Aktualisieren
 
@Alter Mann

Der Hook jedenfalls ist eigentlich in Ordnung (habe ihn mal kurz getestet). Die VK_LWIN, VK_RWIN u. VK_APPS -Codes laufen durch die KeyboardProc hindurch und werden dort auch identifiziert ...iCode ist auch nicht HC_NOREMOVE ...bleibt imo also irgendwie nur die Annahme übrig, dass wahrscheinlich paralell zu allem im Falle dieser Keys noch eine zusätzliche Information ans System mit abgeschickt wird, das dann einfach unabhängig zur normalen Key-Verarbeitung diese Menues trotzdem immer auffährt.

@Leuselator

*loool*

(...also eine/deine Problemlösung hatte mich dann jetzt aber doch schon mal etwas interessiert *g*).


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz