vb.net - How to Detect LAN or Adapter that is installed by openVPN? -


i using visual basic 2010. i've installed openvpn , adapter. want make application use adapter openvpn. how can detect it?

i have code delphi. don't understand @ all. this:

// ini adalah bagian untuk mendapatkan nama interface network  uses wbemscripting_tlb, activex;  type tiwrapper=class  public    prop:iswbemproperty;    constructor create(p:iswbemproperty);  end;  constructor tiwrapper.create(p: iswbemproperty); begin   prop:=p; end;  procedure clear(adapters:tstrings); var i:integer; begin   i:=1 adapters.count   begin     adapters.objects[i-1].free;     adapters.objects[i-1]:=nil;   end;   adapters.clear; end;  function getpropvalue(sprop:iswbemproperty):string; var svalue:string;     count:integer; begin   svalue := '';   if varisnull(sprop.get_value)     svalue := '<empty>'   else   case sprop.cimtype of     wbemcimtypesint8, wbemcimtypeuint8, wbemcimtypesint16, wbemcimtypeuint16,     wbemcimtypesint32, wbemcimtypeuint32, wbemcimtypesint64:       svalue := inttostr(sprop.get_value);     wbemcimtypestring, wbemcimtypeuint64:       if varisarray(sprop.get_value)       begin         if vararrayhighbound(sprop.get_value, 1) > 0           count := 1 vararrayhighbound(sprop.get_value, 1)         svalue := svalue + ' ' + sprop.get_value[count];   end else   svalue :=  sprop.get_value; wbemcimtypedatetime:svalue:=sprop.get_value//datetimetostr(sprop.get_value)  else   exception.create('unknown type');   end; {case}   result:=svalue; end;  procedure getadapters(owner:tcomponent; remotemachine,remoteuser,remotepassword:string; adapters:tstrings); var   locator: tswbemlocator;   sinkclasses: tswbemsink;    services:   iswbemservices;   objectset:  iswbemobjectset;   sobject:    iswbemobject;   propset :   iswbempropertyset;   sprop:      iswbemproperty;   enum:       ienumvariant;   tempobj:    olevariant;  value:      cardinal;   svalue,  classname:     string;  strquery:   widestring;  begin  classname:='win32_networkadapter';  clear(adapters);   locator:=tswbemlocator.create(owner);  sinkclasses:=tswbemsink.create(owner);  try    sinkclasses.cancel;  if remotemachine=''   remotemachine:='.';// local machine services := locator.connectserver(remotemachine, 'root\cimv2', remoteuser, remotepassword, '',   '', 0, nil); try   objectset := services.instancesof(classname, wbemflagreturnimmediately or wbemqueryflagshallow, nil);   enum :=  (objectset._newenum) ienumvariant;   try     while (enum.next(1, tempobj, value) = s_ok)     begin       sobject := iunknown(tempobj) swbemobject;       propset := sobject.properties_;       sprop:=propset.item('netconnectionid',0);// caption or systemname       // value of property       svalue:=getpropvalue(sprop);       try         if svalue<>'<empty>'         begin           sprop:=propset.item('netconnectionstatus',0);           adapters.addobject(svalue,tiwrapper.create(sprop));         end;               sobject:=nil;         propset:=nil;         sprop:=nil;       end;     end; {while enum}       objectset:=nil;     enum:=nil;   end;    strquery := 'select * __instancecreationevent within 5 targetinstance' +     ' isa "'+classname+'"';   services.execnotificationqueryasync(sinkclasses.defaultinterface, strquery, 'wql', 0, nil, nil);     strquery := 'select * __instancedeletionevent within 5 targetinstance' +     ' isa "'+classname+'"';   services.execnotificationqueryasync(sinkclasses.defaultinterface, strquery, 'wql', 0, nil, nil);      services:=nil;// make sure references decreased end;   locator.free; sinkclasses.free;   end; {try} end;  // akhir code mendapatkan interface network  

my vb bit rusty (so sure there errors in this), delphi code showed translate following:

function getpropvalue(sprop iswbemproperty) string   dim svalue string = ""   dim arr() string    if sprop.value nothing     svalue = "<empty>"   else     select case sprop.cimtype       case wbemcimtypesint8, wbemcimtypeuint8, wbemcimtypesint16, wbemcimtypeuint16, wbemcimtypesint32, wbemcimtypeuint32, wbemcimtypesint64         svalue = cstr(sprop.value)       case wbemcimtypestring, wbemcimtypeuint64         if sprop.isarray           arr = ctype(sprop.value, array)           if arr.getupperbound(0) >= 0             svalue = cstr(arr(0))             count integer = 1 arr.getupperbound(0)               svalue = svalue & " " & cstr(arr(count))             next           end if         else           svalue = cstr(sprop.value)         end if       case wbemcimtypedatetime         svalue = cstr(sprop.value) ' datetimetostr(sprop.value)       case else         throw new exception("unknown type")     end select   end if   getpropvalue = svalue end function  procedure getadapters(remotemachine string, remoteuser string, remotepassword string, adapters dictionary<string, iswbemproperty>)   dim locator swbemlocator   dim sinkclasses iswbemsink   dim services iswbemservices   dim objectset iswbemobjectset   dim propset iswbempropertyset   dim sprop iswbemproperty   dim svalue string   dim strquery string   dim classname string = "win32_networkadapter"     adapters.clear    locator = new swbemlocator;   sinkclasses = new swbemsink;    sinkclasses.cancel;    if remotemachine = ""     remotemachine = "." ' local machine    services = locator.connectserver(remotemachine, "root\cimv2", remoteuser, remotepassword, "", "", 0, nil)    objectset = services.instancesof(classname, wbemflagreturnimmediately or wbemqueryflagshallow, nil)    each sobject iswbemobject in objectset     propset = sobject.properties_     sprop = propset.item("netconnectionid", 0)     svalue = getpropvalue(sprop)     if svalue <> "<empty>"       sprop = propset.item("netconnectionstatus", 0)       adapters.add(svalue, sprop)     end if   next    strquery = "select * __instancecreationevent within 5 targetinstance isa """ & classname & ""   services.execnotificationqueryasync(sinkclasses, strquery, "wql", 0, nil, nil)   strquery = "select * __instancedeletionevent within 5 targetinstance isa """ & classname & ""   services.execnotificationqueryasync(sinkclasses, strquery, "wql", 0, nil, nil); end procedure 

Comments

Popular posts from this blog

user interface - How to replace the Python logo in a Tkinter-based Python GUI app? -

objective c - Greedy NSProgressIndicator Allocation -

how to set an OCR language in Google Drive -