Domäne anzeigen und Computer auswählen

  • 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

  • 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

    • Offizieller Beitrag

    Hi,

    kann doch nicht so schwer sein, ich gucke mal :

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    GUICreate("NetView in ListView", 220, 250, 100, 200, -1)
    GUISetBkColor(0x00E0FFFF) ; will change background color

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    $Servernames = Net_View()

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($Servernames) - 1
    GUICtrlCreateListViewItem($Servernames[$i], $listview)
    Next
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    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

  • @peethebe

    net view sieht ungefähr so aus...

    Code
    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

    • Offizieller Beitrag

    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

    [/autoit][autoit][/autoit][autoit]

    $listview = GUICtrlCreateListView("Rechnername|Kommentar", 10, 10, 400, 450, Default, $LVS_EX_GRIDLINES)
    _GUICtrlListViewSetColumnWidth($listview, 1, $LVSCW_AUTOSIZE_USEHEADER)

    [/autoit][autoit][/autoit][autoit]

    Global $s_Comments[1]
    Global $s_Servernames = Net_View()

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound($s_Servernames) - 1
    GUICtrlCreateListViewItem($s_Servernames[$i] & '|' & $s_Comments[$i], $listview)
    Next
    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit (0)
    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit]

    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

  • 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

    • Offizieller Beitrag

    Hi,

    okay - habs mal probiert:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    GUICreate("NetView in ListView", 520, 550, 100, 100, -1)
    GUISetBkColor(0x00E0FFFF) ; will change background color

    [/autoit] [autoit][/autoit] [autoit]

    $listview = GUICtrlCreateListView("Rechnername|Kommentar", 10, 10, 400, 450, Default, $LVS_EX_GRIDLINES)
    _GUICtrlListViewSetColumnWidth($listview, 1, $LVSCW_AUTOSIZE_USEHEADER)

    [/autoit] [autoit][/autoit] [autoit]

    Global $s_Comments[1]
    Global $s_Servernames = Net_View()
    Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($listview) ]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($s_Servernames) - 1
    GUICtrlCreateListViewItem($s_Servernames[$i] & '|' & $s_Comments[$i], $listview)
    Next
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit (0)
    Case $listview
    _GUICtrlListViewSort($listview, $B_DESCENDING, GUICtrlGetState($listview))
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    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