Laden...

Zugriff auf markierte Datei, Explorer

Erstellt von absolut vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.766 Views
absolut Themenstarter:in
76 Beiträge seit 2006
vor 17 Jahren
Zugriff auf markierte Datei, Explorer

Guten Abend,

Ich muss täglich kopierte Dateien nach einem bestimmten Muster umbenennen (Datum und weitere Zusätze hinzufügen). Nun habe ich mir überlegt, dies zu automatisieren.

Ich wähle die entsprechende Datei im Explorer an, drücke ein Tastenkürzel (Bsp. Shift+F7) und die Datei wird mit meinem Programm umbenennt.

Explorer -> Datei anklicken -> Shift+F7 -> Mein Programm Starten, umbenennen.

Wie kann ich herausfinden, welche Datei im Explorer angewählt ist?

Gruss absolut

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo absolut,

verwende ==> ShellExtensions. Dann ist dein "Programm" eine DLL und die aufgerufene Funktion bekommt als Parameter die markierten Dateien.

herbivore

absolut Themenstarter:in
76 Beiträge seit 2006
vor 17 Jahren

Danke für die schnelle Antwort.

Zwei Fragen:

Ich habe bei codeproject.com ein Beispiel gefunden, ist dies der richtige Ansatz? Ich habe noch nie etwas von ShellExtensions gehört, sorry.
http://www.codeproject.com/csharp/dateparser.asp

Dieser Beitrag aus dem Forum irritiert mich etwas:
Explorer Kontextmenü erweitern mit Untermenüs

Gruss absolut

Edit:
Irfanview ist ja auch nur ein "normales" Programm, dort kann ich auch mit einem Tastenkürzel einen Screenshot des aktiven Fensters machen. Woher weiss Irfanview, welches Fenster gerade aktiv ist? Oder ist das etwas komplett anderes?

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo absolut,

es wird hier im Forum zum Teil die Meinung vertreten, dass man ShellExtensions nicht in C# schreiben sollte (einen solchen Beitrag hast du ja gefunden und warum man es nicht tun sollte steht ja auch da), aber wenn du es tun willst, ist der codeproject-Artikel sicher hilfreich.

herbivore

absolut Themenstarter:in
76 Beiträge seit 2006
vor 17 Jahren

Ich habe mich etwas in die Materie eingelesen, besten Dank für die Infos.
Da dieses Programm auf verschiedenen Rechnern eingesetzt wird, werde ich es nicht als .Net-Anwedung schreiben, die beschriebenen Gefahren sind mir zu gross.

absolut

absolut Themenstarter:in
76 Beiträge seit 2006
vor 17 Jahren

Eine Frage habe ich noch: In welchem Verzeichnis sollte man eine Shellextension ablegen?

C:\Windows
C:\Windows\system32
???

Gruss absolut

B
1.529 Beiträge seit 2006
vor 17 Jahren

\Programme\Gemeinsame Dateien\ (bzw. %CommonProgramFiles%).

Der andere Ordner heißt ja nicht umsonst "Windows"...

absolut Themenstarter:in
76 Beiträge seit 2006
vor 17 Jahren

Ja schon, da aber:

  • Die Shellextension eine DLL ist und keine EXE ist
  • Mit dem Explorer gekoppelt ist
  • Alle System DLLs in den Windows Ordnern rumliegen

gehört mein Programm, die DLL dann nicht auch in den Windows Ordner???

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo absolut,

es ist eine schlechte Angewohnheit, dass nicht von Microsoft erstelle Programme und Module alle Art ihre DLLs unter Windows ablegen. Darauf wollte Borg wohl hinaus. Was hast du gegen \Programme\Gemeinsame Dateien? Der Pfad ist doch auch immer erreichbar.

herbivore

absolut Themenstarter:in
76 Beiträge seit 2006
vor 17 Jahren

Gegen den Ordner habe ich nix, ich hätte nur gerne eine Begründung gehabt, wieso nicht. Es schien mir etwas unlogisch, da die Shellextension für mein Verständnis kein eigentliches Programm ist.

Andererseits machen Programme wie 7-zip und winrar auch Einträge im Contextmenu und sind im normalen c:\programme... abgelegt.

Ok, dann wird das Teil in die \Programme\Gemeinsame Dateien... abgelegt.

Besten Dank für eure Antworten.
Gruss Absolut