タイトル : Re^3: VB上から別のアプリのメニューを操作 投稿日 : 2009/03/27(Fri) 12:27 投稿者 : オショウ
> ご教授有り難うございました。 > 私はプラント設計に携わるもので、VBで関連のプログラムを作成していますが、いわゆるシステム的なことには大変疎いのです。VC++やSPY++など分かりません。頑張れといわれて、有り難いことですが、とっかかりさえさっぱり分かりません。初めての投稿でしたが、ある必要もあり、どなたか例などご提示して教えていただけないでしょうか。 ● APIの説明 ウィンドウハンドル取得<=該当アプリを探す FindWindow関数 http://msdn.microsoft.com/ja-jp/library/cc364634.aspx 子ウィンドウハンドル取得 FindWindowEx関数 http://msdn.microsoft.com/ja-jp/library/cc410853.aspx メッセージの送信 SendMessage関数 http://msdn.microsoft.com/ja-jp/library/cc411022.aspx メッセージの送信 PostMessage関数 http://msdn.microsoft.com/ja-jp/library/cc410952.aspx ● これらをVB6から呼び出すには、Declare宣言する Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long http://www.winapi-database.com/Window/Change/FindWindow.html Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" _ (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _ ByVal lpszClass As String, ByVal lpszWindow As String) As Long http://www.winapi-database.com/Window/Change/FindWindowEx.html Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _ (ByVal hWnd As Long, ByVal MSG As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long http://www.winapi-database.com/Program/Message/SendMessage.html Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" _ (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long http://www.winapi-database.com/Program/Message/PostMessage.html ● ウィンドウメッセージ http://www.winapi-database.com/Message/WM/ どんなメッセージが流れているか・・・ は、その操作したいアプリを起動し、SPY++でメッセージをモニターする ように設定して、マウスで操作すれば、ウィンドウメッセージのログが 取れます。その中から探し出さないと、これ以上の説明はできません。 ● プログラムの流れ 1. FindWindowで、操作したいウィンドウハンドルを得る。 2. FindWindowExで、メニューのコントロールのウィンドウハンドルを得る。 3. SendMessageやPostMessageで、必要なウィンドウメッセージを、メニュー のハンドルに流し込むことで、欲しい動作を行わせる。 (必要があれば、何度もメッセージを送信させる) ※ 操作したいアプリが、誰でも持っているようなものであれば、どんな ウィンドウメッセージが流れているかは、教えてもらえるかもしれま せんが、業務的に固有のものであれば、無理です。 よって、理解し頑張ってもらうしかありません。 ※ そういう仕事をどこかに発注したいのであれば・・・ 相談できるところは多数あると思います。 以上。 |