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调用的外部执行程序?的主要内容,如果未能解决你的问题,请参考以下文章