隐藏进程的所有窗口(例如 Internet Explorer)
我正在使用 WatiN 在 Internet Explorer 中编写在用户计算机后台运行的操作脚本。 (我知道……哈克)。我可以通过 WatiN 使 Internet Explorer 窗口不显示。但是,在我的脚本过程中,会打开一些 HTML 对话框。我可以使用 User32.dll 中的 P-Invoke ShowWindow 隐藏它们,但当我找到对话框的 HWnd 时,它们仍然会显示一秒钟左右。我的问题是:
有没有办法阻止进程显示任何窗口?
谢谢
I am using WatiN to script actions in Internet Explorer that run in the background of the user's machine. (I know...hacky). I am able through WatiN to make the Internet Explorer window not show. However, during my script, some HTML dialogs are opened. I am able to hide them using the P-Invoke ShowWindow in User32.dll, but they still appear for a second or so while I find the HWnd for the dialog. My question is:
Is there a way to stop a process from showing any windows?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我假设您尝试过 WatiN 中 IE 对象的 Settings 属性上的 AutoCloseDialogs 属性?
一种选择是在不同的用户帐户下运行整个过程。我不确定是什么在调用 WatiN,但 CreateProcessAsUser 默认情况下,Windows API 会将其创建的任何进程放在单独的交互式桌面中,即不是当前用户的桌面中。 这篇博文< /a> 有一些关于从 .net 调用 CreateProcessAsUser 的信息。
I'm assuming you tried the AutoCloseDialogs property on the IE object's Settings property in WatiN?
One option would be to run the whole thing under a different user account. I'm not sure what is invoking WatiN but the CreateProcessAsUser Windows API will, by default, put whatever processes it create's in a separate interactive desktop i.e. not the current user's one. This blog post has some info on calling CreateProcessAsUser from .net.