.NETでFindWindowを使うには?

解決


lily  2005-05-08 22:27:44  No: 121510

いつも参考にさせていただいております。
自アプリ以外のアプリを操作したくて、まずウインドウハンドルを取得しなければならないことを知り、過去ログなどを参考に以下のように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です。


lily  2005-05-09 00:11:21  No: 121511

解決できたようです。
.NETではLongはIntegerだということがわかりました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加