![]() |
Exakter Registry Pfad auf Button Klick öffnen??
Hallo Leute,
ich hätte eine Frage, wie kann ich einen Registry Pfad exakt öffnen, ich habe ein paar spärliche versuche dieser Art versucht >>>
Delphi-Quellcode:
Aber hierbei öffnet sich lediglich die Registry ohne den exakten Pfadprocedure TForm1.Button1Click(Sender: TObject); Var reg:TRegistry; begin ShellExecute (Handle, 'open', 'c:\Windows\Regedit.exe', nil, nil, SW_SHOWNORMAL); begin reg:=TRegistry.Create; reg.RootKey:=HKEY_Local_Machine; reg.OpenKey ('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\AppPaths', true); end; end; bzw. ohne die exakte Pfadangabe. [edit=Luckie]Delphi-Tags hinzugefügt Mfg, Luckie[/edit] |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Shellexecute, regedit.exe und tRegistry haben nichts gemeinsam !!!
(ausser das RegEdit und tRegistry auf ein und dieselbe Datei zugreifen). grez msch |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Wie sollte es auch funktionieren?
Nach dem du mit Shellexecute den Editor geöffnet hast ist doch schon alles vorbei. Desweiteren wie soll der Editor mit dem TRegistry Objekt von Delphi was anfangen? Wenn überhaupt müßtest du den Pfad als Parameter bei Shellexecute mit übergeben. Alledings weiß ich nicht, ob man der Regedit.exe überhaupt Parameter übergeben kann, bzw. wenn ja, wie diese auszusehen haben. meine Versuche Regedit.exe mit Parametern zu öffnen, sind alle fehlgeschlagen. |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Hallo und herzlich Willkommen im Forum!
Delphi-Quellcode:
Hiermit liest man den Pfad der "NameMeinerAnwendung", welche Du da noch hast, ist Dein Problem und musst Du selbst im Code anpassen, aber das hier funktioniert schonmal. Darauf kannst Du jetzt aufbauen. ;)
procedure TForm1.Button1Click(Sender: TObject);
var Reg: TRegistry; sTemp: String; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKeyReadOnly('Software\Microsoft\Windows\CurrentVersion\AppPaths\NameDeinerAnwendung'); sTemp := Reg.ReadString('Path'); Reg.CloseKey; finally FreeAndNil(Reg); end; //try ShowMessage(sTemp); end; PS: Ich verschiebe das mal nach WinAPI. |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Darauf kann er wohl nicht aufbauen, da er den Pfad im Registry-Editor von Windows geöffnet haben will?
|
Re: Exakter Registry Pfad auf Button Klick öffnen??
Ich meine dass das ShellExecute da nichts veroren hat und Er es aus "unwissenheit" hingeschreibselt hat. Aber warten wir mal ab bis Er sich wieder meldet.
|
Re: Exakter Registry Pfad auf Button Klick öffnen??
Moin Zusammen,
ich denke mal, dass es darum geht zu einem bestimmten Key in der Registry zu navigieren, wie es beim Doppelklick auf einen Key in RegMon geschieht. |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Erstmal danke für eure Bemühungen,
ich habe den Source ausprobiert, er führt zu einem Showmessage mit leerem Inhalt. Mir ist klar, dass mein Code Experiment ganz oben dargestellt nicht funktionieren konnte es sollte vor allem veranschaulichen, was ich gerne dargestellt hätte und das ist genau der Punkt, wie der Super Moderator C.Seehase sagt, so wie bei Regmon z.B., es gibt aber noch mehr Programme die sowas können, sowas muß es doch auch in Delphi geben oder? Ein direkter Einsprungspunkt innerhalb der Registry. ALso ich kenne ca. 3 Programme die das können, das muß doch auch in Delphi gehen?? Wäre toll, wenn jemand diese Nuss knacken könnte. Einfach Button oder Label Klick und dann Sprung in die Registry zum Beispiel zu Pfad HKLM\Software\Windows\CurrentVersion\App Paths\Wordpad.exe |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Moin SunnyDay,
Zitat:
Treiber kannst Du mit Delphi aber, genaugenommen, nicht erstellen (wenn überhaupt nur mit sehr grossem Aufwand, da der Compiler nicht darauf eingerichtet ist, schliesslich ist Delphi ja ein RAD Tool). Ggf. kannst Du Dir ja mal die Sourcen von RegMon durchsehen. Vielleicht gibt's da ja Anhaltspunkte. |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Im Notfall erschiesse die Registry doch mit ihren eigenen Waffen. Der Registry-Editor öffnet sich ja immer an der zu letzt genutzten Stelle. Diese ist, wie sollte es auch anders sein, in der Registry gesichert. Überschreibe den Wert mit dem gewünschten Wert und öffne den Registry-Editor im Anschluss ;-)
Der Pfad wäre: HKCU\Software\Microsoft\Windows\CurrentVersion\App lets\RegEdit Wert: LastKey (Typ: String) ...:cat:... |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Zitat:
|
Re: Exakter Registry Pfad auf Button Klick öffnen??
Zitat:
Aber vielleicht wäre es ja auch eine Möglichkeit, den Inhalt des gewünschten Schlüssels in einer ListView anzeigen zu lassen, statt regedit zu benutzen. |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Im Notfall: Du kannst direkt im Treeview des Regedit das entsprechende Item auswählen. Da ein Treeview aber ein Common Control ist, geht das nicht so leicht.
|
Re: Exakter Registry Pfad auf Button Klick öffnen??
Zitat:
...:cat:... |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Das Prinzip von RegMon ist "relativ" einfach.
Man nehme ein beliebiges Programm und starte (vorzugsweise mit ShellExecuteEx oder CreateProcess) den REGEDIT. Danach hole man sich das (Haupt)Fenster dieser Instanz (REGEDIT hat normalerweise nur eine Instanz!). Hast du dieses Fenster, suchst du bei den Childs das TreeView ... das schließt du dann komplett (SendMessage) und öffnest danach in Einzelschritten den Pfad, den du willst. Wie du siehst, das Prinzip ist einfach, die Umsetzung nicht mehr ganz ;) |
Re: Exakter Registry Pfad auf Button Klick öffnen??
@Assarbad wäre gut wenn du ein Source Beispiel demonstrieren könntest,
in welcher Form auch immer.. @Sakura: ja die Idee ist zwar witzig, ich möchte aber zum Beispiel 10 Buttons machen, mit denen ich 10 verschiedene Registry Sprünge erleben kann. @Seehase: Habe keinen Source gefunden von Regmon. ------------------------------------------------------------------------ Übrigens ist das Rätsel gelöst :-) Es ist sogar recht einfach. Wäre ja schlimm, wenn das in Delphi nicht möglich gewesen wäre. :-) |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Zitat:
![]() gibt's was. |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Ja genau, danke toms, hab es auch schon entdeckt!
Somit wissen nun alle bescheid! Hätte es sonst auch noch gepostet! Super! |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Es gäbe da noch eine andere Möglichkeit:
Den Regedit-TreeView mit APIs wie TreeView_GetItem() usw. zu durchlaufen und wenn der gewünschte Schlüssel gefunden wurde ihn aufklappen und markieren. |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Dazu musst aber erstmal in den Adressbbereich des Regedit-Prozesses kommen, denn die Common Controls können nur aus ihrem jeweiligen Adressbereich gesteuert werden.
|
Re: Exakter Registry Pfad auf Button Klick öffnen??
Zitat:
den TProcessMemMgr von Michael Winter verwenden. |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Moin toms,
das müsste das gleiche Prinzip sein wie hier ![]() nur eben für Tree- statt Listview. |
Re: Exakter Registry Pfad auf Button Klick öffnen??
Hehe ... der Source ist schonganz nett ;) ... aber ich würde es auch machen, wie toms es vorschlug. Schon von daher, weil der andere Code (bei SDC) leicht-brüchig ist. Aber ist schonmal nett ein Spielerchen so zu sehen ;) ... und wahrscheinlich wäre alles andere auch Overkill.
Weil danach gefragt wurde ... ich hatte mal Code für jemand anderen geschrieben, der Nodes aus nem Treeview ausliest. Ist aber glaub ich nicht mehr ganz vollständig: http://assarbad.net/stuff/!export/treeviewtext.rar Abgewandelt kann man das auch benutzen um Steuerbefehle abzusetzen. Übrigens, Chewie, ich sehe keine großen Probleme, da man das Treeview ja nicht verändern will, sondern nur öffnen will. Liest man also die Handles (HITEM) der Nodes aus, sollte alles mit einem entsprechenden TVM_EXPAND gegessen sein. Ganz ohne Lesen im fremden Prozess kommt man dann natürlich trotzdem nicht aus ;) @Christian: oder eben ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 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