📄 subject_50741.htm
字号:
<p>
序号:50741 发表者:hmm 发表日期:2003-08-26 10:41:06
<br>主题:在程序中多次执行外面的一个exe文件,怎样关闭上一次执行窗口?
<br>内容:我需要通过菜单调用ShellExecute多次执行一个exe文件;但每次执行都打开一个新的窗口;如何关闭先前打开的窗口,只显示一个应用窗口?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:爱丽思 回复日期:2003-08-26 10:45:42
<br>内容:第一种:<BR>可以先调用FindWindow去找这个程序的窗体,如果有就激活,如果没有则再启动它。<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>
回复者:iamhere 回复日期:2003-08-26 11:05:45
<br>内容:一般来说,要关闭一个窗口,通常是向其发送WM_CLOSE消息。<BR>象你这种重复执行一个exe文件的情况,不如只执行一次,以后都向其发送自定义消息,而在该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>
回复者:hmm 回复日期:2003-08-26 11:12:28
<br>内容:谢谢alice,可否讲得更详细点?<BR>第一种方法:<BR>我察看msdn,FindWindow的参数lpClassName 不知该如何写?<BR>第二种方法:<BR>ShellExecute获得的是运行过的程序实例,怎样变为新的运行程序实例?比方说,我用记事本打开一个文档,现在要用记事本打开另一个文档。<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>
回复者:爱丽思 回复日期:2003-08-26 11:15:16
<br>内容:就是窗口的标题呀<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>
回复者:hmm 回复日期:2003-08-26 15:09:56
<br>内容:FindWindow的另一参数lpWindowName是窗口的标题,lpClassName也是吗?<BR>找到程序的窗体后,不应是激活,应该是DestroyWindow,然后再调用ShellExecute运行新程序实例,对吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:iamhere 回复日期:2003-08-26 15:15:19
<br>内容:FindWindow第一个参数lpClassName填NULL,第二个参数填窗口标题字符串。<BR><BR>建议向该窗口发送WM_CLOSE消息(当然,要该窗口能够正确响应该消息,而一般的windows窗口都会响应该消息的),而不要使用DestroyWindow,
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hmm 回复日期:2003-08-26 15:37:27
<br>内容:不好意思,请问怎样向exe文件生成的窗口发送消息,并让它响应,该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>
<font color=red>答案被接受</font><br>回复者:iamhere 回复日期:2003-08-26 15:48:36
<br>内容:首先使用FindWindow取得窗口句柄,<BR>然后使用SendMessage向去发送消息,如下所示:<BR><BR>HWND hWnd = FindWindow( NULL , "你执行的的exe窗口标题" );<BR>::SendMessage( hWnd , WM_CLOSE , NULL , NULL );<BR><BR>它如果有对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>
回复者:hmm 回复日期:2003-08-26 16:18:35
<br>内容:多谢 i amhere ,已经搞定!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -