vc++ 怎么结束 别的进程里面的一个线程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc++ 怎么结束 别的进程里面的一个线程?相关的知识,希望对你有一定的参考价值。

已经遍历出线程。获得了线程ID和句柄,,然后怎么结束或者挂起呢?
SuspendThread TerminateThread都不行。。 百度了半天。。。说是不能获得的句柄不能夸进程操作。

然后继续百度 。。又找到了 说 DuplicateHandle之后再SuspendThread 就可以了。。
然后我DuplicateHandle之后 SuspendThread 依旧不行。。

是我DuplicateHandle 没用对。。还是另有别的方法?

DuplicateHandle(GetCurrentProcess(),
tp,//原来的线程句柄
hp,// 线程所在进程的句柄
&tp2,//新的线程句柄0, FALSE,DUPLICATE_SAME_ACCESS) ;

然后
SuspendThread(tp2); TerminateThread(tp2,0);

依旧不行。。= = 到底应该怎么 结束别的进程里面的线程呢?

GetCurrentThread获得的句柄才要DuplicateHandle
OpenThread获得的句柄不要DuplicateHandle

SuspendThread是暂时挂起一个线程,不是结束一个线程

结束线程而使进程继续运行会有十分大的几率造成资源泄漏。如果一定要这么做,TerminateThread追问

我知道SuspendThread是挂起。。
关键是我要操作的线程 在另一个进程里。。跟我程序不再一个进程。。
SuspendThread和TerminateThread 都无效啊

追答#include <windows.h>
#include <stdio.h>

int main() 

    for(;;) 
        printf("my thread id is %d\\n", GetCurrentThreadId());
        Sleep(700);
    


#include <windows.h>
#include <stdio.h>

int main() 

    int tid;
    HANDLE ht;
    puts("input thread id");
    scanf("%d", &tid);
    ht = OpenThread(THREAD_SUSPEND_RESUME, FALSE, tid);
    SuspendThread(ht);

我用OpenThread可以……

参考技术A 第1个参数 源线程所在进程句柄
2 源线程句柄
3 要复制给目标进程的句柄

win7结束进程 时,提示“拒绝访问”“没有此任务的实例运行”怎么办?

开发了个程序,创建了一个进程,但是杀不掉了,在任务管理器里面 右键--结束进程,提示“拒绝访问”,或者“没有此任务实例运行”

技术分享图片

怎么办?

直接给答案:PCHunter

具体方法:

1.打开PCHunter,在进程选项卡下面可以找到无法结束的进程,右键--强制结束,失败(这儿效果跟任务管理器下的结束时一样的)

2.这时候 右键--查看进程线程 ,然后将所有的线程给杀光光,再出来到进程选项卡下结束进程,OK

我用了整整一天半才实现,这一天半我杀不掉进程重启电脑十几次,哎

当然进程杀不死这个代表我的代码有问题,重点考虑的方向就是有通讯的线程一直在等待通讯,我还在查

 

下面是网上搜索的其他方法:

1.cmd -- tasklist--taskkill /im  进程名 /f  ,经过验证无效

2.任务管理器-进程上右键--转到服务,先结束对应的服务,呵呵呵,我都不知道我的进程对应的是啥服务(其实在任务管理器-性能-资源监视器下可以查看进程对应的服务)

3.cmd -- ntsd -c q -p 进程pid    ,验证无效

4.任务管理器--查看--映像路径列--找到进程对应的文件所在目录,右键进程文件---360接触占用,解除失败

5.cmd -- time /t(查看时间) --  at 15:34 /interactive taskmgr.exe(时间增加一分钟),验证无效

6.使用工具 IceSword(冰刃),win7-64没有用

7.使用工具 xueTr ,win7-64没有用(网上所有版本都没有用,我一个一个的下载验证的)

以上是关于vc++ 怎么结束 别的进程里面的一个线程?的主要内容,如果未能解决你的问题,请参考以下文章

VC6.0的程序结束后进程不自动结束,如何解决?

软件打开不显示但进程里面有怎么处理

软件打开不显示但进程里面有怎么处理?

java老大问我怎么停止一个线程,我上来就是一个stop,不为别的,就是玩

为啥运行程序的时候不能干别的

多线程入门