vc++ 怎么结束 别的进程里面的一个线程? 15
已经遍历出线程。获得了线程ID和句柄,,然后怎么结束或者挂起呢?SuspendThreadTerminateThread都不行。。百度了半天。。。说是不能获得的句柄不能夸...
已经遍历出线程。获得了线程ID和句柄,,然后怎么结束或者挂起呢?
SuspendThread TerminateThread都不行。。 百度了半天。。。说是不能获得的句柄不能夸进程操作。
然后继续百度 。。又找到了 说 DuplicateHandle之后再SuspendThread 就可以了。。
然后我DuplicateHandle之后 SuspendThread 依旧不行。。
是我DuplicateHandle 没用对。。还是另有别的方法?
DuplicateHandle(GetCurrentProcess(),
tp,//原来的线程句柄
hp,// 线程所在进程的句柄
&tp2,//新的线程句柄0, FALSE,DUPLICATE_SAME_ACCESS) ;
然后
SuspendThread(tp2); TerminateThread(tp2,0);
依旧不行。。= = 到底应该怎么 结束别的进程里面的线程呢? 展开
SuspendThread TerminateThread都不行。。 百度了半天。。。说是不能获得的句柄不能夸进程操作。
然后继续百度 。。又找到了 说 DuplicateHandle之后再SuspendThread 就可以了。。
然后我DuplicateHandle之后 SuspendThread 依旧不行。。
是我DuplicateHandle 没用对。。还是另有别的方法?
DuplicateHandle(GetCurrentProcess(),
tp,//原来的线程句柄
hp,// 线程所在进程的句柄
&tp2,//新的线程句柄0, FALSE,DUPLICATE_SAME_ACCESS) ;
然后
SuspendThread(tp2); TerminateThread(tp2,0);
依旧不行。。= = 到底应该怎么 结束别的进程里面的线程呢? 展开
2个回答
展开全部
GetCurrentThread获得的句柄才要DuplicateHandle
OpenThread获得的句柄不要DuplicateHandle
SuspendThread是暂时挂起一个线程,不是结束一个线程
结束线程而使进程继续运行会有十分大的几率造成资源泄漏。如果一定要这么做,TerminateThread
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可以……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询