Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows Rechtsklickmenü (https://www.delphipraxis.net/135572-windows-rechtsklickmenue.html)

Anonymos 13. Jun 2009 13:37


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

mkinzler 13. Jun 2009 13:41

Re: Windows Rechtsklickmenü
 
Nennt man ShellExtension. Bei Delphi ist m.W. eine Demo dafür dabei

jaenicke 13. Jun 2009 13:44

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\""

quendolineDD 13. Jun 2009 13:44

Re: Windows Rechtsklickmenü
 
Hab gegoogelt und das hier gefunden.
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

Anonymos 13. Jun 2009 14:01

Re: Windows Rechtsklickmenü
 
Hey,
erstmal super dank für die schnellen Antworten,
ihr seid spitze :party:

Also ich mach des jetz so:
Delphi-Quellcode:
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;
Funzt prima,
und damit wäre das dann auch schon wieder erledigt

mfg

DeddyH 13. Jun 2009 14:03

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 ;)

Matze 13. Jun 2009 14:12

Re: Windows Rechtsklickmenü
 
Richtig und zu einem OpenKey gehört auch immer ein CloseKey.

Grüße, Matze

DeddyH 13. Jun 2009 14:14

Re: Windows Rechtsklickmenü
 
Das kommt noch strafverschärfend hinzu :zwinker:

quendolineDD 13. Jun 2009 14:43

Re: Windows Rechtsklickmenü
 
u.U. kann es sein, das schon nach dem Create Schluss ist, aufgrund fehlender Rechte.

DeddyH 13. Jun 2009 15:05

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 19:18 Uhr.
Seite 1 von 2  1 2      

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