boycoder
asked on
code works with button1, but doesnt send via socket
It works on my local machine via button1, however i can't figure out the string i need to send and recieve.
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 CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
fixed it ithink 2 secs
ASKER
outstanding work mate, i cant thankyou enough. may i make another question and you can show me in the same way how to trasnfer a file across, is it the same method?
again, your work is outstanding !!!!!
again, your work is outstanding !!!!!
ASKER
Nothing this guy doesnt know!
ASKER
just a quick Q, instead of recievng the text in the dos,
if i make the format,
COMMAND_GETAV: flatlistbox1.items.add(eda ta) ;
How can i format the listbox so it brings the data back on new lines like in the cmd screen ?
if i make the format,
COMMAND_GETAV: flatlistbox1.items.add(eda
How can i format the listbox so it brings the data back on new lines like in the cmd screen ?
Get the data in a TStringList (it will separate the lines according to line returns characters) and add that to the listbox
Var
StrList:TStringList;
begin
...
COMMAND_GETAV:
begin
StrList:=TStringList.Create;
StrList.Text:=EData;
flatListBox1.Items.AddString(StrList);
StrList.Free;
end;
ASKER
undeclared identifer, addstring..
what should i declare mate?
what should i declare mate?
ASKER
flatListBox1.Items:=(StrLi st);
its ok i did this way mate. cheers!!
its ok i did this way mate. cheers!!
Sorry, it was AddStrings
But assigning is the same as it calls AddStrings (and does also a few things not necessary here)
But assigning is the same as it calls AddStrings (and does also a few things not necessary here)
ASKER
Result:=Result+Format('dis
it gives,
comining signed and unsigned types - widend both operands