📄 subject_15997.htm
字号:
<p>
序号:15997 发表者:浩公 发表日期:2002-09-24 15:45:07
<br>主题:用FindWindow找不到隐藏的窗口?
<br>内容:我用FindWindow查一个窗口,正常时可以找到但一旦把这个窗口隐藏就找不到了,何故?怎么才能找到那个隐藏的窗口呢,十分感谢/!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Norton AntivVirus 回复日期:2002-09-24 17:59:25
<br>内容:这个方法不好,我想应该这样;<BR>在程序启动的时候,创建一个内核对象,另外一个程序如果想知道这个程序是否已经运行,只需去打开这个对象,如果成功,表明该程序已经运行,否则就表示没有对象<BR><BR>用CreateMutex,CreateProcess等
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浩公 回复日期:2002-09-25 09:08:31
<br>内容:我想我的意思你没有懂。我是用A.exe 调用B.dll,当满足一定条件时,b.dll里查找A的主窗口,并向之发送WM_CLOSE,,窗口显示时可以的。<BR>但是一旦窗口隐藏起来我就发现A.exe并没有退出,何故?有没有其它更好的方法?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐景周 回复日期:2002-09-25 10:00:57
<br>内容:可试试下面方法:<BR>// 寻找桌面上正运行的所有窗本,并将正显示的存储到数组pWnd[]中<BR>CWnd *pWnd[MAXNUM_RUNWINDOW], *pWndCur;<BR>int nWndNum = 0;<BR><BR> pWnd[nWndNum]= GetWindow(GW_HWNDFIRST);<BR> while (pWnd[nWndNum] != NULL)<BR> {<BR> pWndCur = pWnd[nWndNum];<BR> CString str;<BR> pWndCur->GetWindowText(str);<BR> if (pWndCur->IsWindowVisible() && ! pWndCur->IsIconic() &&! pWndCur->GetParent() &&pWndCur != this &&pWndCur != GetDesktopWindow() &&! str.IsEmpty() &&str != "Program Manager")<BR> {<BR> // 列表数中窗体数加一<BR> nWndNum++;<BR> // 为了安全起见,窗体数不应超过总窗体数!!<BR> nWndNum = min(nWndNum, MAXNUM_RUNWINDOW-1);<BR> }<BR> pWnd[nWndNum] = pWndCur->GetWindow(GW_HWNDNEXT);<BR> }<BR><BR> if (nWndNum)<BR> {<BR> // 将正在运行的所有桌面窗体最小化<BR> for (int i=0; i<nWndNum;++i)<BR> {<BR> pWnd[i]->ShowWindow(SW_SHOWMINNOACTIVE);<BR> m_pWnd[i] = pWnd[i];<BR> }<BR> m_nWndNum = nWndNum;<BR> }<BR> else<BR> {<BR> // 将已运行并被最小化的桌面窗体还原显示<BR> for (int i=m_nWndNum-1; i>=0; --i)<BR> {<BR> if (::IsWindow(m_pWnd[i]->m_hWnd) &&<BR> m_pWnd[i]->IsIconic())<BR> {<BR> m_pWnd[i]->ShowWindow(SW_RESTORE);<BR> m_pWnd[i]->UpdateWindow();<BR> }<BR> }<BR> }<BR> //将控件注册器的窗体提到最前<BR> SetForegroundWindow();<BR><BR>具体可参看下面源码:<BR>http://www.csdn.net/cnshare/soft/8/8041.shtm<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:Norton AntivVirus 回复日期:2002-09-25 10:24:17
<br>内容:没有退出,不一定没有找到该窗口,我认为即便窗口隐藏,也可以用FindWindow找到的,是不是你的WM_CLOSE消息应用程序中有没有处理啊,还可以用自定义的消息,如果收到,就自己去退出程序,先看看有没有收到消息!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浩公 回复日期:2002-09-25 12:42:50
<br>内容:不是,我在没有隐藏窗口时,一切正常即,发送WM_CLOSE,可以关闭窗口,然后我在PreCreateWindow只加了<BR>cs.dwExStyle=WS_EX_TOOLWINDOW;<BR>cs.style=WS_POPUP;<BR>再运行就不行了。没有关闭窗口。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Norton AntivVirus 回复日期:2002-09-25 12:48:42
<br>内容:cs.dwExStyle |= WS_EX_TOOLWINDOW;<BR>cs.style |= WS_POPUP;<BR>试试看!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浩公 回复日期:2002-09-25 12:53:53
<br>内容:我要不显示窗口,这样恐怕不行。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Norton AntivVirus 回复日期:2002-09-25 12:55:59
<br>内容:不显示就<BR>ShowWindow(SW_HIDE);不就可以了吗<BR><BR>不知道你现在使用什么方法Hide窗口?<BR><BR>可以自定义消息的!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浩公 回复日期:2002-09-25 12:59:45
<br>内容:那窗口还不是一闪而过吗?很讨厌。我用CS.STYLE=WS_POPUP,就是想让他从来都不显示窗口。有什么办法吗。不过你要太忙的话,就不打扰你了。<BR>2002-9-25 13:01:39
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -