主要是想實現一個函數,判斷本進程是否是多線程。根據情況 顯示不同的內容。
現在還不知道 待補充。。。
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判斷是否成功了。