タイトル | : Re^3: SetParentの子ウインドウのハンドルの取得について |
記事No | : 14357 |
投稿日 | : 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 と識別出来る物が必要ですし、ある程度の前提条件も必要ななるので その辺がこちらでは、解らないので的確な取得方法は決められないかと。
|