为什么我在用sendmessage给一个已知句柄的窗体发送wm_close时,总不成功(窗体没反应)(50分)

星空

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么我在用sendmessage给一个已知句柄的窗体发送wm_close时,总不成功(窗体没反应)?
 
如果扑获的窗口句柄和发送的消息都没有错误的话,<br>还存在一个可能性,程序作者重载过WM_CLOSE消息!<br>对WM_CLOSE消息有过滤处理。<br><br>可以试试发送WM_DESTROY消息。<br><br>要看你得目的是什么?如果是想关闭整个程序,既然已经有了<br>窗口句柄,用GetWindowThreadProcessId函数可以取得与此<br>窗口相关的进程ID,不出大的意外,此程序的生死大权就握于你手了!
 
不行。我不关闭整个程序,因为关闭了当前窗口,它会自动弹出另一个窗口(此乃我所要的)。<br>还有没有其他方法?
 
试试使用API,如<br>CloseWindow<br>ShowWindow
 
试试使用WM_QUIT消息
 
Dim WINHWND As Long<br>Dim VAL As Long<br>Global Const WM_CLOSE = &amp;H10<br><br>Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long<br>Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long<br><br>Private Sub Command1_Click()<br>WINHWND = FindWindow(vbNullString, "无标题 - 记事本")<br>If WINHWND = 0 Then MsgBox "找不到窗口"<br>If WINHWND &lt;&gt; 0 Then<br>S2 = SendMessage(WINHWND, WM_CLOSE, 0&amp;, 0&amp;)<br>End If<br>If S2 &lt;&gt; 0 Then MsgBox "关闭失败”"<br>End Sub
 
谁有message的说明文件呀<br>就是都有什么message,比如:WM_CLOSE,还有别的什么呢?
 
to smilboy <br>http://bigluo.tz163.net/download/win32.zip<br>英文的,不过还比较详细!
 
你发给那个窗口呢?说一下好吗?<br>我也发过WM_CLOSE消息的,可以成功啊!
 
我给“计算器”发过WM_CLOSE消息的,可以成功啊!
 
这种问题八成是你的窗口句柄没写对!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部