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

タイトル Re^3: SetParentの子ウインドウのハンドルの取得について
投稿日: 2010/01/08(Fri) 07:26
投稿者花ちゃん
> >花ちゃん様
>  FindWindowではトップレベルウインドウの検索しか行えず、SetParentの子ウインドウ
>  は検索できないようでした。

FindWindowで取得できると言いましたっけ。

FindWindow は、旧タイプなので FindWindowEx を使用すれば
FindWindowEx でも子ウインドウは検索できますよ。(条件させ揃えば)

Private Declare Function FindWindowEx Lib "user32" Alias _
    "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
    ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Sub Command1_Click()
    Dim hTargetWindow As Long
    Dim hChildWindow  As Long
    'ウインドウのハンドルを取得
    hTargetWindow = FindWindowEx(0, 0, vbNullString, "TestForm1")
    If hTargetWindow = 0 Then Exit Sub
    '子ウインドウのハンドルを取得
    hChildWindow = FindWindowEx(hTargetWindow, 0, vbNullString, "TestForm2")
    Label1.Caption = "TestForm2 のハンドルは:" & hChildWindow
End Sub
http://hanatyan.sakura.ne.jp/bbs_gif/20100107-2.gif

キャプションタイトルはどうなっていますか?
Form1 や Form2 と識別できる何かがありますか?
Form1 の起動はどのようにしているのですか、その時にハンドルは取得できませんか?
その辺が解らないと取得する方法が決められないのでは。

 下記は、直接 Form2 のハンドルを取得しております。(こちらも前提条件があります)
 http://hanatyan.sakura.ne.jp/bbs_gif/20100107-1.gif

このように色々取得する方法がありますが、No.14351 にも書いておりますが、
Form1 や Form2 と識別出来る物が必要ですし、ある程度の前提条件も必要ななるので
その辺がこちらでは、解らないので的確な取得方法は決められないかと。

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

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