2009-05-06 11 views
5

対象アプリはDelphi(Win32ではなく.NET)で書かれており、クローズソースです。別のアプリでプログラムでコンテキストメニュー項目を選択するにはどうすればよいですか?

呼び出すアクションはコピーと呼ばれますが、明らかなキーボードショートカットはありません。

私はターゲットHWNDを見つけて、コンテキストメニューを開きます(WM_RBUTTONDOWN/UPではなく、WM_CONTEXTMENUに応答します)。メニューHWNDから、MN_GETHMENUでメニューハンドルを取得し、私が望むメニュー項目を見つけることができます。私はちょうど項目を "選択"する方法の詳細を知らない。それはメニューが "モードレス"であることを助けません。そのHWNDは所有していないので、多くの隠されたTPUtilWindowウィンドウのどれが本当の所有者かわかりません。そうでなければ、おそらくちょうどそれをWM_COMMANDに送信し、メニューをポップアップしないことが望ましいでしょう。

私はあらゆる種類のハッキングを容易にすることは確かですが、ターゲットプロセスにコードを挿入したくないと思います。

すべての言語で回答できます。

+0

私はそこにいるときにキーボード/マウスからの入力を得ていると思うようにアプリをだますことができます実際に別のアプリから来ている!しかし、今具体的な例は考えられません... – Paggas

+0

あなたはすでにとにかく失われた信頼できないアプリケーションを実行している場合。しかし、それはポイントを上げる - これはXP上で動作します...私はそれがVista/7で動作するだろうか? –

答えて

8

明らかにあなたはWM_RBUTTONDOWN/UPメッセージを送信できます。それは応答します。その場合は、WM_KEYDOWN/UPメッセージも送信できますか?あなたがメニューの構造を知っていて変更されない限り、誰かが下向き矢印Xを何度も押してからEnterを押すことをアプリに伝えてみてください。それは私にとって最も簡単な解決策のようだ...

+0

私はWM_CHARではなくWM_KEYDOWN/UPを送ってくれました。 –

+0

また、私はアクセラレータキーを送りました。 –

+0

OKでもうまくいきます。 (あなたはそれがあったかどうかは言及しなかった) –

関連する問題