Nur so zur Info: Ich möchte (bzw. muss) jetzt netsh benutzen. Beim Übernehmen der Einstellungen braucht man auch den relativen (user-definierbaren) Namen des Netzwerkgerätes, dass man verändern möchte. Deshalb habe ich diesen Thread aufgemacht.bobobo hat geschrieben:Richtig lustig wird's erst, wenn Du merkst, dass Deine angestrebte
Lösung kein Deut schneller ist als die normale per netsh. :)
Namen eines Netzwerkgerätes auslesen?
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
achso .. ja ..
ää ..netsh interface dump erzeugt nach stdout ne Liste in der unter
anderem auch der Name steht
und "netsh interface show interface" liefert direkt ne Liste der Geräte
(peinlich
)
allerdings ist die Liste aus dem Code oben eventuell besser geeignet,
da dort nur die aktiven Netzgeräte gelistet werden
ää ..netsh interface dump erzeugt nach stdout ne Liste in der unter
anderem auch der Name steht
Code: Alles auswählen
NewList netzgeraete.s()
s.s=""
Enumeration
#WIN
#COMBO
EndEnumeration
OpenWindow(#WIN,0,0,200,200,"Netzgeräte Auswahl (aktive)",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#WIN))
ComboBoxGadget(#COMBO,0,0,200,200)
ListViewGadget(#COMBO,0,0,200,200)
prog.l= RunProgram("netsh","interface dump","",#PB_Program_Open|#PB_Program_Read|#PB_Program_Hide)
While ProgramRunning(prog)
cc+1
If cc>7000
s+"|"
;nur ne Anzeige das sich was tut
AddGadgetItem(#COMBO,0,s)
SetGadgetState(#COMBO,0)
While WindowEvent():Wend
cc=0
EndIf
If AvailableProgramOutput(Prog)
tmp.s=ReadProgramString(prog)
If FindString(tmp,"name=",0)
AddElement(netzgeraete())
ng.s=StringField(tmp,2,Chr(34))
netzgeraete.s()=ng
EndIf
ausgabe.s+tmp +#CRLF$
EndIf
Wend
CloseProgram(prog)
SortList(netzgeraete(),2)
ResetList(netzgeraete()) ; doppelte raushauen
While NextElement(netzgeraete())
If nga.s=netzgeraete()
DeleteElement(netzgeraete())
EndIf
nga.s=netzgeraete()
Wend
ClearGadgetItemList(#COMBO)
ForEach netzgeraete()
AddGadgetItem(#COMBO,-1,netzgeraete())
Next
SetGadgetState(#COMBO,0)
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
und "netsh interface show interface" liefert direkt ne Liste der Geräte
(peinlich

allerdings ist die Liste aus dem Code oben eventuell besser geeignet,
da dort nur die aktiven Netzgeräte gelistet werden
Zuletzt geändert von bobobo am 20.04.2007 10:27, insgesamt 1-mal geändert.
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
Eben nicht peinlichbobobo hat geschrieben: und "netsh interface show interface" liefert direkt ne Liste der Geräte
(peinlich)

wie z.B.: hier
Bitte geben Sie nun ja ein, da sie das Programm noch nicht gekauft haben:
Benutzen Sie die Demo Version? [Eingabefeld]
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
in "meinem" Code werden die aktiven Geräte angezeigt, also die auch
tatsächliche ne Verbindung haben. (*)
Für ne Auflistung aller Geräte lautet der netsh-Befehl
netsh interface show interface
lauten . Und die nachfolgende Bearbeitung müsste dann auch noch
entsprechend der Ausgabe daran angepasst werden.
(*) so isses zumindest bei mir.
hier der angepasste Code nebst angepasster Parserei
tatsächliche ne Verbindung haben. (*)
Für ne Auflistung aller Geräte lautet der netsh-Befehl
netsh interface show interface
lauten . Und die nachfolgende Bearbeitung müsste dann auch noch
entsprechend der Ausgabe daran angepasst werden.
(*) so isses zumindest bei mir.
hier der angepasste Code nebst angepasster Parserei
Code: Alles auswählen
NewList netzgeraete.s()
s.s=""
Enumeration
#WIN
#COMBO
EndEnumeration
OpenWindow(#WIN,0,0,200,200,"Netzgeräte Auswahl (aktive)",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#WIN))
ComboBoxGadget(#COMBO,0,0,200,200)
ListViewGadget(#COMBO,0,0,200,200)
prog.l= RunProgram("netsh","interface show interface","",#PB_Program_Open|#PB_Program_Read|#PB_Program_Hide)
While ProgramRunning(prog)
cc+1
If cc>7000
s+"|"
;nur ne Anzeige das sich was tut
AddGadgetItem(#COMBO,0,s)
SetGadgetState(#COMBO,0)
While WindowEvent():Wend
cc=0
EndIf
If AvailableProgramOutput(prog)
tmp.s=ReadProgramString(prog)
Debug tmp
If FindString(tmp,"Aktiviert",0)
tmp=Mid(tmp,48,Len(tmp)-47)
AddElement(netzgeraete())
ng.s=tmp
netzgeraete.s()=ng
EndIf
ausgabe.s+tmp +#CRLF$
EndIf
Wend
CloseProgram(prog)
SortList(netzgeraete(),2)
ResetList(netzgeraete()) ; doppelte raushauen
While NextElement(netzgeraete())
If nga.s=netzgeraete()
DeleteElement(netzgeraete())
EndIf
nga.s=netzgeraete()
Wend
ClearGadgetItemList(#COMBO)
ForEach netzgeraete()
AddGadgetItem(#COMBO,-1,netzgeraete())
Next
SetGadgetState(#COMBO,0)
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
seh ich wohl .. aktiv heisst dann wohl, dass ne IPNummer vergeben
ist und das Gerät könnte, wenn n Kabel drinstecken würde.
ich weiß aber auch nur wie es hier(*) funktioniert.
Mit Methode 1 bekomme ich die Anzeige der Geräte mit Verbindung (Bei
mir ist das eben meist genau die eine und switchbar 'n virtuelles VMWare-
Gerät) und mit Methode 2 ne Liste der Gerätschaften die könnten aber
nicht müssen.
(*) "hier" ist ne Domänenumgebung in der Firma
ist und das Gerät könnte, wenn n Kabel drinstecken würde.
ich weiß aber auch nur wie es hier(*) funktioniert.
Mit Methode 1 bekomme ich die Anzeige der Geräte mit Verbindung (Bei
mir ist das eben meist genau die eine und switchbar 'n virtuelles VMWare-
Gerät) und mit Methode 2 ne Liste der Gerätschaften die könnten aber
nicht müssen.
(*) "hier" ist ne Domänenumgebung in der Firma
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.