Ich habe eine C# WPF-Anwendung. Es wurde entwickelt, um an allen Dateien zu arbeiten. Im Moment akzeptiert es "Eingabe" mittels Befehlszeilenargumenten sowie Ziehen und Ablegen zu einem Steuerelement in seinem Hauptfenster. Im Idealfall möchte ich jedoch, dass die Benutzer jede Datei/mehrere Dateien rechtsklicken und sie einfach auf "Awesomify this" klicken können. (Das ist nicht der richtige Name.: P)Empfohlene Methode zum Mischen von .NET und Datei Kontextmenüs
Ich habe einige Erfahrung mit Kontextmenüs von Jahren, also alles in allem ist es nicht zu aktuell. Daher bin ich auf der Suche nach Tipps, wie diese Funktion am besten implementiert werden kann. Alle folgenden Beispiele basieren auf dem, was ich mit W7 sehe.
Im Allgemeinen verstehe ich, dass es im Grunde zwei Möglichkeiten gibt: reine Registrierung und Registrierung + COM-Objekt.
Ersterer hat eine gewisse Eleganz, da ich nichts Besonderes möchte; Wie ich jedoch anhand der Dokumentation feststellen kann, klumpen diese Menüelemente immer an der gleichen Stelle wie die primären Dateiaktionen (Öffnen, Vorschau, Drucken). Allerdings möchte ich, dass mein Gegenstand tiefer auf dem Totempfahl erscheint. Wenn ich mir mein persönliches Kontextmenü für eine zufällige Datei anschaue, möchte ich, dass es an der 'Stelle' UltraEdit und Malwarebytes Anti-Malware sich selbst festhält. Wenn ich meinen Eintrag unter HKCR\*\shell\AwesomeTest
klebe, bekomme ich meinen Gegenstand, aber egal, was ich für den Position
auswähle, bekomme ich zwei verschiedene Extreme, die ich nicht mag: Top
setzt es über den Standardartikel, Bottom
setzt es direkt über Eigenschaften. Ich will es zwischen Teilen mit und Wiederherstellen früheren Versionen, wo die meisten Allzweck-Tools ein Zuhause zu finden scheinen.
Einige weitere Registry-Grabung scheint darauf hinzuweisen, dass die Apps, die ich nachahmen möchte, die COM-Objekt-Route verwenden. Und das würde mich (glaube ich) zurück zum nativen Code bringen. Das würde dann alle Höllen der 32-Bit- und 64-Bit-Entwicklung mit sich bringen, die ich zu vermeiden versuche.
Gibt es etwas, was ich vermisse? Abgesehen von der MSDN page regarding context menu handlers, die ich durchgesehen habe und die ich für wenig hilfreich halte (da sie sehr viel zu überfliegen scheint, ohne in die präziseren Details bezüglich der Platzierung und so weiter zu gehen), gibt es gute Quellen zu diesem Problem?
Eine andere Sache, die ich noch nicht herausfinden konnte ist, wie ich IDropTarget-Unterstützung zu meiner .NET WPF-Anwendung noch hinzufügen kann, so dass Informationen darüber auch willkommen wären.
Wenn jemand eine sofortige Antwort hat, naja, das wäre nett, aber ich versuche hauptsächlich, den richtigen Weg zu finden, ohne mehrere Tage auf den Wegen zu verschwenden, die Sackgassen sind. Von denen es eine Menge zu geben scheint. :(
Danke für die Antwort, aber das ist ziemlich genau die falsche Seite der Geschichte.Ich versuche, meine WPF-App in das Dateikontextmenü an einer bestimmten Stelle, nicht meine Dateien durch gezeigt/zugegriffen/etc von meiner WPF App. Bisher scheint es jedoch die Die beste Alternative dafür ist, 32-Bit und 64-Bit-Kontext-Menü-Handler-dll in den Mix geworfen zu haben, um das Element an der richtigen Stelle anzuzeigen – Stigma
(Mentale Notiz: Hör auf, schlechte Nachrichten zu liefern). –