2009-05-02 10 views
0

Ich bin ein Anfänger .Net 2.0 und 3.5 Entwickler. Ich möchte eine Anwendung erstellen, die ein Kontextmenü erstellt, wenn in Vista auf eine Datei geklickt wird. Nach dem Rechtsklick - ich denke, ich kann den Rest herausfinden, aber ich kenne die Technik nicht, um Zugriff auf die Vista API zu bekommen.Helfen Sie mir dabei, eine Datei zu erstellen -> Rechtsklick-Kontextmenü in Vista

FOLLOW-UP:

Als ich einige der Informationen gelesen haben, dass Leute mit geantwortet habe, habe ich festgestellt, dass ich mit den Shell-Erweiterungen Overkill hier werde. Ich denke, dass ich dieses Projekt viel einfacher halten kann, wenn ich nur meine App anrufe und den Dateinamen als Parameter übergebe. Dies erfordert immer noch, dass meine App im Kontextmenü des Explorers erscheint, wenn auf Dateien mit bestimmten Erweiterungen rechts geklickt wird. Wie gehe ich dabei vor?

+0

Die PDF in meiner Antwort liefern, so werde ich nicht erstellen Sie eine neue Antwort darauf (KBCafe PDF, konnte nicht einen einfachen HTML-Link finden) sollten. Ich bin mir nicht sicher, ob du es schon gesehen hast. –

Antwort

1

Mit dem Risiko, nicht hilfreich zu klingen, würde ich in .Net 2.0 oder 3.5 dagegen empfehlen. Wie Brian sagte, ist die Sache, die Sie zu implementieren versuchen, eine Shell-Erweiterung. Diese sind als Bibliotheken implementiert, die die Vista-Shell lädt.

Es gibt mehrere Tutorials im Internet, die Anweisungen zur Implementierung in .Net 2.0 geben oder so wenige von diesen erwähnen, wie schlecht die Idee ist. Wenn Sie die Vista-Shell dazu bringen, eine .Net-Shell-Erweiterung zu laden, müssen Sie die gesamte .Net-CLR laden, die Ihre Shell-Erweiterung benötigt. Was noch schlimmer ist, ist, dass Sie nur eine Version der gesamten .Net CLR in einem Prozess laden können. Wenn Sie also eine Shell-Erweiterung haben, die .Net 1.0 CLR erfordert und Vista diese geladen hat, kann sie die 2.0 CLR, die Ihre Shell-Erweiterung benötigt, nicht laden.

Es gibt auch einige Stack Overflow articles, die bereits darüber diskutieren.

Einige Informationen über implementing a shell extension in unmanaged C++ zum followup eine Antwort

0

Das Ding, das Sie schreiben möchten, wird "Shell-Erweiterung" genannt. Ich habe noch nie einen geschrieben, daher kann ich Ihnen kein kurzes Beispiel geben, aber jetzt, da Sie wissen, wie es heißt, können Sie wahrscheinlich mehr Fortschritte machen, wenn Sie nach Tutorials auf Google suchen.

0

Ich bin ziemlich sicher, dass Sie nicht verwalteten Code verwenden dürfen, um Shell-Erweiterungen für den Explorer in einer beliebigen Windows-Version zu schreiben. Wenn Sie also einen schreiben möchten, müssen Sie dies in einer "traditionellen" Sprache wie C++ tun.