Hallo, ich würde gerne ein kleines Programm schreiben, welches mit 2 verschiedenen Dateien arbeitet. In der Handhabung würde ich es gerne vergleichbar mit Diff-Programmen machen: Ich suche die erste Datei und markiere sie. Das re.Maustaste-Menü zeigt mir die Möglichkeit an: "MyProg: choose 1st file". Dann gehe zur 2. Datei (verschiedene Filename-Extension) und das Menü zeigt an: "MyProg: choose 2nd file". Dann wird mein Programm (C mit Visual Studio) aufgerufen mit den beiden Pfaden der selektieren Dateien. Weiß jemand, wie man sowas programmiert, d.h. wo im Developer Network http://msdn.microsoft.com man das findet ?
Linker schrieb: > Weiß jemand, wie man sowas programmiert, d.h. wo im Developer Network > http://msdn.microsoft.com > man das findet ? das ist nicht zu programmieren, sondern nur in der Registry einzutragen. http://www.thewindowsclub.com/remove-click-context-menu-items-editors
schon mal in anderen Programmen geschaut wie die das machen? z.B.: TortoiseSVN
>schon mal in anderen Programmen geschaut wie die das machen? >z.B.: TortoiseSVN "Beyond Compare 3" habe ich zur Verfügung. Aber da sind die Reg-Einträge eher umfangreich und verwirrend.
Vermutlich wird solche Doku gesucht? http://msdn.microsoft.com/en-us/library/windows/desktop/cc144171.aspx
So trivial ist das nicht. Eigentlich hab ich's ja oben genau beschrieben. Der Explorer/Menüverwaltung braucht hier eine State-Maschine ! Wenn das erste File angewählt werde, kann der User weiter browsen und das 2. File suchen. Wenn das dann gewählt wird, nimmt der Explorer das gemerkte 1. File und das eben selektierte 2. File und ruft das Programm auf.
Linker schrieb: > Der Explorer/Menüverwaltung braucht hier eine State-Maschine ! Das geht natürlich mit den üblichen Windows-Mechanismen: du kannst dich mit einem systemweiten Hook in das Aufrufen von Kontextmenüs einklinken und dann selbst entscheiden, was dort zusätzlich angeboten wird - vorausgesetzt deine Software bzw. ein Teil davon läuft, d.h. du musst das als Dienst installieren. Trivial ist es allerdings nicht. Georg
Hallo, für den Explorer ist sowas schon vorgesehen, fang mal da an zu lesen: http://msdn.microsoft.com/en-us/library/windows/desktop/cc144067%28v=vs.85%29.aspx und schreibe dir einen shortcut menu handler. Georg
Linker schrieb: > Der Explorer/Menüverwaltung braucht hier eine State-Maschine ! > > Wenn das erste File angewählt werde, kann der User weiter browsen und > das 2. File suchen. > Wenn das dann gewählt wird, nimmt der Explorer das gemerkte 1. File und > das eben selektierte 2. File und ruft das Programm auf. Vom Prinzip her geht das auch in einfach, ohne dienste, hooks und komplizierte (ganz ohne gehts nicht) Registry-Einträge: du erzeugst ein Programm, was den Kommandozeilenparameter (der übergebene Dateipfad) nimmt und mit einem Zeitstempel in eine Datei schreibt (dein appdata-verzeichnis) und sich beendet. Wird das Programm aufgerufen, öffnet es diese Datei, schaut sich den Zeitstempel an, und wenn sie nah genug beieinander liegen, interpretiert es die Aktionen (die gespeicherte und die aktuelle) als zusammengehörig und startet die Gui mit dem Vergleich und löscht den Dateiinhalt. Liegen sie zu weit auseinander, wird der alte Eintrag durch den aktuellen ersetzt. Damit das aus dem Kontextmenü funktioniert, musst du in der Registry unter "HKEY_CLASSES_ROOT\*\shell" einen neuen Schlüssel anlegen, dessen defaulteintrag im Kontextmenu angezeigt wird. darunter legst du einen weiteren Schlüssel "command" an, dessen defaultwert > "Pfad/myProgramm.exe" "%1" sein sollte. Es geht natürlich auch schöner. einige Dateivergleichsprogramme registrieren ja eigene Kontextmenuhandler, wie das geht weiß ich nicht genau. mir haben bisher immer das "senden an"-Menü und die oben beschriebene Vorgehensweise gereicht. Als reg datei sieht das dann zB so aus:
1 | Windows Registry Editor Version 5.00 |
2 | |
3 | [HKEY_CLASSES_ROOT\*\shell\PathToClipboard] |
4 | @="Path -> Clipboard" |
5 | |
6 | [HKEY_CLASSES_ROOT\*\shell\PathToClipboard\command] |
7 | @="C:\\tools\\PathToClipboard.exe %1" |
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.