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);
依旧不行。。= = 到底应该怎么 结束别的进程里面的线程呢?
OpenThread获得的句柄不要DuplicateHandle
SuspendThread是暂时挂起一个线程,不是结束一个线程
结束线程而使进程继续运行会有十分大的几率造成资源泄漏。如果一定要这么做,TerminateThread追问
我知道SuspendThread是挂起。。
关键是我要操作的线程 在另一个进程里。。跟我程序不再一个进程。。
SuspendThread和TerminateThread 都无效啊
#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可以……
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++ 怎么结束 别的进程里面的一个线程?的主要内容,如果未能解决你的问题,请参考以下文章