Windows エクスプローラーのコンテキスト メニューを表示したい。
アプリケーションを追加したくありません。アプリケーション内に表示したいだけです。
私が必要とする実装の良い例は、Total Commander です。
マウスの右ボタンを押したままにすると、TC はコンテキスト メニューを表示します。これは、Windows エクスプローラーとまったく同じです。
私は C++/Qt を使用していますが、ここでは言語は重要ではありません。
Windows エクスプローラーのコンテキスト メニューを表示したい。
アプリケーションを追加したくありません。アプリケーション内に表示したいだけです。
私が必要とする実装の良い例は、Total Commander です。
マウスの右ボタンを押したままにすると、TC はコンテキスト メニューを表示します。これは、Windows エクスプローラーとまったく同じです。
私は C++/Qt を使用していますが、ここでは言語は重要ではありません。
私はあなたを助けるかもしれないいくつかのサンプルを見つけました。シェルのコンテキストメニューはOS固有であるため、Qtだけではこれを実行できない可能性があります。おそらくいくつかのWin32呼び出しも必要になるでしょう。
RaymondChenのブログシリーズ「IContextMenuをホストする方法」
また、C++以外のサンプルもいくつかあります。
および関連するSOの質問:
次の 2 つのオプションがあります。
1) カスタム コンテキスト メニューで対応するアクションを作成して、各機能を独自に実装する、または
2) Windows API にアクセスします...これは、Qt がクロスプラットフォームであることを考えると、Qt が意図していないことです。
http://www.ffuts.org/blog/right-click-context-menus-with-qt/
Qtでは、右クリックしてコンテキストメニューをポップアップするのは非常に簡単です。注意すべき点がいくつかあります…</p>
// myWidget is any QWidget-derived class
myWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(myWidget, SIGNAL(customContextMenuRequested(const QPoint&)),
this, SLOT(ShowContextMenu(const QPoint&)));
一方、「Windowsエクスプローラーの統合」や「Windowsシェルの統合」などを探している場合は、次のような良い例があります(QT固有ではありませんが)。
http://www.codeproject.com/Articles/15171/Simple-shell-context-menu
重要なのは、次の2つのWindowsシェルインターフェイスを実装することです。
IContextMenu
IShellExtInt