怎样自动关闭其它程序弹出的对话框?该怎么处理

怎样自动关闭其它程序弹出的对话框?
需求:检查桌面上有无弹出的对话框,如果一个对话框已经弹出若干时间(比如20秒)而没有关闭,就把它关掉。
使用vbscript或vb.net,也可以调用windows API。

我的思路是:遍历桌面上所有的对话框,把句柄和时间保存到变量中,如果发现该句柄在20秒前已经保存过,则发送消息把该对话框关掉。

现在就是不知道怎样实现:
1、遍历桌面上所有的对话框
2、发送消息关闭对话框

盼解答。

------解决方案--------------------
取得句柄就可关闭
iRet = PostMessage(hwnd, WM_CLOSE, 0, 0&) '关闭

遍历桌面上所有的对话框,不如直接判断窗口句柄......
------解决方案--------------------
1,遍历桌面上所有的对话框用EnumWindows加上用GetWindowLong判断是否存在WM_EX_DLGMODALFRAME模式,不知是否可以
------解决方案--------------------
如果是模式对话框,怎么遍历?
------解决方案--------------------
我觉得还是Hook到生成消息对话框的消息,生成了消息对话框就开始计时,20秒后发送关闭消息给它就是了。问题的关键在于生成消息提示框的消息类型是什么,知道了消息类型,就能完成这个功能。