【问题标题】:How to get a notification when windows prompt a dialog (i.e. error message)?当窗口提示对话框(即错误消息)时如何获得通知?
【发布时间】:2016-04-25 17:27:58
【问题描述】:

情况:

用户试图将文件复制到他没有写入权限的目录中, 系统会提示他一个对话框。

要求:

在另一个不相关的过程中,我希望在发生这种情况时得到通知。

可能的解决途径:

  1. 订阅系统事件(如果存在)。
  2. 使用钩子

这甚至可能吗? 两者中的哪一个是首选路径?

执行此操作的代码示例可以挽救生命...

【问题讨论】:

  • 还有一个东西叫访问冲突,我想你说的是访问被拒绝
  • 我怀疑你会在这里得到一个钩子,因为没有明显的理由说明任何应用程序都需要一个
  • 真正想做什么?
  • 我希望能够自动关闭那些提示对话框(识别它们是第一步)

标签: c# c++ .net windows winapi


【解决方案1】:

使用SetWindowsHookEx()SetWinEventHook() 在创建窗口并即将获得焦点时接收通知。然后,您可以分析窗口内容以查看它是否与您要查找的内容相匹配并采取相应措施。

【讨论】:

  • 这似乎是一个不错的方法 - 我应该如何分析窗口内容?基于其风格(假设所有对话框都有相似的风格)|还是你有其他想法?
  • 查看它们的标题,查看它们的子窗口,寻找您感兴趣的文本。
【解决方案2】:

将事件放入 try 块中,如果用户无权访问,它将失败并转到 catch 块,您可以在其中使用生成的异常来显示对话框

【讨论】:

  • 不是我想要的 - 将我的问题编辑得更准确
  • @shon 你指的是什么事件?
  • 原始问题的措辞是在应用程序运行时暗示的。一个 sidw 说明是,这仍然可以验证并登录到数据库中,以获得拒绝访问的编译列表以及它与谁相关
  • 我指的是操作系统事件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多