我已经成为.NET开发人员已有好几年了,这仍然是我不知道如何正确完成的事情之一.通过Windows窗体和WPF中的属性很容易从任务栏隐藏窗口,但据我所知,这并不能保证(或必然会影响)它从Alt+ ↹Tab对话框中隐藏.我已经看到隐形窗口显示在Alt+中↹Tab,我只是想知道什么是保证窗口永远不会出现(可见或不可见)Alt+ ↹Tab对话框的最佳方法.
更新:请参阅下面我发布的解决方案.我不允许将自己的答案标记为解决方案,但到目前为止,它是唯一有效的解决方案.
更新2:弗朗西·佩诺夫现在有一个看起来很不错的正确解决方案,但我自己没有尝试过.涉及一些Win32,但避免了屏幕外窗口的蹩脚创建.
我正在开发一个应用程序,最终将成为推动WPF应用程序UI测试的API.
在我们正在进行的初始测试的一个点上,我们得到2个Windows安全弹出窗口.我们有一些循环10次的代码,它使用FindWindowByCaption方法获取其中一个弹出窗口的句柄并输入信息并单击确定.
10次中有9次可以正常运行,但我们偶尔会看到看起来像是一场比赛的情况.我的怀疑是,当只有一个窗口打开时,循环开始,而当它输入信息时,第二个窗口打开并窃取焦点; 在此之后它只是无限期地挂起.
我想知道的是,如果有任何方法来获取给定标题的所有窗口句柄,那么我们可以等到2开始循环之前.