![]() |
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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