Hallo an alle!
Ich möchte mir meine Domäne anzeigen lassen (am besten irgendwie in ne ListView importieren)
ist sowas möglich???
gruß oli
Hallo an alle!
Ich möchte mir meine Domäne anzeigen lassen (am besten irgendwie in ne ListView importieren)
ist sowas möglich???
gruß oli
Hi,
versuch doch mal net view abzufangen und dann in eine Liste zu packen.
So long,
Mega
ja das hab ich auch schon probiert aber ich bekomm des ned hin... dachte es könnte mir jemand vielleicht einen beispielcode bringen....
net view liefert ja alle daten eigentlich...
nun denn.. gruß
olli
Hi,
kann doch nicht so schwer sein, ich gucke mal :
#include <GUIConstants.au3>
#include <GuiListView.au3>
GUICreate("NetView in ListView", 220, 250, 100, 200, -1)
GUISetBkColor(0x00E0FFFF) ; will change background color
$listview = GUICtrlCreateListView("Rechnernamen", 10, 10, 200, 150, Default, $LVS_EX_GRIDLINES +$LVS_SORTDESCENDING)
[/autoit] [autoit][/autoit] [autoit]$button = GUICtrlCreateButton("Value?", 75, 170, 70, 20)
$input1 = GUICtrlCreateInput("", 20, 200, 150)
_GUICtrlListViewSetColumnWidth($listview, 0, $LVSCW_AUTOSIZE_USEHEADER)
$Servernames = Net_View()
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To UBound($Servernames) - 1
GUICtrlCreateListViewItem($Servernames[$i], $listview)
Next
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit (0)
Case $button
MsgBox(0, "listview item", GUICtrlRead(GUICtrlRead($listview)), 2)
Case $listview
MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
EndSwitch
WEnd
Func Net_View()
Local $s_Buf = '', $a_Buf, $i_Pid = Run(@ComSpec & ' /c net view', '', @SW_HIDE, 2 + 4)
While Not @error
$s_Buf &= StdoutRead($i_Pid)
WEnd
$a_Buf = StringRegExp($s_Buf, "\\\\([0-9a-zA-Z-]*)", 3)
ProcessClose($i_Pid)
Return $a_Buf
EndFunc ;==>Net_View
So long,
Mega
P.S.: Hoffe das hilft dir weiter ...
cool danke... blick zwar so ziemlich nix aus dem script aber ok...
kann man jetzt eventuell den kommentar aus net view noch in die zweite spalte des list view mit einfügen... das wäre noch der absolute knüller!!!!
gruß oli
könnte ich eventuell eine zweite funktion bauen, welche eben nur nach den kommentaren sucht und die dann in ein zweites list viewitem schreibt???
gruß olli
so das kann nicht funktionieren, da ich die kommentarspalte nicht mit
[autoit]stringRegExp
[/autoit]ausgrenzen kann...
hat niemand ne lösung oder is das jetzt eines der ersten sachen die man nich realisieren kann????
gruß oli
Hi!
Zeig doch mal bitte ein Beispiel von dem Text, den man RegExen soll. Sollte sich schon machen lassen...
peethebee
hier ist vllt. auch was interessantes: http://www.autoitscript.com/forum/index.php?showtopic=6850&hl=png
@peethebe
net view sieht ungefähr so aus...
Servername Beschreibung
------------------------------------------------------------
\\server1 blablabla
\\server2
\\server3 blablabla
Der Befehl wurde erfolgreich ausgeführt
den servername hab ich schon in ein list view abgefangen - siehe beschreibung von th.meger
jetzt will ich ne 2te spalte in der listview so wie beim eigentlichen befehl, in welcher die beschreibung steht...
......
@leviathan
ja das is in etwa was ich will... aber des is viel zu viel un ich habs noch ned so drauf mim programmieren das ich mir da des in meine lösung reinextrahieren könnte....
hab den code fast so übernommen wie der von th.meger... also wer das umsetzen will is gerne willkommen!
wie gesagt... nur ne zweite spalte in der listview in der der kommentar steht!
Gruß Oli
Hi,
habe dir mal schnell ne Lösung gebaut. Ist sicher nicht die schönste und schnellste, aber evtl. kannst du ja damit leben.
[autoit]#include <GUIConstants.au3>
#include <GuiListView.au3>
GUICreate("NetView in ListView", 520, 550, 100, 100, -1)
GUISetBkColor(0x00E0FFFF) ; will change background color
$listview = GUICtrlCreateListView("Rechnername|Kommentar", 10, 10, 400, 450, Default, $LVS_EX_GRIDLINES)
_GUICtrlListViewSetColumnWidth($listview, 1, $LVSCW_AUTOSIZE_USEHEADER)
Global $s_Comments[1]
Global $s_Servernames = Net_View()
For $i = 0 To UBound($s_Servernames) - 1
GUICtrlCreateListViewItem($s_Servernames[$i] & '|' & $s_Comments[$i], $listview)
Next
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit (0)
EndSwitch
WEnd
Func Net_View()
Local $s_Buf = ''
Local $a_Buf = ''
Local $i_Pid = Run(@ComSpec & ' /c net view', '', @SW_HIDE, 2 + 4)
While Not @error
$s_Buf &= StdoutRead($i_Pid)
WEnd
Local $netView_Lines = StringSplit($s_Buf, @LF)
ReDim $s_Comments[UBound($netView_Lines) ]
For $i = 4 To UBound($netView_Lines) - 1
$s_Comments[$i - 4] = StringMid($netView_Lines[$i], 24, 30)
Next
$a_Buf = StringRegExp($s_Buf, "\\\\([0-9a-zA-Z-]*)", 3)
ProcessClose($i_Pid)
Return $a_Buf
EndFunc ;==>Net_View
So long,
Mega
Hi Mega,
dein vorriges Script hat bei nicht funktioniert, wenn net view nur einen Rechner (mein Notebook selbst) auflistete. Dein 2. Script funktiniert prima. Endlich habe ich auch das mit der Funktion StdoutRead() verstanden. Ich habe mir immer die Ausgaben von externe Programmen mit ">>" in eine Datei umleiten lassen, um deren Inhalt später mit FileOpen() und FileRead() auswerten zu können.
Vielen Dank, Milko
Hi,
schön wenn du zufrieden bist. Ich hoffe oliverh ist ebenfalls seiner Lösung einen Schritt näher gekommen.
So long,
Mega
ah schön danke
hast das mal wieder super gelöst...
jetzt hätte ich noch ne frage dazu!
Kann man sich das auch nach einer bestimmten spalte sortieren lassen? ... also ich klick oben auf Kommentar und es wird nach dem Kommentar sortiert!
danke schonmal
gruß oli
Hi,
ja das geht. :schild4:
So long,
Mega
Edit peethebee: Bitte nicht so präzise
Hi,
okay - habs mal probiert:
#include <GUIConstants.au3>
#include <GuiListView.au3>
GUICreate("NetView in ListView", 520, 550, 100, 100, -1)
GUISetBkColor(0x00E0FFFF) ; will change background color
$listview = GUICtrlCreateListView("Rechnername|Kommentar", 10, 10, 400, 450, Default, $LVS_EX_GRIDLINES)
_GUICtrlListViewSetColumnWidth($listview, 1, $LVSCW_AUTOSIZE_USEHEADER)
Global $s_Comments[1]
Global $s_Servernames = Net_View()
Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($listview) ]
For $i = 0 To UBound($s_Servernames) - 1
GUICtrlCreateListViewItem($s_Servernames[$i] & '|' & $s_Comments[$i], $listview)
Next
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit (0)
Case $listview
_GUICtrlListViewSort($listview, $B_DESCENDING, GUICtrlGetState($listview))
EndSwitch
WEnd
Func Net_View()
Local $s_Buf = ''
Local $a_Buf = ''
Local $i_Pid = Run(@ComSpec & ' /c net view', '', @SW_HIDE, 2 + 4)
While Not @error
$s_Buf &= StdoutRead($i_Pid)
WEnd
Local $netView_Lines = StringSplit($s_Buf, @LF)
ReDim $s_Comments[UBound($netView_Lines) ]
For $i = 4 To UBound($netView_Lines) - 1
$s_Comments[$i - 4] = StringMid($netView_Lines[$i], 24, 30)
Next
$a_Buf = StringRegExp($s_Buf, "\\\\([0-9a-zA-Z-]*)", 3)
ProcessClose($i_Pid)
Return $a_Buf
EndFunc ;==>Net_View
So long,
Mega
P.S.: Mit ner anderen udf geht es sicher schneller.
ich bedanke mich
gibts bei autoit auch eine doppelklick-funktion mit der ich praktisch den host aus der liste mit nem doppelklick in mein input feld eintragen kann?
so dann bin ich aber auch schon ruhig
gruß oli
also das mit dem doppelklick hab ich hinbekommen... jetzt habe ich als wert jedoch folgendes
PCNAME|comment
... will aber ja nur den PCNAME in das Feld eintragen lassen. Wie kann ich den string abschneiden???
gruß oli
Hallo!
Ich würde sagen: StringSplit
GtaSpider würde StringInStr und StringLeft komibinieren
peethebee
ich habs hinbekommen... danke