我正在尝试自动化在特定对话框中输入数据然后提交对话框的过程,并且数据输入部分工作正常,但是当自动输入数据时,Accept 按钮不会像在手动输入期间那样最终启用。
因此,我尝试以多种方式启用该按钮,但它不会激活。
我曾尝试使用 EnableWindow 或使用 SendMessage 发送 WM_ENABLED 消息,但都没有奏效。
这是获取按钮句柄并尝试删除禁用样式的代码(使用 P/INVOKE 的 VB.NET)。我已经使用 Spy++ 验证了以下方法删除了 WS_DISABLED 样式,但该按钮仍显示为禁用。
Private Shared Sub ProceedWithRebuild(ByVal mWindow As IntPtr)
Dim proceedButton As IntPtr
Dim style As Long
proceedButton = FindWindowEx(mWindow, IntPtr.Zero, Nothing, "&Proceed")
style = GetWindowLong(proceedButton, WindowLongFlags.GWL_STYLE)
style = style And (Not WS_DISABLED)
SetWindowLong(proceedButton, WindowLongFlags.GWL_STYLE, CType(style, IntPtr))
UpdateWindow(mWindow)
SendMessage(proceedButton, WM_LBUTTONDOWN, IntPtr.Zero, IntPtr.Zero)
SendMessage(proceedButton, WM_LBUTTONUP, IntPtr.Zero, IntPtr.Zero)
Thread.Sleep(500)
End Sub