いつも参考にさせていただいております。
自アプリ以外のアプリを操作したくて、まずウインドウハンドルを取得しなければならないことを知り、過去ログなどを参考に以下のようにAPIというものをはじめて使ってみましたがどうしてもうまくいかないので教えていただけたらと思います。電卓を起動させた後、Class名とウインドウタイトルの2つから、電卓のハンドルをそれぞれ取得して比べているつもりです。
[標準モジュール]
' ウインドウの検索
Public Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
[フォームモジュール]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim whd_class As Long
Dim whd_name As Long
whd_class = FindWindow("SciCalc", vbNullString)
whd_name = FindWindow(vbNullString, "電卓")
TextBox1.Text = whd_class
TextBox2.Text = whd_name
End Sub
TextBoxにハンドルを表示して比べてみると、同じハンドルが出力されると思っていたのですがClass名とタイトル名で取ったハンドルでは出力が異なり、さらに電卓は閉じずに続けてButton1をクリックして取得するたびに毎回変化します。
ウインドウハンドルとは、アプリを起動して閉じるまで一定であると思い、動作がおかしいと感じているのですが、誤りがあるのでしょうか。環境はWinXPPro でVisualBasic.NETです。
解決できたようです。
.NETではLongはIntegerだということがわかりました。
ありがとうございました。
ツイート | ![]() |