如何使用VB.Net Winform App知道对话框是警报还是确认或提示?

前端之家收集整理的这篇文章主要介绍了如何使用VB.Net Winform App知道对话框是警报还是确认或提示?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以使用“user32.dll”的“GetForegroundWindow”获取Window句柄,并通过将其类名与“#32770”匹配,我可以检查它是否为对话框.

现在我的问题是我怎么知道这个对话框是警报,确认还是提示对话?

请注意我使用VB.Net在Internet Explorer进程之外工作.

有很多可能的对话框.标准的是MessageBoxshell对话框,如OpenFileDialog,PrintDialog,ColorDialog等.很多很多非标准的程序员,使用本机代码编写 Windows程序的程序员使用资源编辑器创建.由DialogBox()winapi函数显示.

您需要了解有关对话框窗口的更多信息,请使用Spy++ utility.如果它是一个通用对话框,那么您将看到窗口上的每个控件都有一个ID.您可以通过调整GetDlgItem()来在运行时找到它们.如果它们嵌套在另一个子窗口中,则可能需要EnumChildWindows().如果函数失败,则返回IntPtr.Zero,然后您知道您没有要查找的对话框.您还应该调用GetClassName()来仔细检查它是否是您希望找到的控件.

请注意,它永远不会100%准确,程序员倾向于选择非常常见的ID.就像简单地连续编号一样,从1开始.在正确的时间执行此操作,非常有可能显示特定的对话框,这非常重要.

请注意,Microsoft可以轻松破解您的代码.他们不承诺在下一版本的Internet Explorer中保持对话框不变.

并且要注意,最后但并非最不重要的是,程序员往往对此感兴趣,因为他们想要修改文件下载确认提示.选择路径名称自动单击“确定”按钮.当然,恶意软件是一个非常有吸引力的目标,他们已经采取了应对措施来打败这个简单的目标.在以后的IE版本中启用的增强保护模式是另一个反击措施,它会给你带来悸动的头痛.

猜你在找的VB相关文章