![]() |
Pfad + Datein. bekommen wenn Explorer Kontektmenü öffnet....
Moin Moin,
schon mal Danke an alle hier vorab.... :hello: Ich habe eine Super Idee für ein Programm aber ziemlich große Probleme bei der Umsetzung. Ich habe das Kontektmenü des Explorer mit meinem Programmeintrag erweitert Null-Problemo. Nun möchte ich das wenn mein Programm aus dem Menü ausgewählt wird, jede Datei in jeden beliebigen Ordner in einen frei wählbaren Ordner kopiert wird. Das kopieren ist nicht das Problem sondern der Pfad + Dateiname sind das Problem. Habe den ganzen Tag schon gegoogelt und nach allen möglichen gesucht. Selbst bei MSDN hab ich leider das passende nicht gefunden. Aber es muß ja was geben die Viren & Firewallprogramme bekommen ja auch alles mit.... Vielen Dank noch mal an alle cu Speeeedfreak :glaskugel: |
Re: Pfad + Datein. bekommen wenn Explorer Kontektmenü öffnet
Du erhältst doch den Pfad der ausgewählten Dateien über die ParamStr. D.h. welche Dateien du kopieren musst sind bei deinem Programmstart schon klar und das Ziel kannst du mit einer SelectDirectory Dialogbox abfragen. Der Rest ist nur noch kopieren der Dateien. Welchen Zusammenhang du da mit einem Virenschutzprogramm darstellst ist mir nicht ganz klar.
|
Re: Pfad + Datein. bekommen wenn Explorer Kontektmenü öffnet
Moin fatalerror,
erst mal Danke für deine Hilfe.... :-D Die Funktion ParamStr kenne ich, allerdings glaube ich, das ich mich vielleicht ein bißchen falsch ausgedrückt habe. Ich habe mir keinen eigenen Explorer gebastelt, sondern ich benötige den Pfad und den Dateinamen direkt von Windows. Mein Prg. könnte ja schon im Hintergrund laufen und beim anklicken meines Eintrags im Kontektmenü des Explorer bräuchte ich dann irgendwie den Pfad + Dateinamen von mir aus auch in der Zwischenablage wär ja kein Ding. Hab auch schon etwas gegoogelt aber schwer was raus zu finden. Vielleicht geht es mit der Windows Shell Extensions, oder ich bin völligst auf dem falschen Weg gelandet. Wenn ich dich jetzt natürlich falsch verstanden habe dann sorry..... oder hast du ein bißchen Code für mich. Danke Speeeedfreak :wink: |
Re: Pfad + Datein. bekommen wenn Explorer Kontektmenü öffnet
Guck dir mal die Unit1 im Verzeichnis ExifReaderEx von meinem ExifReader an:
![]() |
Re: Pfad + Datein. bekommen wenn Explorer Kontektmenü öffnet
Hi Luckie,
danke für die schnelle Hilfe werd gleich mal schaun :shock: Danke Speeeedfreak |
Re: Pfad + Datein. bekommen wenn Explorer Kontektmenü öffnet
Ich habe nie angenommen, dass Du einen eigenen Explorerersatz geschrieben hast.
Du hast dein Programm beim Explorer registriert. Nun beim Aufruf deines Programmes über das Kontextmenu startet der Explorer dein Programm und übergibt diesem Programm als Parameter den ausgewählten Dateinamen. Diesen findest du in paramstr. Dein Programm braucht also nicht dauernd im Hintergrund zu laufen. So wie ich Luckies Beitrag verstanden habe, macht er genau das im FormCreate: Luckies Code: if ParamCount = 1 then begin Filename := ParamStr(1); if FileExists(Filename) then begin ..... hier kommt nun dein Code für das Kopieren der Datei(en) |
Re: Pfad + Datein. bekommen wenn Explorer Kontektmenü öffnet
Moin ihr 2,
war die ganze Nacht vor meiner Kiste. Der Eintrag und das löschen von meinem Prg. im Kontektmenü ist mittlerweile kein Problem mehr, aber dieser verdammte Pfad von den Files.... Ich mach´s kurz hier mein Code.... :wall: Bitte helft mir :gruebel:
Delphi-Quellcode:
Oder muß ich "GetModuleFileName"-Methode in einer DLL benutzten....
function RegisterFileTypeCommand(fileExtension, menuItemText, target: string) : boolean;
var reg: TRegistry; fileType: string; begin result := false; reg := TRegistry.Create; with reg do try RootKey := HKEY_CLASSES_ROOT; if OpenKey('.' + fileExtension, True) then begin fileType := ReadString('') ; if fileType = '' then begin fileType := fileExtension + 'file'; WriteString('', fileType) ; end; CloseKey; if OpenKey(fileType + '\shell\' + menuItemText + '\command', True) then begin WriteString('', target +) ; CloseKey; result := true; end; end; finally Free; end; end; function UnRegisterFileTypeCommand(fileExtension, menuItemText: string) : boolean; var reg: TRegistry; fileType: string; begin result := false; reg := TRegistry.Create; with reg do try RootKey := HKEY_CLASSES_ROOT; if OpenKey('.' + fileExtension, True) then begin fileType := ReadString('') ; CloseKey; end; if OpenKey(fileType + '\shell', True) then begin DeleteKey(menuItemText) ; CloseKey; result := true; end; finally Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin //Registierung im Kontextmenü RegisterFileTypeCommand('pas','gMove ','E:\......meinePrg.exe') ; end; procedure TForm1.Button2Click(Sender: TObject); begin //Unregister UnRegisterFileTypeCommand('pas','gMove') ; end; procedure TForm1.FormCreate(Sender: TObject); var Filename : String; begin // Filepath bekommen... :) if ParamCount = 1 then begin Filename := ParamStr(1); if FileExists(Filename) then showmessage(Filename); end; end; end. Danke Speeeedfreak |
Re: Pfad + Datein. bekommen wenn Explorer Kontektmenü öffnet
Moin ihr 2,
mein Problem hat sich wie aus dem nix gelöst :thumb: Windows war der Fehler einmal neu gebootet ohne den SourceCode zu verändern und dann sah ich ungefähr so aus.... :wiejetzt: Also fettes DANKE nochmal LG Speeeedfreak :cheer: :hi: :dancer2: :dancer: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 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