杀进程问题

lixr1353517_2 2006-11-20 06:47:25
有这样一个问题,请大家帮我解决一下:
我在程序里调用一个外部程序(来源不明,没有接口),用的是CreateProcess()执行该程序exe文件,成功调用起来了,问题出在关闭这个外部程序的时候。我用别人介绍的方法,就是利用EnumWindows()函数枚举窗口,并利用该函数的回调函数杀死进程。该回调函数会比对当前所枚举的窗口的进程ID与当初创建的进程的ID是否一致,如果一致就向窗口发送WM_CLOSE消息。
这种方法我以前成功使用过。但是这次我用在这个外部程序上却失败了,我仔细查了下,发现任务管理器中有两个相关进程,而这两个进程名字都与调用的可执行文件名字不同。调试中我还发现CreateProcess时保留的进程ID与这两个相关进程ID都不相同。我猜测是CreateProcess启动了一个进程,该进程又启动了其它进程,而该进程却自杀会被杀了。
我想过用FindWindow(),但痛苦的是这个外部程序创建的是隐藏窗口,我不知道窗口标题是什么。我现在只有一个办法了,就想问问大家能不能有什么办法根据进程名杀死进程,或者除了这个办法还有没有其它办法可以解决我当前的困难?
拜托拜托,谢过谢过!
...全文
254 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
limaolinghu 2006-11-23
  • 打赏
  • 举报
回复
taskkill /F /IM notepad.exe
lixr1353517_2 2006-11-23
  • 打赏
  • 举报
回复
楼上的说法我没有听懂,希望能详细点。
artcpp 2006-11-21
  • 打赏
  • 举报
回复
该进程如自杀,应该可以截获相关消息。该进程又启动一个新进程,则可以列举进程表,加以对比,就知道他启动了什么进程。
shadowac 2006-11-21
  • 打赏
  • 举报
回复
如果只是针对这个问题的话,可以先用一些工具分析一下进程的特点.
比如用spy++分析进程的窗口名,标题等,然后就可以用你的方法杀死
新产生的进程了.
lixr1353517_2 2006-11-21
  • 打赏
  • 举报
回复
急啊,大家帮我想个办法,等了一晚上了。

16,472

社区成员

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

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

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