如何用程序点另一个程序弹出的对话框的“确定”?

解决方案 »

  1.   

    FindWindow 
    PosMessage
      

  2.   

    具体描述实在太麻烦了。
    网上有很多这两个api的调用例子。你自己到网上搜,如果下载下来还是搞不定,那给我发私信我帮你看啊
      

  3.   


    '先建立一个工程, 里面有一个按扭, 窗口标题随意. 按扭 文本是 "确定" 在确定单击按扭下写一些代码进行验证,
    '将此工程编译, 运行.'以下代码在另一工程中...Option Explicit
    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 Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Const WM_LBUTTONDOWN = &H201
    Private Const WM_LBUTTONUP = &H202
    Private Sub Command1_Click()
      Dim cHwnd As Long
      cHwnd = FindWindow(vbNullString, "Form1")  '将 "Form1" 改为你要发送信息去的窗口的名称.
      
      cHwnd = FindWindowEx(cHwnd, 0, vbNullString, "确定") '确定表示那个窗口中的确定按扭  If cHwnd <> 0 Then
         PostMessage cHwnd, WM_LBUTTONDOWN, 0&, 3 * 2 ^ 16 + 3
         PostMessage cHwnd, WM_LBUTTONUP, 0&, 3 * 2 ^ 16 + 3
         PostMessage cHwnd, WM_LBUTTONDOWN, 0&, 3 * 2 ^ 16 + 3
         PostMessage cHwnd, WM_LBUTTONUP, 0&, 3 * 2 ^ 16 + 3
      End If
    End Sub
      

  4.   

    测试的Form1窗口可以,但按有的程序的窗口标题写了后,不可以
      

  5.   

    有的程序的窗口标题那就是窗口标题写错了.没有找到窗体.Private Sub Command1_Click()
      Dim cHwnd As Long
      cHwnd = FindWindow(vbNullString, "Form1")  '将 "Form1" 改为你要发送信息去的窗口的名称.
      
    '可以在此处验证. 如果 cHwnd = 0 表示,你窗口标题错误.没有找到窗体.  cHwnd = FindWindowEx(cHwnd, 0, vbNullString, "确定") '确定表示那个窗口中的确定按扭
    '这里再一次验证, 如果 cHwnd=0 表示,窗体中没有 标题是 "确定" 的控件.'以上每一个地方的标题都不能错误,如果错误就找不到想要的控件了.  If cHwnd <> 0 Then
         PostMessage cHwnd, WM_LBUTTONDOWN, 0&, 3 * 2 ^ 16 + 3
         PostMessage cHwnd, WM_LBUTTONUP, 0&, 3 * 2 ^ 16 + 3
         PostMessage cHwnd, WM_LBUTTONDOWN, 0&, 3 * 2 ^ 16 + 3
         PostMessage cHwnd, WM_LBUTTONUP, 0&, 3 * 2 ^ 16 + 3
      End If
    End Sub
      

  6.   

    cHwnd = FindWindowEx(cHwnd, 0, vbNullString, "确定") 
    这个没找到