VB代码 自动点击 询问框的确认按钮

请问VB如何才能自动点击 其它程序的询问框的“确认”按钮!
例如:
其它正运行的某个程序弹出“询问框”“!工作已经完成请确定是否继续”----窗体内有“确定”和“取消”两个按钮。我要点击“确定”按钮。
(说明:每次弹出的“询问框”句柄都不一样,只有标题”“!工作已经完成请确定是否继续”等字每次相同)
求一个小程序的VB代码!启动后每3分钟查找一次这个“询问框”。然后自动点击“确定”按钮。谢谢!!
晕了哦!!
==================================按cang 2009大哥的去试了!窗口消失了!!但是没达到“确认”的效果。我再看看是否点错了“取消”按钮!谢谢你!!
再这样瞪眼看着-----窗体代码如下
’=================================
Private mn As Integer '声明分
Private Sub Command1_Click()
EnumChildWindows GetDesktopWindow, AddressOf EnumChildProc, ByVal 0&
End Sub

Private Sub Form_Load()
Timer1.Interval = 1000 '自动点击一次“确定”按钮的时间
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
mn = mn + 1
Text3.Text = mn
If mn > 10 Then
'===================开始点击确定按钮
EnumChildWindows GetDesktopWindow, AddressOf EnumChildProc, ByVal 0&
Label1.Caption = "运行正常"
mn = 0
End If
End Sub
'===================
我用无招胜有招搞定了
我用:
hpwnd = FindWindow(vbNullString, "工作已经完成请确定是否继续")'找出变换的句柄hpwnd
再用:
PostMessage hpwnd, WM_KEYDOWN, vbKeyReturn, 0 '向目标句柄发送回车键
顺利通过了!可能弹出的窗口默认是“确定”吧
谢谢 cang 2009!!!

'以下为窗体代码,必须粘贴到窗体里
Private Sub Form_Load()
Timer1.Interval = 60000 '每1分钟自动点击一次“确定”按钮
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
EnumChildWindows GetDesktopWindow, AddressOf EnumChildProc, ByVal 0&
End Sub
'以下为模块代码,必须粘贴到模块里
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetDesktopWindow Lib "user32" () As Long
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim sSave As String, Ret As Long
Ret = GetWindowTextLength(GetParent(hwnd))
sSave = Space(Ret)
GetWindowText GetParent(hwnd), sSave, Ret + 1
If (InStr(sSave, "工作已经完成请确定是否继续") > 0) Then Click_Hnd hwnd, 10, 10
EnumChildProc = 1
End Function
Public Function Click_Hnd(hwnd As Long, X As Long, Y As Long)
Dim lp As Long
lp = Y * 65536 + X
PostMessage hwnd, WM_LBUTTONDOWN, 1, ByVal lp
PostMessage hwnd, WM_LBUTTONUP, 0, ByVal lp
End Function
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-05
我喊没有到哪个地步
旦哪也完全不是不可能的 你就看哈相关的实例教程 在看哈API 就可以慢慢来做了。
相似回答