我在 winforms 中有一个计时器,用于在我的服务器上查找特定的确定对话框(它在内存不足的第三方应用程序上单击确定,然后重新启动它——没有其他解决方法)。因此,当我远程桌面时,服务器和远程桌面窗口处于活动状态(实际的远程桌面窗口处于活动状态,而不是必须单击 OK 的实际窗口。我可以有一个与好的,它可以工作),程序可以正常工作。它找到OK的窗口,然后点击OK按钮就好了。当我不在远程桌面时,或者当远程桌面窗口未激活(或选择)时,它会找到窗口并找到确定按钮,但无法单击确定按钮。
所以这是我在计时器中使用的点击确定:
Private Sub TimerCloseOK_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerCloseOK.Tick
Dim dialogBoxText As String = "My Program - Application Error"
Dim hwnd As IntPtr = FindWindow("#32770", dialogBoxText)
Dim WindowID As String = hwnd.ToString
Dim buttonTitle As String
buttonTitle = "OK"
Dim dialogButtonHandle As IntPtr = FindWindowEx(hwnd, IntPtr.Zero, "Button", "OK")
If Len(WindowID) > 0 And Integer.Parse(WindowID) <> 0 Then
'CLICK OK
SendMessage(dialogButtonHandle, BM_CLICK, 1, 0)
mbCounter = mbCounter + 1
Application.DoEvents()
lCount.Text = mbCounter
End If
End Sub