基础:我有一个带有嵌入式WebBrowser控件的Windows .NET Form应用程序。它触发下载,打开“保存下载”对话框。我想自动点击“保存”按钮。
我发现了其他StackOverflow问题:Press save button of "File download dialog" of internet explorer via c#但它没有真正的答案。
到目前为止,我所拥有的代码在部署到实际工作站时无法可靠地工作。在调试/ Visual Studio中运行它,它工作正常。在实际的工作站上,有时候“保存”按钮会“点亮”或按下它,就像它被点击一样,但实际上并没有发生任何事情。
这是代码:
Dim dialogHandle = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "#32770", "File Download")
Dim buttonTitle = "&Save"
Dim dialogButtonHandle = FindWindowEx(dialogHandle, IntPtr.Zero, "Button", buttonTitle)
SendMessage(dialogButtonHandle, BM_SETSTATE, 0, 0)
SendMessage(dialogButton, BM_CLICK, 1, 0)
SendMessage(dialogButtonHandle, BM_SETSTATE, 1, 0)
我不知道这是否是在其他窗口中单击按钮的完全100%正确的方式,但它似乎有点工作。也许我发送SendMessage的速度太快了?太慢了?我应该使用带有BM_CLICK等的SendMessage还是其他一些操作?我觉得我90%都在那里......任何帮助都会受到赞赏。
答案 0 :(得分:0)
BM_SETSTATE消息只是让按钮看起来像是按下了,我猜你并不特别在意,只想按下按钮的实际动作。
尝试更改
SendMessage(dialogButtonHandle, BM_SETSTATE, 0, 0)
SendMessage(dialogButton, BM_CLICK, 1, 0)
SendMessage(dialogButtonHandle, BM_SETSTATE, 1, 0)
只是
SendMessage(dialogButtonHandle, BM_CLICK, 1, 0)
请注意对BM_CLICK消息的dialogButtonHandle的更改。