已知一线程ID, ]请问如何得到该线程的句柄?

解决方案 »

  1.   

    OpenThread(THREAD_ALL_ACCESS,FALSE,dwThreadId);
      

  2.   

    DWORD dwThreadID = GetCurrentThreadId();
        DWORD dwProcessID = GetCurrentProcessId();
        printf( "ProcessId: %X  ThreadId: %X\n", dwProcessID, dwThreadID );    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID );
        if ( !hProcess )
        {
            printf( "unable to open process\n" );
            return 0;
        }    // Show OpenThread()
        HANDLE hThread = OpenThread( THREAD_ALL_ACCESS, FALSE, dwThreadID );
        printf( "hProcess: %IX  hThread: %IX\n", hProcess, hThread );
      

  3.   

    我已经取到dwThreadId, 但使用 OpenThread(THREAD_ALL_ACCESS,FALSE,dwThreadId);
    得到的句柄是NULL, 这是为什么?
      

  4.   

    通常是没有权限~~
    你可以 OpenThread失败后,用GetLastError看看是什么原因。
      

  5.   

    可以用FormatMessage,或者用VC自带的工具Error Lookup。
      

  6.   

    我的目的是取取当前顶层窗口对应的进程ID或者名称?
    而我现在只能取到其中的一个进程ID.
    如果能直接取进程ID就更好了.
      

  7.   

    dwThreadId = GetWindowThreadProcessId(HWND hWnd, LPDWORD lpdwProcessId)
      

  8.   

    GetWindowThreadProcessId可以取到窗口对应的进程ID。
      

  9.   

    GetWindowThreadProcessId返回的是线程ID,进程ID在 lpdwProcessId