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
Hallo absolut,
verwende ==> ShellExtensions. Dann ist dein "Programm" eine DLL und die aufgerufene Funktion bekommt als Parameter die markierten Dateien.
herbivore
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?
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
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
Eine Frage habe ich noch: In welchem Verzeichnis sollte man eine Shellextension ablegen?
C:\Windows
C:\Windows\system32
???
Gruss absolut
\Programme\Gemeinsame Dateien\ (bzw. %CommonProgramFiles%).
Der andere Ordner heißt ja nicht umsonst "Windows"...
Ja schon, da aber:
gehört mein Programm, die DLL dann nicht auch in den Windows Ordner???
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
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