我使用的是delphi 2010,有無論如何通過delphi函數或windows api知道項目的運行線程數?正在運行的線程數
正在運行的線程數
回答
可以使用CreateToolhelp32Snapshot
功能與TH32CS_SNAPTHREAD
標誌
看到這個代碼。
uses
PsAPI,
TlHelp32,
Windows,
SysUtils;
function GetTThreadsCount(PID:Cardinal): Integer;
var
SnapProcHandle: THandle;
NextProc : Boolean;
TThreadEntry : TThreadEntry32;
Proceed : Boolean;
begin
Result:=0;
SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); //Takes a snapshot of the all threads
Proceed := (SnapProcHandle <> INVALID_HANDLE_VALUE);
if Proceed then
try
TThreadEntry.dwSize := SizeOf(TThreadEntry);
NextProc := Thread32First(SnapProcHandle, TThreadEntry);//get the first Thread
while NextProc do
begin
if TThreadEntry.th32OwnerProcessID = PID then //Check the owner Pid against the PID requested
Inc(Result);
NextProc := Thread32Next(SnapProcHandle, TThreadEntry);//get the Next Thread
end;
finally
CloseHandle(SnapProcHandle);//Close the Handle
end;
end;
並以這種方式調用,使用GetCurrentProcessId
功能至極檢索應用程序的PID(進程標識符)。
Var
Num :integer;
begin
Num:=GetTThreadsCount(GetCurrentProcessId);
end;
這是一種矯枉過正的計數,但CreateToolhelp32Snapshot
其次是Thread32First
和Thread32Next
應該做的工作。
參見枚舉進程的線程的示例代碼here。
使用WMI可以獲得System中的進程列表runninig以及有關進程的所有信息。您必須使用Win32_process類。
這個類包括方法THREADCOUNT:
······································· ················
ThreadCount
進程中的活動線程數。指令是處理器中的基本執行單元,線程是執行指令的對象。每個正在運行的進程至少有一個線程。 ································································································· ··········
Here(我的網站上),你可以找到關於這個主題的資源。
(1)VProcess;應用程序使用GLibWMI Library來檢索所有正在運行的進程及其相關信息。 ThreadCount包含在此信息中。該項目是免費的,並且包含源代碼(您可以查看並評估)。
(2)您也可以下載GLibWMI,看看成分TProcessInfo,讓您流程的所有信息(這是對VProcess使用)。這個庫是免費的,源代碼是可用的。你可以看到它並評估代碼。查看測試此組件的演示。
我希望這對你很有用。
問候。
- 1. Python正在運行線程
- 2. 停止正在運行的線程
- 3. Redrawwindow正在運行的線程
- 4. 正在按順序運行的線程
- 5. Java線程:正在運行的JVM
- 6. 中斷正在運行的線程
- 7. 訪問正在運行的線程
- 8. Elasticsearch太多正在運行的線程
- 9. 線程運行不正常
- 10. 終止正在運行的線程C++的std ::線程
- 11. 同時Swing GUI的正在運行的線程運行
- 12. 停止並用新線程替換正在運行的線程
- 13. 正在運行線程狀態?
- 14. python停止線程正在運行
- 15. ASIHTTP:addOperation當其他線程正在運行
- 16. 在類和正在運行的線程之間傳遞數據
- 17. Java executorsevice正在關閉,即使它的線程正在運行
- 18. 長線運行正在主線程上執行
- 19. 如何將數據傳遞到正在運行的線程
- 20. 如何控制ThreadPoolTaskExecutor中正在運行的線程數量?
- 21. 如何計算正在運行的線程數(pthreads)?
- 22. Java線程對象vs正在運行線程
- 23. 在Xamarin Studio中查看進程的正在運行的線程
- 24. 運行的線程在C#
- 25. 如何在Android進程中獲取正在運行的線程?
- 26. 正確終止正在運行的線程,其「作品」
- 27. python 2.7線程沒有正確運行
- 28. 在正在運行的線程內設置變量以停止線程
- 29. 在Midlet中使用線程:如何偵聽正在運行的線程?
- 30. 在類函數中運行線程
感謝您的回覆。 – lmengyew 2010-09-28 04:55:58