5

Windows エクスプローラーのコンテキスト メニューを表示したい。

アプリケーションを追加したくありません。アプリケーション内に表示したいだけです。

私が必要とする実装の良い例は、Total Commander です。

マウスの右ボタンを押したままにすると、TC はコンテキスト メニューを表示します。これは、Windows エクスプローラーとまったく同じです。

私は C++/Qt を使用していますが、ここでは言語は重要ではありません。

4

4 に答える 4

10

私はあなたを助けるかもしれないいくつかのサンプルを見つけました。シェルのコンテキストメニューはOS固有であるため、Qtだけではこれを実行できない可能性があります。おそらくいくつかのWin32呼び出しも必要になるでしょう。

RaymondChenのブログシリーズ「IContextMenuをホストする方法」

また、C++以外のサンプルもいくつかあります。

および関連するSOの質問:

于 2012-05-19T23:50:37.760 に答える
0

次の 2 つのオプションがあります。

1) カスタム コンテキスト メニューで対応するアクションを作成して、各機能を独自に実装する、または

2) Windows API にアクセスします...これは、Qt がクロスプラットフォームであることを考えると、Qt が意図していないことです。

于 2012-05-20T06:49:11.333 に答える
-1

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

于 2012-05-19T20:04:55.330 に答える