zoukankan      html  css  js  c++  java
  • [转] 获取进程的主线程ID

    #ifndef MAKEULONGLONG
    #define MAKEULONGLONG(ldw, hdw) ((ULONGLONG(hdw) << 32) | ((ldw) & 0xFFFFFFFF))
    #endif
      
    #ifndef MAXULONGLONG
    #define MAXULONGLONG ((ULONGLONG)~((ULONGLONG)0))
    #endif
      
    bool CloseProcessMainThread(DWORD dwProcID)
    {
      DWORD dwMainThreadID = 0;
      ULONGLONG ullMinCreateTime = MAXULONGLONG;
      
      HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
      if (hThreadSnap != INVALID_HANDLE_VALUE) {
        THREADENTRY32 th32;
        th32.dwSize = sizeof(THREADENTRY32);
        BOOL bOK = TRUE;
        for (bOK = Thread32First(hThreadSnap, &th32); bOK;
             bOK = Thread32Next(hThreadSnap, &th32)) {
          if (th32.th32OwnerProcessID == dwProcID) {
            HANDLE hThread = OpenThread(THREAD_QUERY_INFORMATION,
                                        TRUE, th32.th32ThreadID);
            if (hThread) {
              FILETIME afTimes[4] = {0};
              if (GetThreadTimes(hThread,
                                 &afTimes[0], &afTimes[1], &afTimes[2], &afTimes[3])) {
                ULONGLONG ullTest = MAKEULONGLONG(afTimes[0].dwLowDateTime,
                                                  afTimes[0].dwHighDateTime);
                if (ullTest && ullTest < ullMinCreateTime) {
                  ullMinCreateTime = ullTest;
                  dwMainThreadID = th32.th32ThreadID; // let it be main... :)
                }
              }
              CloseHandle(hThread);
            }
          }
        }
    #ifndef UNDER_CE
        CloseHandle(hThreadSnap);
    #else
        CloseToolhelp32Snapshot(hThreadSnap);
    #endif
      }
      
      if (dwMainThreadID) {
        PostThreadMessage(dwMainThreadID, WM_QUIT, 0, 0); // close your eyes...
      }
      
      return (0 != dwMainThreadID);
    }
    

      



    http://www.codeproject.com/Questions/78801/How-to-get-the-main-thread-ID-of-a-process-known-b
  • 相关阅读:
    OTA JAR和JAD的mime不同
    document.getElementById('selCatalog').remove(i)突然无效???!
    判断WAP1.1和WAP2.0并解析为wml或xhtml
    IE和firefox下显示html内容
    unixrisk tip
    unixftp windows
    unixstdin/stdout/stderr
    峰鸟摄影
    linuxgrep commond
    unixtutorial(recommended)
  • 原文地址:https://www.cnblogs.com/moher/p/3082175.html
Copyright © 2011-2022 走看看