FindWindowEX无法正确获取子窗口的句杯
以下是vb .net 的代码:
- VB.NET code
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 SubEnd Class
运行结果是:
657122---8976488743927416536
前面657122是Browser.exe 的句柄, 这个是正确的, 但是用 FindWindowEX 查找子窗口的句柄得到的是一串很多的数字8976488743927416536, 为什么会这样?
[解决办法]
- VB code
lngHwnd = FindWindow(vbNullString, "Browser")lngCHwnd = FindWindowEx(lngHwnd, 0,vbNullString,"Internet Explorer_Server")
[解决办法]
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位了?