从进程外对话框中检测对话框结果

时间:2009-08-27 14:37:18

标签: c#

我使用c#在.net中开发了一个工具,它有助于使用Team Foundation Server检入和检出特定类型的文件。虽然我的工具确实需要知道当用户响应一旦TFS或“Team Foundation Server”完成合并时弹出的消息对话框,我的工具确实需要知道对话结果是什么。基本上我需要我的工具坐在循环或计时器中等待这个响应,但我不确定如何实现这一点。我用谷歌搜索了它,但似乎没有人需要这样做。

2 个答案:

答案 0 :(得分:0)

您可以使用AutoIt,您可以编写将等待窗口的脚本(使用WinWait),然后执行某些操作。

答案 1 :(得分:0)

您可以使用SetWindowsHookEx安装钩子函数来侦听其他进程中的事件。请注意,这将在系统中运行的每个进程中安装钩子函数,并且必须使用无人(C / C ++)DLL编写。

但是有了这个,你可以使用WH_CBT钩子和WH_MSGFILTER钩子来监听对话框上的按钮点击。

这有点危险,因为您将向当前用户下运行的每个进程注入一个DLL,即您在DLL中编写的代码将在每个进程中加载​​和执行。您还需要担心进程间通信,因为您的钩子代码将在TFS进程中运行,尽管您只需要一个简单的通知就可以使用名为mutexes