使用ShellExecute打开了一个程序,怎样关闭他?

FiveRedStar 2006-04-14 09:26:50
HINSTANCE mIn = ::ShellExecute(NULL,"","client.exe",NULL,"",1);
关?
...全文
543 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
3LegsCat 2006-04-14
  • 打赏
  • 举报
回复
用ShellExcute创建的进程并不是你程序的子进程,可以通过枚举窗口的方法得到程序主窗口,然后发WM_QUIT
老程序员 2006-04-14
  • 打赏
  • 举报
回复
返回的不是HINSTANCE的
因为你不知道系统所分配的HINSTACE所以要枚举
菜牛 2006-04-14
  • 打赏
  • 举报
回复
在Win32下面,这个HINSTANCE返回值在小于32的时候表示错误代码,其余没有意义。
FiveRedStar 2006-04-14
  • 打赏
  • 举报
回复
还需要枚举呀,我返回时有HINSTANCE呀.
菜牛 2006-04-14
  • 打赏
  • 举报
回复
ShellExecute打开的是一个单独的进程,所以关闭它也和关闭普通进程一样,用EnumProcesses枚举进程列表,用OpenProcess打开进程句柄获取信息,逐个判断是否你需要关闭的进程,然后TerminateProcess关闭之。
FiveRedStar 2006-04-14
  • 打赏
  • 举报
回复
兄弟,不对呀.
HINSTANCE mIn = ::ShellExecute(NULL,"","client.exe",NULL,"",1);
BOOL b = ::TerminateProcess(mIn,0);
DWORD err = ::GetLastError();
错误是句柄无效.


lixiaosan 2006-04-14
  • 打赏
  • 举报
回复
CreateProcess
TerminateProcess
firmbird 2006-04-14
  • 打赏
  • 举报
回复
TerminateProcess

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧