技术交流,DH讲解.
最近用这个,虽然网上貌似有,我还是自己翻译一个,累哟.
哈哈.希望朋友帮忙测试,如果使用中发现什么问题,联系我.
好的
来个例子,列举出当前系统总的进程数:
Implementation
Uses
utPerf ;
{$R *.dfm}
Function GetProcessCount( ): Int64 ;
Var
h: PDH_HQUERY ;
c: PDH_HCounter ;
cType: Cardinal ;
value: TPDH_FMT_COUNTERVALUE ;
Begin
Result := -1 ;
If PdhOpenQuery( Nil, 0, h ) <> Error_Success Then
Exit ;
Try
Assert( PdhAddCounter( h, PROCESSCOUNT, 0, c ) = 0 ) ;
If C = 0 Then
Exit ;
PdhCollectQueryData( h ) ;
If PdhGetFormattedCounterValue( c, PDH_FMT_LARGE, c, value ) = 0 Then
Result := value.largeValue ;
Finally
PdhCloseQuery( h ) ;
End ;
End ;
Procedure TForm1.btn1Click( Sender: TObject ) ;
Begin
ShowMessage( IntToStr( GetProcessCount ) ) ;
End ;
更多的相关的API我在使用测试.
打算接下来把 MS的Debug Helper API 给翻译成D的.哈哈.