首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

FindWindowEX没法正确获取子窗口的句杯

2013-01-07 
FindWindowEX无法正确获取子窗口的句杯以下是vb .net 的代码:Public Class Form1Private Declare Function

FindWindowEX无法正确获取子窗口的句杯
以下是vb .net 的代码:


Public Class Form1
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    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 Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim lngHwnd As Long
        Dim lngCHwnd As Long

        lngHwnd = FindWindow(vbNullString, "Browser")
        lngCHwnd = FindWindowEx(lngHwnd, 0, "Internet Explorer_Server", vbNullString)

        Debug.WriteLine(lngHwnd & "---" & lngCHwnd)
    End Sub
End Class


运行结果是:
657122---8976488743927416536

前面657122是Browser.exe 的句柄, 这个是正确的, 但是用 FindWindowEX 查找子窗口的句柄得到的是一串很多的数字8976488743927416536, 为什么会这样?

[解决办法]

lngHwnd = FindWindow(vbNullString, "Browser")
lngCHwnd = FindWindowEx(lngHwnd, 0,vbNullString,"Internet Explorer_Server")


有点疑问:
1、我不知道你的Browser到底是不是父窗体的类名还是Caption,反正这个位置该设置Caption属性才对

[解决办法]
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    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

不知道,红色部分的声明,在。net里面怎么规定的,看着不一样,是不是,long被升级成64位了?

热点排行