۱۷-آبان-۱۳۹۱, ۱۱:۵۱:۳۱
یکی از بخشهای مهم ویندوز بخش wmi میباشد که اطلاعات جامعی از منابع سیستم و پروسه ها ... را میتوان از ان دریافت نمود
یکی از چیزهایی که میتوان از این طریق دریافت کرد لیست پروسه ها میباشد
اطلاعات پروسه ای که از این طریق به شما داده میشود در زیر امده است
این کلاس داری متدهای زیر میباشد
AttachDebugger
دیباگر پیشفرض را برای دیباگ یک پروسه اجرا میکند
Create ایجاد پروسه جدید.
GetOwner
نام کاربری و نام دومین یک پروسه را برمیگرداند
GetOwnerSid این متد security identifire یا همان CID یک پروسه را برمیگرداند
SetPriority
تغییر اولویت اجرای پروسه
Terminate
بستن یک پروسه
مثال
http://msdn.microsoft.com/en-us/library/...85%29.aspx
یکی از چیزهایی که میتوان از این طریق دریافت کرد لیست پروسه ها میباشد
اطلاعات پروسه ای که از این طریق به شما داده میشود در زیر امده است
کد:
Win32_Process = CIM_Process record
{
Caption:string;
CommandLine:string;
CreationClassName:string;
CreationDate:datetime;
CSCreationClassName:string;
CSName:string;
Description:string;
ExecutablePath:string;
ExecutionState:uint16;
Handle:string;
HandleCount:uint32;
InstallDate:datetime;
KernelModeTime:uint64;
MaximumWorkingSetSize:uint32;
MinimumWorkingSetSize:uint32;
Name:string;
OSCreationClassName:string;
OSName:string;
OtherOperationCount:uint64;
OtherTransferCount:uint64;
PageFaults:uint32;
PageFileUsage:uint32;
ParentProcessId:uint32;
PeakPageFileUsage:uint32;
PeakVirtualSize:uint64;
PeakWorkingSetSize:uint32;
Priority:uint32;
PrivatePageCount:uint64;
ProcessId:uint32;
QuotaNonPagedPoolUsage:uint32;
QuotaPagedPoolUsage:uint32;
QuotaPeakNonPagedPoolUsage:uint32;
QuotaPeakPagedPoolUsage:uint32;
ReadOperationCount:uint64;
ReadTransferCount:uint64;
SessionId:uint32;
Status:string;
TerminationDate:datetime;
ThreadCount:uint32;
UserModeTime:uint64;
VirtualSize:uint64;
WindowsVersion:string;
WorkingSetSize:uint64;
WriteOperationCount:uint64;
WriteTransferCount:uint64;
};
این کلاس داری متدهای زیر میباشد
AttachDebugger
دیباگر پیشفرض را برای دیباگ یک پروسه اجرا میکند
Create ایجاد پروسه جدید.
GetOwner
نام کاربری و نام دومین یک پروسه را برمیگرداند
GetOwnerSid این متد security identifire یا همان CID یک پروسه را برمیگرداند
SetPriority
تغییر اولویت اجرای پروسه
Terminate
بستن یک پروسه
مثال
کد:
uses
ActiveX,ComObj
procedure GetWin32_proc32;
const
wbemFlagForwardOnly = $00000020;
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObjectSet: OLEVariant;
FWbemObject : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
sngProcessTime: Double;
begin;
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_Process','WQL',wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
while oEnum.Next(1, FWbemObject, iValue) = 0 do
begin
Form1.lst1.Items.Add(Format('Process: %s',[String(FWbemObject.Name)]));
Form1.lst1.Items.Add(Format('Description: %s',[String(FWbemObject.Description)]));
Form1.lst1.Items.Add(Format('OSName: %s',[String(FWbemObject.OSName)]));
Form1.lst1.Items.Add(Format('Priority: %s',[String(FWbemObject.Priority)]));
sngProcessTime := (Int64(FWbemObject.KernelModeTime) + Int64(FWbemObject.UserModeTime)) / 10000000.0;
Form1.lst1.Items.Add(Format('Processor Time: %n',[sngProcessTime]));
Form1.lst1.Items.Add(Format('Process Id: %d',[Integer(FWbemObject.ProcessID)]));
Form1.lst1.Items.Add(Format('Working SetSize: %d',[Int64(FWbemObject.WorkingSetSize)]));
Form1.lst1.Items.Add(Format('Page File Usage: %d',[Int64(FWbemObject.PageFileUsage)]));
Form1.lst1.Items.Add(Format('Page Faults: %d',[Int64(FWbemObject.PageFaults)]));
Form1.lst1.Items.Add('');
FWbemObject:=Unassigned;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
GetWin32_proc32;
end;
http://msdn.microsoft.com/en-us/library/...85%29.aspx