MFC中如何关闭ShellExecute调用的外部执行程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中如何关闭ShellExecute调用的外部执行程序?相关的知识,希望对你有一定的参考价值。

我用ShellExecute调用了一个外部exe的可执行程序,想点击一个按钮,做出响应随时可以关闭这个exe程序,请问有什么办法?

ShellExecute是一个函数,他无法返回被启动应用的句柄,也就是说你没法通过他的返回值去关闭外部应用。你可以试试CreateProcess函数,他会返回你启动程序的句柄,后面你可以通过这个句柄来结束这个应用。
或者使用ShellExecute,但是你需要使用进程枚举或者窗口枚举,找到你启动的应用的入口,来结束。
参考技术A HWND TheWindow;

TheWindow = ::FindWindow( NULL, "你的exe的名称" );
SendMessage(TheWindow,WM_SYSCOMMAND,SC_CLOSE,NULL);
这个可以关闭桌面的任何显示窗口的程序
参考技术B 找到那个窗口的句柄,然后发送关闭消息
SendMessage(hWnd,WM_CLOSE,0,0);
参考技术C 调用TerminateProcess,或者SendMessage发送WM_CLOSE 参考技术D 可以用FindWindow跟OpenProcess就可以了

关于MFC中调用外部程序

参考技术A 方法一,先调用CMD然后执行命令
ShellExecute(NULL,"open","cmd.exe",NULL,NULL,SW_SHOWNORMAL);
指定为桌面的代码也给你了
ShellExecute(NULL,"open","cmd.exe",NULL,"C://Documents
and
Settings//****//桌面",SW_SHOWNORMAL);
方法二,直接调用程序
ShellExecute(NULL,"open","c://Documents
and
Settings//****//桌面//daycount.exe",NULL,NULL,SW_SHOWNORMAL);
*****是我的计算机名,不好意思隐藏了~

以上是关于MFC中如何关闭ShellExecute调用的外部执行程序?的主要内容,如果未能解决你的问题,请参考以下文章

MFC 打开外部EXE文件的三种方法

MFC编程的时候怎么打开一个程序的同时关闭当前程序?

MFC 中如何点击一个按钮,则主窗口关闭,在重新加载打开

用ShellExecute调用外部程序出现的程序无法正常打开的错误!

如何从 mfc 应用程序调用 IE 或任何其他浏览器?

ShellExecute调用外部程序无效,是否哪里写错了?