環境
Windows XP SP2/Visual Basic 6.0 SP6/WinMX v3.54 beta 4
現在WinMXのウィンドウ(検索、転送等)を操作するプログラムを作っています。ウィンドウハンドル(EnumWindows、EnumChildWindows)、ウィンドウキャプション(GetWindowText)、クラス名(GetClassName)を取得することは可能でした。
ご存知の方もいらっしゃると思いますが、WinMX起動直後は、ネットワークウィンドウがトップウィンドウになっており、タイトルバー直下の他のコマンド(検索、転送、設定、無視等)をクリックすると、それぞれのウィンドウが立ち上がる仕組みになっています。
このように他のコマンドをクリックし、ウィンドウを立ち上げた後であれば、そのウィンドウハンドルなどを取得することは可能ですが、タイトルバー直下のコマンドはコマンドボタンはではなく、ウィンドウハンドルを持っていないようです。事実、http://www.vector.co.jp/soft/win95/prog/se115776.htmlのアプリケーションを使い、ウィンドウハンドルの取得を試みましたが、フォーカスが当たりませんでした。
MX Monitorのように起動直後から操作するものを目指しております。最悪、起動後のやり方でもいいのですが、最終手段として皆様のご意見をお聞きしたいと思いました。どうぞよろしくお願いします。
UWSCを使ってみるべし。
ご回答ありがとうございます。
ただ、外部アプリケーションを使うのは最終手段として考えています。やはり方法はないのでしょうか。
ただ、プログラム内でウィンドウサイズを決めて、座標をクリックすることは考えていますが、カーソルが奪われるので極力避けたいと思っています。
# 回答ではありません。
## WinMX を使った事が無いので、画面のイメージがわかない…。
> ウィンドウハンドルを持っていないようです
ウィンドウレスであっても、たとえばタイトルバーの最小化ボタンや
IE のツールバー上のボタンなどのように、"Accessible Explorer" にて
拾える物であれば、OLEACC.DLL を参照設定して、
1. AccessibleObjectFromPoint API で、指定した座標にある
IAccessible 型のオブジェクトを取得する。
2. accDoDefaultAction メソッドで、そのオブジェクトを[実行]する。
という感じで制御できる可能性がありますね。
上記のツールをダウンロードして試してみましたが、フォーカスを掴むことができませんでした。この件に関しましては諦めます。いつもお力添えありがとうございます。またよろしくお願いします。
ツイート | ![]() |