IE等で右クリックをした時に表示されるポップアップメニューに
項目を追加することができるので変更することは可能と思っています。
やりたいことは、他アプリのポップアップメニューの項目を
クリックしたような動作を実現したいのです。
メニュー関係なのでGetMenu、GetMenuItemID等のAPIを使用すればいいのかなと思っていますが、メニューハンドルがわからなければ操作ができません。
メニューハンドルの取得方法はあるのでしょうか?
参考になるようなURLやAPIを知っている方がいたら教えていただけないでしょうか?
あんまし回答になってないけど…
いきなり簡単に取得する方法は無いんじゃないかな?とりあえず最初は
・現在起動しているプロセスを全取得
・該当のプロセスが持つウィンドウハンドルを全取得
・ウィンドウハンドルからメニューを全取得
・望みのメニューを探す
見たいな地道な作業が必要だと思うが。まあそれで望みのメニューハンドルが見つかれば、次回からはそれを直接指定出来るかも知れないけど。
とおりとおり2さん、回答ありがとうございます。
すみません。いい忘れていました。
対象のウィンドウハンドルは取得できています。
ウィンドウハンドルからメニューって取得できるんですか!?
知りませんでした・・・。
よかったら、どんなAPIか教えてもらえないですか?
ただ、操作したいのはポップアップメニューでありメニューバーではないですが
関係ありますかね?
メニューハンドルですが、GetMenu APIで取得できました。
ポップアップメニューは、ダミーの親メニューがあって
サブメニューを取得する必要があると思ったのですが
GetSubMenu APIで取得してもNULLが戻ってきてしまいます。
GetMenuだけでいいんですかね?
今から調べてみます。
GetMenu APIで取得したハンドルにGetMenuItemCount APIを実行しても
-1が戻ってきました。
う〜ん。完全に行き詰りました・・・。
IE はもともと、外部から拡張可能な作りになっていますから。
そうでない作りのアプリでは、基本的に不可能と思っていいでしょう。
例えば、ポップアップする必要があるたびに CreatePopupMenu で作っては、その都度破棄しているアプリもあるかもしれません。
そういうアプリでは、任意の時点でメニューハンドルを取得しようとしても、存在しないのですから取得できないでしょうね。
WM_INITMENUPOPUP をフックするとかすれば、可能かもしれませんが…
シャノンさん回答ありがとうございます。
無理そうなんですね・・・。
きっぱりあきらめて違う方法を考えて見ます。
ありがとうございました。
ツイート | ![]() |