![]() |
Ändern der Einstellung "Dialog zu Bestätigung anzeigen&
hi
Über einen Rechtsklick auf den Papierkorb auf dem Dekstop --> Eigenschaften kann man die Option "Dialog zur Bestätigung des Löschvorgangs anzeigen" deaktivieren oder aktivieren. Mein Ziel ist es jetzt, diese Option in meine Delphi Projekt zu übernehmen. Bei einer Änderung dieser Option wird folgender Registryeintrag geändert: HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\ShellState Bei dem Eintrag ShellState handelt sich um einen REG_BINARY Wert. Da in diesem Wert mehrere Optionen abgespeichert werden, hole ich jeweils den ganzen Wert, ändere die fünfte Stelle von #23 auf #27(dort befindet sich die Änderung für den Löschdialog) und speichere den Wert wieder ab. Dies funktioniert auch wunderbar, nur beim testen auf verschiedenen Computer musste ich feststellen, das sich nicht immer nur der Wert an der fünften Stelle ändert. Zudem sind die Werte nicht immer 23 und 27. Ich vermute nun, das es sicher eine WINDOWS API Funktion gibt oder eine andere Möglichkeit um dies zu realisieren, leider habe ich noch nichts gefunden und hoffe ihr habt mir eine Idee. (Der API Befehl müsste nur auf Windows 2k/XP funktionieren.) cu Sliver |
Re: Ändern der Einstellung "Dialog zu Bestätigung anzei
Hi,
diese Einstellung kann zwar über ![]() Zitat:
![]() ![]() Gruß Stephan :dance: |
Re: Ändern der Einstellung "Dialog zu Bestätigung anzei
Moin Zusammen,
die gesuchte Funktion heisst ![]() (ob GetSet nun weniger "stupid" klingt als Set alleine sei jetzt mal dahingestellt ;-) ) |
Re: Ändern der Einstellung "Dialog zu Bestätigung anzei
Nach dieser Homepage sollte doch die Funktion SHGetSetSettings in der Shlobj Uses vorhanden sein. Leider finde ich dort nur die Funktion SHGetSettings.
Was ich auch noch komisch finde, ist, wenn ich SHGetSettings aufrufe und danach z. B. einen Dialog öffne, erscheint folgende Fehlermeldung
Code:
Wenn ich jetzt aber nur den Aufruf SHGetSettings ausklammere läuft alles normal.
---------------------------
Benachrichtigung über Debugger-Problem --------------------------- In Projekt Project1.exe trat ein Problem mit folgender Meldung auf: 'Zugriffsverletzung bei 0x00432f2c: Lesen von Adresse 0x00120000'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- |
Re: Ändern der Einstellung "Dialog zu Bestätigung anzei
in dem REG_BINARY wert wird alles immer bitweise (und nicht byteweise) gespeichert. du musst also genau wissen, welches bit für diese funktion verantwortlich ist und dieses dann entweder setzen oder nicht setzen...
|
Re: Ändern der Einstellung "Dialog zu Bestätigung anzei
Delphi-Quellcode:
Mit dieser Funktion lese ich den Wert in einen String ein. Nach deiner Erläuterung wird hier der REG_BINARY Wert Byteweise eingelesen, was sicher gut sein kann. Wie ist es aber dann möglich, den Wert in eine Variable Bitweise einzulesen?
function regReadBinary(RootKey:Cardinal;OpenKey,ValueName:String;CanCreate:Boolean=False):String;
var Reg:TRegistry; s:String; i:Integer; begin Reg:=TRegistry.Create; try Reg.RootKey:=RootKey; Reg.OpenKey(OpenKey,CanCreate); i:=Reg.GetDataSize(ValueName); SetLength(s,i); Reg.ReadBinaryData(ValueName,s[1],i); finally Reg.Free; end; Result:=s; end; |
Re: Ändern der Einstellung "Dialog zu Bestätigung anzei
Moin Sliver,
Zitat:
ggf. selber importieren. Zitat:
|
Re: Ändern der Einstellung "Dialog zu Bestätigung anzei
Hab endlich wieder Zeit gefunden, mich diesem Thema zu widmen. Hab auch eine Lösung gefunden, die geht wie folgt.
Ich lese die Binäre Einträge wie oben in Strings ein. Danach nehm ich den ordinalen Wert jedes Zeichen und rechne ihn ins Binärsystem um. Danach kann ich das Bit setzen das ich will und wieder zurück speichern in die Registry. Funktioniert einwandfrei, aber ist ein bisschen umständlich und es gibt sichere bessere Lösungen. |
Re: Ändern der Einstellung "Dialog zu Bestätigung anzei
Moin Sliver,
es empfiehlt sich allerdings meist den dokumentierten Weg zu gehen, da Du nicht wissen kannst, ob sich der Speicherort der Einstellung nicht ändert. Schon mit einem Service Pack könnte das nämlich der Fall sein. |
Re: Ändern der Einstellung "Dialog zu Bestätigung anzei
Bis jetzt hat es zumind. noch keine Veränderungen zwischen Windows 2000 ohne Service Pack bis zu WinXP SP2 bei den Einträgen gegeben, die ich benötigte. Aber ich werde die Dinge schon noch umprogrogrammieren, wenn ich dazu Zeit hab und wenn es dann auch endlich funktioniert. Ich hoffe in Delphi 2005 ist dann die ShlObj Version 5.0 drin, als bis jetzt nur die Version 4.71. Dann sollte dann auch die Funktion SHGetSetStettings implementiert sein.
Gruss Sliver |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz