Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET/获取窗口的WndProc?_Vb.net_Wndproc_Hwnd - Fatal编程技术网

VB.NET/获取窗口的WndProc?

VB.NET/获取窗口的WndProc?,vb.net,wndproc,hwnd,Vb.net,Wndproc,Hwnd,我正在尝试从打开的Windows资源管理器窗口获取WNDPROC。我可以成功获取窗口的句柄,但“GetWindowLongPtr”始终返回“0” 我宣布进入: <DllImport("user32.dll", EntryPoint:="GetWindowLongPtrW")> _ Public Shared Function GetWindowLongPtrW(ByVal hWnd As HandleRef, <MarshalAs(UnmanagedType.I8)&g

我正在尝试从打开的Windows资源管理器窗口获取WNDPROC。我可以成功获取窗口的句柄,但“GetWindowLongPtr”始终返回“0”

我宣布进入:

  <DllImport("user32.dll", EntryPoint:="GetWindowLongPtrW")> _
  Public Shared Function GetWindowLongPtrW(ByVal hWnd As HandleRef, <MarshalAs(UnmanagedType.I8)> ByVal nIndex As Long) As IntPtr

End Function

但是,WNDPROC MSGBOX始终返回0。。。我做错了什么?

GetWindowLongPtrW声明错误,第二个参数是整数。如果使用错误,则必须通过-4才能获得WNDPROC值。而且您忘记了SetLastError,所以您也无法得到一个错误代码来告诉您做错了什么。使用pinvoke.net获得良好的pinvoke声明。@Hans Passant I在声明中添加了“SetLastError”,并且它也返回“0”。命令“Marshal.GetLastWin32Error”在尝试获取WNDPROC后返回“0”。这部分中的错误是:“Dim ist2作为新HandleRef(0,ist)”吗?
Dim ist As IntPtr
    Dim mtm As IntPtr
    Try

        ist = FindWindow("CabinetWClass", vbNullString)
        Dim ist2 As New HandleRef(0, ist)
        MsgBox(ist)
        mtm = GetWindowLongPtrW(ist2, 1)
        MsgBox(mtm)


    Catch ex As Exception
        MsgBox("Erro :(" & vbCrLf & vbCrLf & ex.ToString)
    End Try