Avatar of boycoder
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);
// ??

Open in new window

Delphi

Avatar of undefined
Last Comment
Emmanuel PASQUIER
ASKER CERTIFIED SOLUTION
Avatar of Emmanuel PASQUIER
Emmanuel PASQUIER
Flag of France image

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of boycoder
boycoder

ASKER

CHEERS fror help mate, but on

   Result:=Result+Format('displayName                    %s',[VarStrNull(colItem.displayName)]))+#13#10; // add ret line

it gives,

comining signed and unsigned types - widend both operands
Avatar of boycoder
boycoder

ASKER

fixed it ithink 2 secs
Avatar of boycoder
boycoder

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 !!!!!
Avatar of boycoder
boycoder

ASKER

Nothing this guy doesnt know!
Avatar of boycoder
boycoder

ASKER

just a quick Q, instead of recievng the text in the dos,
if i make the format,

COMMAND_GETAV:                 flatlistbox1.items.add(edata) ;

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;

Open in new window

Avatar of boycoder
boycoder

ASKER

undeclared identifer, addstring..
what should i declare mate?
Avatar of boycoder
boycoder

ASKER

flatListBox1.Items:=(StrList);

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)
Delphi
Delphi

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.

60K
Questions
--
Followers
--
Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews

TRUSTED BY

IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo