目前位置: VCer资源中心 >>> VCer知道

[本帖已阅读1633次 分值0 回复0次] 张贴资源 发回信箱 控制面板

请问:在VC程序中如何结束掉另一个正在运行中的进程?

提供者:lucy 张贴时间:2007-03-09 14:34:33.0 出处:newsmth.net 作者:不祥

请问:在VC程序中如何结束掉另一个正在运行中的进程?(2007-03-09 14:34:33.0)


lucy


 
级别: VCer小兵
头衔: VCer会员

经验: 10
作品: 92
分会: 华北分会
注册: 2007-03-09 10:35:00.0
登录: 2007-05-31 14:40:23.0

标  题: [合集] 请问:在VC程序中如何结束掉另一个正在运行中的进程?

发信站: BBS 水木清华站 (Tue Jan 18 16:40:59 2005), 站内

☆─────────────────────────────────────☆ 

  colorwind (多彩的风) 于  (Mon Jan 17 15:38:24 2005)  提到:

用TerminateProcess()似乎不工作,不知道是不是我调用的不对

请牛人指点一下,谢谢

☆─────────────────────────────────────☆ 

  psistorm (sc心灵风暴) 于  (Mon Jan 17 15:48:39 2005)  提到:

【 在 colorwind (多彩的风) 的大作中提到: 】                                   

: 用TerminateProcess()似乎不工作,不知道是不是我调用的不对                     

: 请牛人指点一下,谢谢                                                         

                                                                               

试试ExitProcess

☆─────────────────────────────────────☆ 

  colorwind (多彩的风) 于  (Mon Jan 17 15:53:03 2005)  提到:

这个好像是结束本程序的啊

我想在运行的程序中结束掉另外一个运行的程序

【 在 psistorm (sc心灵风暴) 的大作中提到: 】                                   

: 试试ExitProcess                                                             

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  colorwind (多彩的风) 于  (Mon Jan 17 15:56:34 2005)  提到:

比如我在pp.exe中,调用某个函数结束掉正在运行的pig.exe

怎么实现啊?

                                                                               

【 在 colorwind (多彩的风) 的大作中提到: 】                                   

: 这个好像是结束本程序的啊                                                     

: 我想在运行的程序中结束掉另外一个运行的程序                                   

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  dongjf (惊喜,不想错过) 于  (Mon Jan 17 15:57:46 2005)  提到:

用得不对,这个函数太霸道,什么都能给你强制中止,所以带来的问题也很多,最好推荐不

要用它。可以采取别的方法让进程终止(让它自已返回)。

【 在 colorwind (多彩的风) 的大作中提到: 】                                   

: 用TerminateProcess()似乎不工作,不知道是不是我调用的不对                     

: 请牛人指点一下,谢谢                                                         

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  colorwind (多彩的风) 于  (Mon Jan 17 16:01:40 2005)  提到:

                                                                               

我现在知道要终止的进程的ID

然后得到了它的句柄hProcess

下面是我调用的语句

                                                                               

TerminateProcess(hProcess,(UINT)lpExitCode);

可是就是结束不掉那个进程啊,郁闷

ExitProcess()比较爽,一下就把自己结束了

除了用TerminateProcess()外,还有那些函数比较好用的?

【 在 dongjf (惊喜,不想错过) 的大作中提到: 】                                 

: 用得不对,这个函数太霸道,什么都能给你强制中止,所以带来的问题也很多,最好推荐

不要用它。可以采取别的方法让进程终止(让它自已返回)。                         

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  psistorm (sc心灵风暴) 于  (Mon Jan 17 16:08:16 2005)  提到:

【 在 colorwind (多彩的风) 的大作中提到: 】                                   

: 我现在知道要终止的进程的ID                                                   

: 然后得到了它的句柄hProcess                                                   

: 下面是我调用的语句                                                           

: ...................

                                                                               

那是不是你的ID有问题阿

☆─────────────────────────────────────☆ 

  colorwind (多彩的风) 于  (Mon Jan 17 16:23:56 2005)  提到:

我用EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded )

得到所有运行当中的进程的ID

然后逐一检查ProcessName

如果ProcessName是我要找的"pig.exe"

则得到它的句柄hProcess

ID应该没有错

句柄是这样得到

HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |

                                  PROCESS_VM_READ,

                                  FALSE, processID );                         

【 在 psistorm (sc心灵风暴) 的大作中提到: 】                                   

: 那是不是你的ID有问题阿                                                       

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  psistorm (sc心灵风暴) 于  (Mon Jan 17 16:33:51 2005)  提到:

【 在 colorwind (多彩的风) 的大作中提到: 】                                   

: 我用EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded )               

: 得到所有运行当中的进程的ID                                                   

: 然后逐一检查ProcessName                                                     

: ...................                                                         

                                                                               

                                                                               

你的OpenProcess的第一个参数|一个PROCESS_TERMINATE就行了吧

☆─────────────────────────────────────☆ 

  colorwind (多彩的风) 于  (Mon Jan 17 17:59:25 2005)  提到:

o 果然,居然还有这个参数,ft了

                                                                               

3q very much                                                                   

【 在 psistorm (sc心灵风暴) 的大作中提到: 】                                   

: 你的OpenProcess的第一个参数|一个PROCESS_TERMINATE就行了吧                   

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Ryx (向牛人学习的菜鸟) 于  (Mon Jan 17 22:28:14 2005)  提到:

找到那个Process得主窗口

PostQuitMessage之,安全有效

【 在 colorwind (多彩的风) 的大作中提到: 】                                   

: 用TerminateProcess()似乎不工作,不知道是不是我调用的不对                     

: 请牛人指点一下,谢谢                                                         

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  andygemini (扫阿姨的垃圾李奇) 于  (Mon Jan 17 23:13:18 2005)  提到:

由processid或hprocess如何得到相应的主窗口了,哪个api

【 在 Ryx (向牛人学习的菜鸟) 的大作中提到: 】                                 

找到那个Process得主窗口

PostQuitMessage之,安全有效

【 在 colorwind (多彩的风) 的大作中提到: 】                                   

: 用TerminateProcess()似乎不工作,不知道是不是我调用的不对                     

: 请牛人指点一下,谢谢                                                         

                                                                               

                                                                               

                                                                               

  moyun (墨韵|君子光而不耀) 于  (Mon Jan 17 23:34:22 2005)  提到:

有一种情况就是,在子线程中无论如何不能直接关掉父线程的……

我有一回犯过这种错误,呵呵

【 在 colorwind (多彩的风) 的大作中提到: 】                                   

: 我用EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded )               

: 得到所有运行当中的进程的ID                                                   

: 然后逐一检查ProcessName                                                 

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/1173422073953.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]
[投票结果]

A: 评分 10 0% (0 票)
B: 评分 5 0% (0 票)
C: 评分 0 0% (0 票)
D: 评分 -5 0% (0 票)
E: 评分 -10 0% (0 票)