tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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で、必要なウィンドウメッセージを、メニュー
    のハンドルに流し込むことで、欲しい動作を行わせる。
    (必要があれば、何度もメッセージを送信させる)

※ 操作したいアプリが、誰でも持っているようなものであれば、どんな
  ウィンドウメッセージが流れているかは、教えてもらえるかもしれま
  せんが、業務的に固有のものであれば、無理です。

  よって、理解し頑張ってもらうしかありません。

※ そういう仕事をどこかに発注したいのであれば・・・
  相談できるところは多数あると思います。

以上。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。