+ -
当前位置:首页 → 问答吧 → 关于进程线程问题

关于进程线程问题

时间:2011-12-15

来源:互联网

bCreate = CreateProcess(NULL,"TmForever.exe",NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,"TmNationsForever\\",lpStartupInfo,stProcInfo);
创建这个进程之后发现stProcInfo里面的进程句柄0x44 线程句柄0x40

但是我调用
dwThreadId = GetWindowThreadProcessId(hProcess0,&dwProcessId); 
DWORD dwCurrThreadId = ::GetCurrentThreadId ();
hProcess1 = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcessId); 

hThread = OpenThread(THREAD_ALL_ACCESS,FALSE,dwThreadId);
结果hProcess1 = 0x40

  hThread = 0x44

哪里写错了 求解释

作者: flyxkh   发布时间: 2011-12-15

句柄是进程相关的,在创建进程后,新进程和新线程的句柄应该是当前进程的句柄表项,如果你没有关闭新进程和新线程的句柄,则这两个句柄值已存在,下次OpenProcess和OpenThread的返回值不可能相同
你好好检查检查你的逻辑是不是有问题,有没有地方调用了CloseHandle
The handle returned by the OpenProcess function can be used in any function that requires a handle to a process, such as the wait functions, provided the appropriate access rights were requested.

When you are finished with the handle, be sure to close it using the CloseHandle function
你这种情况理论上不存在,你好好检查检查你的逻辑


作者: sky101010ws   发布时间: 2011-12-15

应该不会啊

作者: heksn   发布时间: 2011-12-15

不会是看错了吧.....

作者: csx007700   发布时间: 2011-12-15

GetWindowThreadProcessId用错了
GetWindowThreadProcessId的第一个参数是窗口句柄

作者: Lactoferrin   发布时间: 2011-12-15

热门下载

更多