读书人

:小弟我想关闭在程序中弹出的MsgBox,关

发布时间: 2012-01-30 21:15:58 作者: rapoo

求助:我想关闭在程序中弹出的MsgBox,关键是怎么得到这个MsgBox的hWnd
要求:
我只想关掉我写的程序中弹出的窗口(我的程序不一定运行在最前!弹出窗口是不定时出现的一个MSGBOX,我用timer每秒检查一次,如果有这类窗口就关掉.).

那么,怎么准确找到这个窗口的hWnd,或者是有其他办法呢?

我是用FindWindow + SendMessage 试过,当程序不在最前的时候就不能关掉弹出窗口了.

(请高手指教! 分数不多,显丑了!)

[解决办法]

SendMessage 有很多种
WM_COMMAND
BM_CLICK
WM_KEYDOWN+WM_KEYUP
都可以实现单击按钮。

监视msgbox的操作可以用timer、hook。
[解决办法]
最好用监视shell消息
[解决办法]
Public Declare Function GetParent Lib "user32 " Alias "GetParent " (ByVal hwnd As Long) As Long

获取父窗口句柄。判断是否和你的程序句柄一样
[解决办法]
'恭喜楼主找到了返回程序路径以及名字带扩展名
Public Function GetPath(ByVal hwnd As Long) As String
Dim hProcess As Long
Dim ProcID As Long
Dim mModules(1 To 200) As Long
Dim cbNeed As Long
Dim ModuleName As String
Dim nSize As Long
Dim lRet As Long
GetWindowThreadProcessId hwnd, ProcID
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcID)
lRet = EnumProcessModules(hProcess, mModules(1), 200, cbNeed)
If lRet <> 0 Then
ModuleName = Space(MAX_PATH)
nSize = 500
lRet = GetModuleFileNameExA(hProcess, mModules(1), ModuleName, nSize)
GetPath = Left(ModuleName, lRet)
End If
lRet = CloseHandle(hProcess)
End Function

读书人网 >VB

热点推荐