0

使用 Spy++ 我一直在尝试用我自己的程序控制外部程序上的表单按钮..在此处输入图像描述

图片显示了我试图模仿的控件,下面是我的以下代码......

    Dim hWnd As IntPtr = FindWindow(vbNullString, ListView4.SelectedItems(0).SubItems(3).Text)
    If hWnd.Equals(IntPtr.Zero) Then
        Return
    End If
    Dim hWndButton As IntPtr = _
    FindWindowEx(hWnd, IntPtr.Zero, "Button", "Load Settings")
    If hWndButton.Equals(IntPtr.Zero) Then
        Return
    End If

但是,当我运行代码时没有任何反应。一种可能性是我正在抓取的窗口名称是错误的,但如果不是这种情况,我的代码是否正确?

4

1 回答 1

1

好吧,正如亚历克斯指出的那样,我实际上并没有启动按钮按下..现在他指出我能够修复我的代码..这是我现在使用的:

Private Declare Auto Function FindWindow Lib "user32.dll" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String _
) As IntPtr

Private Declare Auto Function FindWindowEx Lib "user32.dll" ( _
ByVal hwndParent As IntPtr, _
ByVal hwndChildAfter As IntPtr, _
ByVal lpszClass As String, _
ByVal lpszWindow As String _
) As IntPtr

Declare Auto Function SendMessage Lib "user32" (ByVal hwnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
Private Const BM_CLICK = &HF5


    Dim hwndParent As Long = FindWindow(vbNullString, ListView4.SelectedItems(0).SubItems(3).Text)
    Debug.Print("findwindow: " & hwndParent)
    Dim hwndButton As Long = FindWindowEx(hwndParent, IntPtr.Zero, "Button", "Save as")
    Debug.Print("OK: " & hwndButton)
    hwndButton = SendMessage(hwndButton, BM_CLICK, 0, 0)
    Debug.Print("Clicked: " & hwndButton)
于 2014-02-10T05:54:33.957 回答