AppActivateで開いた外部ファイルの位置を取得

解決


らはりへ  2009-06-20 12:22:58  No: 142097  IP: 192.*.*.*

AppActivateでFirefoxを開いてその位置を取得したい。
開く事は出来ました。

取得した座標をクリックしたいのですが画面の位置の取得が出来ません。
よろしくお願いします。

編集 削除
オショウ  2009-06-20 22:12:29  No: 142098  IP: 192.*.*.*

AppActivateに起動する機能は無いので、Shellで起動されたんですか?

と言う前に、VB6? VB.NET?

そうであれば・・・VB6なら・・・
http://support.microsoft.com/kb/242308/ja

※  VB.NETならもう少し簡単かも・・・

これを参考に、起動したアプリのウィンドウハンドルが解れば、その
ウィンドウハンドルで、GetWindowRect APIを呼べば、その表示されて
いるウィンドウの位置が取得できます。

GetWindowRectの使い方はこちら・・・
http://madia.world.coocan.jp/vb/API/GetWindowRect.htm

で、取得した位置から何等かの処理を行いたいようですが・・・
座標をクリックしたい?
要はFireFoxを制御したいと言うことですか?
マウスのエミュレーションをしても思い通りな制御にはならない
かと。SendKeyを使って機能を制御する方法がよいかと・・・

また最終的に何がしたいかで、方法は違ってくる場合があります。

以上。参考まで

編集 削除
らはりへ  2009-06-21 10:39:33  No: 142099  IP: 192.*.*.*

ありがとうございます。
さっそくshell試してみましたらうまく起動出来ました。
環境はvb6です。

>AppActivateに起動する機能は無い
確かにそうですね^^;私の勘違いでした。


変更前のコードは以下の様な感じでした。
Dim rc As Long
Dim PII As PROCESS_INFORMATION
Dim SII As STARTUPINFO
Dim FName As String
'-----------------------------------------------------
'FireFoxを起動する
'-----------------------------------------------------
FName = "C:\Program Files\Mozilla Firefox\firefox.exe"
SII.cb = Len(SII)
rc = CreateProcessLong(FName, 0, 0, 0, 1, NORMAL_PRIORITY_CLASS, 0, 0, SII, PII)

'終了まで待機
      rc = WaitForSingleObject(PII.hProcess, INFINITE)
      rc = CloseHandle(PII.hProcess)

'-----------------------------------------------------
'指定したアプリケーションをアクティブにします。
'(アクティブにしたいアプリケーションのタイトルバーに表示されるタイトルを指定)
'-----------------------------------------------------                               
 AppActivate "Yahoo! JAPAN - Mozilla Firefox"
 sleep (1000)   'アクティブになるまで待つ



ページを開いた後はSetCursorPosやKeybd_Eventでの操作を考えております。
うまく動く場合と変な動きをする場合があるんですが何が問題なのか
調査中です。

編集 削除
らはりへ  2009-06-21 13:03:03  No: 142100  IP: 192.*.*.*

解決していませんでした・・・

Dim rc as Long

On Error Goto Err_Syori
rc = shell("c:\program files\mozzila firefox\firefox.exe",1)
AppActivate rc,true

msgbox "次の処理へ進む準備が出来ました。"



Err_Syori:
if Err.Number = 5 then
    '*******************************************************
    ' Yahooが表示されるまで待って次の操作をさせたいのですが
    ' どうしたらいいのか判らない部分
    '*******************************************************
End iF

編集 削除