Home > IT, Programe > WMI Ping in Free Pascal

WMI Ping in Free Pascal

Ping reprezintă un instrument de rețea ce trimite unui device dintr-o rețea pachete de date, așteptând un răspuns de tip ecou de la acesta.

WMI (Instrumentaţie de Management Windows) este o componentă a sistemului de operare Microsoft Windows şi este implementarea Microsoft WBEM (Web-Based Enterprise Management). WMI poate fi utilizat pentru a automatiza activităţile administrative. WMI se poate utiliza în limbaje de scriptare care au un motor pentru Windows şi care gestionează obiecte ActiveX Microsoft.

Free Pascal este un compilator Pascal pe 32 și 64 biți disponibil pe diverse sisteme de operare. Sintaxa limbajului este compatibilă cu Turbo Pascal și Delphi. Pachetul este disponibil sub o licență GNU modificată.

Am realizat o funcție pentru Free Pascal ce utilizează WMI pentru a testa accesibilitatea unui device din rețea:

Function WmiPing(Const Address: String; Const BufferSize, Timeout: Word): Integer;
 Const WmiUser = '';
 WmiPassword = '';
 WmiComputer = 'localhost';
 WmiFlagForwardOnly = $00000020;
 Var WmiLocator: OLEVariant;
 WmiService : OLEVariant;
 WmiObjectSet : OLEVariant;
 WmiObject : Variant;
 oEnum : ActiveX.IEnumvariant;
 WmiQuery : String[250];
 begin
 Result:= -1;
 CoInitialize(Nil);
 Try
 WmiLocator := ComObj.CreateOleObject('WbemScripting.SWbemLocator');
 WmiService := WmiLocator.ConnectServer(WmiComputer, 'root\CIMV2', WmiUser, WmiPassword);
 WmiQuery := Format('Select * From Win32_PingStatus Where Address=%s And BufferSize=%d And TimeOut=%d', [QuotedStr(Address), BufferSize, Timeout]);
 WmiObjectSet:= WmiService.ExecQuery(WmiQuery, 'WQL', WmiFlagForwardOnly);
 oEnum := IUnknown(WmiObjectSet._NewEnum) As IEnumVariant;
 While oEnum.Next(1, WmiObject, Nil) = 0 Do
 Begin
 Result:= LongInt(WmiObject.Properties_.Item('StatusCode').Value);
 WmiObject:= Unassigned;
 End;
 Finally
 CoUninitialize;
 End;
 end;


Categories: IT, Programe
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: