![]() |
Windows Rechtsklickmenü
moin,
ihr kennt das sicher auch alle, wenn man unter Windows auf eine ausführbare Datei rechtsklickt (nur *.exe) erscheint ein Menü: Dort steht dann drin: öffnen öffnen mit -------------- [Allemöglichen Programme] -------------- etc. Jetzt möchte ich, dass sich mein Delphiprogramm auch in dieses Menü einträgt. (Wenn möglich da hinein, wo jetz [Allemöglichen Programme] stehen.) Das sollte dann in etwa so aussehen, dass dei einem Klick auf diese Schaltfläche ein hinterlegtes Programm mit dem Pfad des angeklickten Programmes als Startparameter ausgeführt wird. Ich weiß schon soviel, dass man das irgendwo inner Registry eintragen muss (HKEY_CLASSES_ROOT\...) Ich hab allerdings überhaupt keinen Plan wie das dann dort drinstehen muss und wie man das mit Delphi da am bessten einträgt. Hab bisher noch nie mit TRegistry gearbeitet. Ich bin mir sicher, dass des eigentlich total primitiev is, un ich bisher nur noch nich dahinter gekommen bin, bin also dankbar für alle Antworten mfg |
Re: Windows Rechtsklickmenü
Nennt man ShellExtension. Bei Delphi ist m.W. eine Demo dafür dabei
|
Re: Windows Rechtsklickmenü
Ein einfacher Befehl geht aber auch sehr viel einfacher, als Beispiel hier die Erweiterung um das Öffnen der Kommandozeile am Ordner für XP und früher.
Code:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\cmd] @="Kommandozeile hier öffnen" [HKEY_CLASSES_ROOT\Directory\shell\cmd\command] @="cmd.exe /k \"cd %L\"" |
Re: Windows Rechtsklickmenü
Hab gegoogelt und
![]() War auch mal wieder toll; ein Treffer wo einer schreibt "Ich habe einen Link gefunden wo alles erklärt wird" und dann postet er nichtmal den Link -.- Edit: Okay, jaenicke hat dann das Selbe :p |
Re: Windows Rechtsklickmenü
Hey,
erstmal super dank für die schnellen Antworten, ihr seid spitze :party: Also ich mach des jetz so:
Delphi-Quellcode:
Funzt prima,
var
Registry: TRegistry; begin Registry := TRegistry.Create; width Registry do begin RootKey := HKEY_CLASSES_ROOT; OpenKey('*\Shell\Test',true); WriteString('','Editor öffnen'); OpenKey('command',true); WriteString('','C:\Windows\system32\notepad.exe C:\Text.txt'); end; Registry.Free; end; und damit wäre das dann auch schon wieder erledigt mfg |
Re: Windows Rechtsklickmenü
Das ist aber eine recht optimistische Art der Programmierung, bei mir wären da mindestens ein try-finally-Block und einige Ifs drin ;)
|
Re: Windows Rechtsklickmenü
Richtig und zu einem OpenKey gehört auch immer ein CloseKey.
Grüße, Matze |
Re: Windows Rechtsklickmenü
Das kommt noch strafverschärfend hinzu :zwinker:
|
Re: Windows Rechtsklickmenü
u.U. kann es sein, das schon nach dem Create Schluss ist, aufgrund fehlender Rechte.
|
Re: Windows Rechtsklickmenü
Fassen wir also zusammen:
Delphi-Quellcode:
var
Registry: TRegistry; begin Registry := TRegistry.Create; try Registry.RootKey := HKEY_CLASSES_ROOT; if Registry.OpenKey('*\Shell\Test',true) then try Registry.WriteString('','Editor öffnen'); if Registry.OpenKey('command',true) then try Registry.WriteString('','C:\Windows\system32\notepad.exe C:\Text.txt'); finally Registry.CloseKey; end; finally Registry.CloseKey; end; finally Registry.Free; end; end; |
Re: Windows Rechtsklickmenü
Solange du das Programm nur bei dir ausführst, geht das so, ja. Bei mir zum Beispiel würde das nicht gehen, da mein Systemverzeichnis B:\Windows ist...
|
Re: Windows Rechtsklickmenü
Hier wird es doch schon mit Vista zoff geben, da TRegistry standardmäßig mit vollen Zugriffsrechten gestartet wird, welche außerdem dann bei OpenKey mit 2. Parameter auf true gebraucht werden, falls der Key nicht vorhanden ist (wird SetKey aufgerufen welches vollen Zugriff braucht).
|
Re: Windows Rechtsklickmenü
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18: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