怎样得到线程ID号?

apao 2002-10-22 07:19:11
已知一个正在运行的进程名称(第三方程序),怎样得到其主线程的id号?
...全文
695 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
apao 2002-12-09
  • 打赏
  • 举报
回复
谢谢各位,明天结帖
Hu0dingX 2002-11-10
  • 打赏
  • 举报
回复
??
xikug 2002-11-05
  • 打赏
  • 举报
回复
别的线程是吧???

好吧:
HWND hWnd = FindWindow(NULL, "计算器") ;
DWORD dwThreadId = GetWindowThreadProcessId(hWnd, NULL) ;

dwThreadID就是"计算器"线程ID了
panch 2002-11-05
  • 打赏
  • 举报
回复
其实只要一个函数就行了!

DWORD dwThreadId=GetProcessIdFromName("NOTEPAD.EXE");
apao 2002-11-04
  • 打赏
  • 举报
回复
u
zhangyilan 2002-10-25
  • 打赏
  • 举报
回复
看看这一篇文章
http://www.codeproject.com/system/ntenumthreads.asp
sunyanzi 2002-10-24
  • 打赏
  • 举报
回复
UP
apao 2002-10-24
  • 打赏
  • 举报
回复
upupup
bendou16 2002-10-23
  • 打赏
  • 举报
回复
EnumProcesses
OpenProcess
EnumProcessModules
zhangyilan 2002-10-23
  • 打赏
  • 举报
回复
#include "stdafx.h"

#include "Tlhelp32.h"
#include <stdio.h>

int main()
{
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32 = {0};
long FindProcessID=-1;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == (HANDLE)-1)
{
printf("\nCreateToolhelp32Snapshot() failed:%d",GetLastError());
return 1;
}
pe32.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hProcessSnap, &pe32))
{
char *strProcessName="Qnbvc Q";
do
{

char *strUpperExeFile=strupr(pe32.szExeFile);
if(strstr(strUpperExeFile,strProcessName))
{
FindProcessID=pe32.th32ProcessID;
break;
}
}
while (Process32Next(hProcessSnap, &pe32));
}
if(FindProcessID>0)
{
char str[200];
sprintf(str,"msdev -p %d",FindProcessID);
printf("%s",str);
//system(str);
}
CloseHandle (hProcessSnap);
return 0;
}

foxustc 2002-10-23
  • 打赏
  • 举报
回复
up一把
foxustc 2002-10-23
  • 打赏
  • 举报
回复
我也想知道
apao 2002-10-23
  • 打赏
  • 举报
回复
有人知道吗?
apao 2002-10-23
  • 打赏
  • 举报
回复
fire_zxv(辉) : 我想要的是一个已经运行的别的程序的主线程ID(现在假设是单线程程序),而不是当前线程ID
fire_zxv 2002-10-23
  • 打赏
  • 举报
回复
AfxGetThread
CWinThread* AfxGetThread( );

Return Value

Pointer to the currently executing thread.

Remarks

Call this function to get a pointer to the CWinThread object representing the currently executing thread. Must be called from within the desired thread.

Example

//Print the current thread ID in the Debug Window
TRACE("Current Thread ID = 0x%X\n", AfxGetThread()->m_nThreadID);

或者这样也可以
CWinThread* pThread = AfxBeginThread((AFX_THREADPROC)ComputeThreadProc, LPVOID(this));

TRACE("Current Thread ID = 0x%X\n", pThread->m_nThreadID);

bendou16 2002-10-23
  • 打赏
  • 举报
回复
不太清楚由进程句柄得到线程id
apao 2002-10-23
  • 打赏
  • 举报
回复
谢谢大家!
zhangyilan(数字通信) :非常感谢,但是你的程序只是得到进程的ID号,那线程的ID号呢?条件放松一点,假设是单线程的。
bendou16(跳动的心) :能详细点吗?谢谢
xuefl66 2002-10-22
  • 打赏
  • 举报
回复
关注中。。。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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