17

アプリケーションにファイルリストがあり、ユーザーがアイテムを右クリックしてWindowsエクスプローラーのコンテキストメニューを表示できるようにしたいと思います。IContextMenuインターフェイスを使用する必要があると思いますが、どこから始めればよいのかよくわかりません。

4

3 に答える 3

13

私はあなたを助けることができるかもしれないライブラリを書きました。ライブラリが提供するコントロールを使用することもできますが、そうしたくない場合は、コードを調べることで答えが得られる場合があります。

ライブラリはhttp://gong-shell.sourceforge.net/にあります。

これが役に立ったかどうか教えてください!

于 2009-01-16T17:37:52.737 に答える
7

Raymond Chen のブログに IContextMenu をホストする方法に関する非常に優れたチュートリアル (C++ ではありますが) が 11 の部分 (順番) で示されています。

  1. 最初の進出
  2. コンテキスト メニューの表示
  3. 呼び出し場所
  4. 主なコンテキスト
  5. メニュー メッセージの処理
  6. メニューヘルプの表示
  7. デフォルト動詞の呼び出し
  8. デフォルト コマンドの最適化
  9. カスタム コマンドの追加
  10. 複合エクステンション - 下地
  11. 複合拡張 - 複合
于 2009-01-19T08:50:30.703 に答える
4

すべてを 1 つのクラスに非常にうまくカプセル化した素晴らしいコード プロジェクトの記事を見つけました。

エクスプローラ シェルのコンテキスト メニュー

次のコード スニペットと同じくらい簡単です。

// Sample code

ShellContextMenu ctxMnu = new ShellContextMenu();
FileInfo[] arrFI = new FileInfo[1];
arrFI[0] = new FileInfo(this.treeMain.SelectedNode.Tag.ToString());
ctxMnu.ShowContextMenu(arrFI, this.PointToScreen(new Point(e.X, e.Y)));

FileSystemInfo[] の配列を受け取るようにソースを少し変更するのは非常に簡単でしたが、FileInfo[] の配列または DirectoryInfo[] の配列のいずれかを受け取ることが唯一厄介なことです。

于 2009-08-20T04:07:11.823 に答える