windows C++ 獲得一個進程的線程數目

來源:互聯網
上載者:User

 

主要是想實現一個函數,判斷本進程是否是多線程。根據情況 顯示不同的內容。

現在還不知道 待補充。。。

mark。

研究了一下 去看雪論壇 找了下資料 有一個樣本 

http://bbs.pediy.com/showthread.php?t=98078

然後 我琢磨了半天 終於寫了一個簡單的樣本

http://bbs.pediy.com/showthread.php?p=1098221#post1098221

 http://baike.baidu.com/view/589425.htm 這裡的也可以。

#include <TlHelp32.h>void TestProcessGetThreadNumber() {  int i = 0;  char Buff[9];  PROCESSENTRY32 pe32;  pe32.dwSize = sizeof(pe32);  HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  if (hProcessSnap == INVALID_HANDLE_VALUE)  {    printf("CreateToolhelp32Snapshot 調用失敗.\n");    return ;  }  BOOL bMore = ::Process32First(hProcessSnap,&pe32);  HANDLE hProcess;  printf("%-30s %-20s %-20s %-15s\n","szExeFile","th32ProcessID","th32ParentProcessID","cntThreads");  while(bMore)  {    printf("%-30s ",pe32.szExeFile);    printf("%-20d ",pe32.th32ProcessID);    printf("%-20d",pe32.th32ParentProcessID);    //顯示進程的線程數    printf("%-15d\n",pe32.cntThreads);    bMore = Process32Next(hProcessSnap,&pe32);    i++;    //pe32.th32ModuleID  }      printf("進程數:%d\n",i);  system("pause");  exit(0);}

 

 

 

今天 還遇到的一個問題是 string.data() 出來,使用atoi()獲得的int整數,範圍 太小了。需要使用atoll 之類的函數,但是沒有。

在 shlwapi.h 庫中 有一個可以使用StrToInt64A

定義為:

LWSTDAPI_(BOOL)     StrToInt64ExA(__in LPCSTR pszString, __in STIF_FLAGS dwFlags, __out LONGLONG * pllRet);

第二個參數 填0 即可。1 為十六進位。第一個 是目標 C字串地址。第三個 參數 是目標 long long的地址。傳回值 當然是true false判斷是否成功了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.