2011-06-17 18 views
2

Windows 64ビットコンテキストメニューを32ビットアプリケーション内に埋め込みたい(TotalCommanderのX64サブメニューなど)。これを行うには、32ビット側で64ビットのメニューコンテンツをシミュレートする必要があります。私の考えは、64ビットヘルパープロセス内で64ビットメニューを横断し、そのようなコンテンツを32ビット側で再生成することです(私は64ビットヘルパーから直接このようなメニューを表示しようとしましたが、ウィンドウはそれぞれ2つのコンテキストメニュー異なるプロセスから、そして第2のメニューを正しくペイントしない)。あなたに他のアイデアがあるかどうか教えてください。32ビットアプリケーション内の64ビットWindowsコンテキストメニュー(オーナー描画メニューのトラバース方法)

オーナー描画メニューの中には、GetMenuItemCount()が返すものよりも多くの項目を表示するものがあります(通常、GetMenuItemCount()はそのような場合に1を返します)。

興味深いのは、アイテムID(これはTrackPopupMenuEx()から返されます)を使用してオーナー描画メニューアイテムにGetMenuItemInfo()を使用できることです。しかし残念なことに、IDを使用してメニューアイテムを反復することはできません(アイテムIDは順不同です)。

アイデア?

答えて

4

TotalCommandがどのように機能するのかわかりません。

  • スタートTOTALCMD.EXE(32ビットプロセス)
  • はそれが(右/左側に実行し、それを維持し、プロセス/プロセス数を監視タスクマネージャで実行されていることを参照してください
  • :しかし、私はこれを見つけました。
  • メニューを起動します。今、プロセスはまだ同じです。
  • ホバーX64メニューの上に、そしてあなたはそれが時間がかかります参照してください。あなたはタスクマネージャで見たときに、TCMDX64.EXEという名前の別のプロセスが始まったばかり。この時、およびこれは64ビットプロセスです。
  • 私の理解では、この生成されたプロセスはメニューを取得し、TotalCommanderの32ビットアプリケーションに返信します。
+0

+1すばらしい探偵の仕事。 :) – vhallac

+0

すべての点で、私の質問を読みましたか?私はすでに64ビットヘルパープロセスを持っていると書いています。私が持っている問題は、オーナーが描いたメニューをいくつかトラバースする方法です。 – Bogdan

+0

コンテキストメニューをどのプロセスから列挙していますか? 64ビットヘルパープロセスから32ビットプロセスにメニュー情報を渡すことができます。または、ここでいくつかの情報を追加する必要があるかもしれません。 – Ajay

関連する問題