asked on
function _VarToStr(const V: variant): string;
var
Vt: integer;
begin
Vt := VarType(V);
case Vt of
varSmallint,
varInteger : Result := IntToStr(integer(V));
varSingle,
varDouble,
varCurrency : Result := FloatToStr(Double(V));
varDate : Result := VarToStr(V);
varOleStr : Result := WideString(V);
varBoolean : Result := VarToStr(V);
varVariant : Result := VarToStr(Variant(V));
varByte : Result := char(byte(V));
varString : Result := String(V);
varArray : Result := VarArrayToStr(Variant(V));
end;
end;
var
i : integer;
begin
Result := '[';
if (VarType(vArray) and VarArray)=0 then
Result := _VarToStr(vArray)
else
for i := VarArrayLowBound(vArray, 1) to VarArrayHighBound(vArray, 1) do
if i=VarArrayLowBound(vArray, 1) then
Result := Result+_VarToStr(vArray[i])
else
Result := Result+'|'+_VarToStr(vArray[i]);
Result:=Result+']';
end;
function VarStrNull(const V:OleVariant):string; //avoid problems with null strings
begin
Result:='';
if not VarIsNull(V) then
begin
if VarIsArray(V) then
Result:=VarArrayToStr(V)
else
Result:=VarToStr(V);
end;
end;
function GetWMIObject(const objectName: String): IDispatch; //create the Wmi instance
var
chEaten: Integer;
BindCtx: IBindCtx;
Moniker: IMoniker;
begin
OleCheck(CreateBindCtx(0, bindCtx));
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
end;
procedure GetAntiVirusProductInfo;
var
objWMIService : OLEVariant;
colItems : OLEVariant;
colItem : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
begin;
objWMIService := GetWMIObject('winmgmts:\\localhost\root\SecurityCenter2');
colItems := objWMIService.ExecQuery('SELECT * FROM AntiVirusProduct','WQL',0);
oEnum := IUnknown(colItems._NewEnum) as IEnumVariant;
while oEnum.Next(1, colItem, iValue) = 0 do
begin
Writeln(Format('displayName %s',[VarStrNull(colItem.displayName)]));// String
Writeln(Format('instanceGuid %s',[VarStrNull(colItem.instanceGuid)]));// String
Writeln(Format('pathToSignedProductExe %s',[VarStrNull(colItem.pathToSignedProductExe)]));// String
Writeln(Format('pathToSignedReportingExe %s',[VarStrNull(colItem.pathToSignedReportingExe)]));// String
Writeln(Format('productState %s',[VarStrNull(colItem.productState)]));// Uint32
Writeln('');
end;
end;
////SENDING INFO BACK TO MY CLIENT ///
COMMAND_GETAV:
begin
GetAntiVirusProductInfo;
SENDCOMMAND(COMMAND_GETAV,(GetAntiVirusProductInfo)socket);
END;
///recieivng from server///
COMMAND_GETAV: Writeln(Edata);
/// im sure this needs to be Writein(GetAntiVirusProductInfo);
// ??
ASKER
ASKER
ASKER
ASKER
Var
StrList:TStringList;
begin
...
COMMAND_GETAV:
begin
StrList:=TStringList.Create;
StrList.Text:=EData;
flatListBox1.Items.AddString(StrList);
StrList.Free;
end;
ASKER
ASKER
Delphi is the most powerful Object Pascal IDE and component library for cross-platform Native App Development with flexible Cloud services and broad IoT connectivity. It provides powerful VCL controls for Windows 10 and enables FMX development for Windows, Mac and Mobile. Delphi is your choice for ultrafast Enterprise Strong Development™. Look for increased memory for large projects, extended multi-monitor support, improved Object Inspector and much more. Delphi is 5x faster for development and deployment across multiple desktop, mobile, cloud and database platforms including 32-bit and 64-bit Windows 10.
TRUSTED BY
ASKER
Result:=Result+Format('dis
it gives,
comining signed and unsigned types - widend both operands