1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. subzero007

Beiträge von subzero007

  • Datei liste aus Lisview übernehmen neue erzeugen und aktuellste datei anzeigen?

    • subzero007
    • 13. August 2009 um 13:39

    Hey,

    ich habe nicht genau verstanden was ich da falsch habe und was ich ändern soll?

    Gruß
    SubZero

  • Datei liste aus Lisview übernehmen neue erzeugen und aktuellste datei anzeigen?

    • subzero007
    • 13. August 2009 um 13:02

    Hallo,

    ich möchte gerne die Dateiliste aus einer Listview in einer anderen listview items Erzeugen und die Aktuellste datei in den verzeichnissen anzeigen lassen,
    aber irgendwie läuft er in einer Schleife zeigt immer die Gleiche an was mache ich falsch?

    So sieht in etwa listview1 aus:
    c:\ordner\test.1
    c:\ordner\test.2
    c:\ordner\test.3
    c:\ordner\test.4
    c:\ordner\test.5
    c:\ordner\test.6
    c:\ordner\test.7
    c:\ordner\test.8
    c:\ordner\test.9
    c:\ordner\test.10
    c:\ordner\test.11
    c:\ordner1\test.1
    c:\ordner1\test.2
    c:\ordner1\test.3
    c:\ordner1\test.4
    c:\ordner1\test.5
    c:\ordner1\test.6
    c:\ordner1\test.7
    c:\ordner1\test.8
    c:\ordner1\test.9
    c:\ordner1\test.10
    c:\ordner1\test.11

    dann will ich die Aktuellste datei darstellen in listview2:

    c:\ordner1\test.4
    c:\ordner\test.2


    Hier mein Code:


    [autoit]

    Func _checknewest()
    _GUICtrlListView_DeleteAllItems($LVNP)
    Local $icount = _GUICtrlListView_GetItemCount($LV)

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

    For $i = 0 To $icount - 1
    $ListViewText = _GUICtrlListView_GetItemTextArray($LV, $i)

    $ListViewText[1] = StringLeft($ListViewText[1], StringInStr($ListViewText[1], '\', 0, -1))

    $aFilelist = _FileListToArray($imagepath & $ListViewText[1])
    Dim $aFiledate[$aFilelist[0]+1]
    For $i = 1 To $aFilelist[0]
    $aFiledate[$i] = FileGetTime($imagepath & $ListViewText[1] & '\' & $aFilelist[$i], 0, 1)

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

    GUICtrlCreateListViewItem($ListViewText[1] & $aFilelist[_ArrayMaxIndex($aFiledate, 1)], $LVNP)

    Next
    Next
    EndFunc

    [/autoit]

    Gruß
    SubZero

  • StringSplit

    • subzero007
    • 13. August 2009 um 12:14

    Hey,

    kann mir jemand beim StringSplit helfen

    will eine datei bearbeiten

    \\server\share\order1\dummy.txt
    \\server\share\order2\test.log
    \\server\share\order3\lo.txt
    \\server\share\ordner\order4.txt

    Als ergebnis wollte ich:


    \\server\share\order1\
    \\server\share\order2\
    \\server\share\order3\
    \\server\share\ordner\


    Also vom ersten "\" von rechts alles abschneiden

    Vielen Dank
    SubZero

  • Array vorher Löschen ??

    • subzero007
    • 7. August 2009 um 15:31

    Hey,

    es ist vollbracht es funktioniert ;)
    danke an alle ;) jetzt kann ich beruhigt mein wochenende geniessen ;)

  • Array vorher Löschen ??

    • subzero007
    • 7. August 2009 um 15:03

    Nein die Log datei ist richtig die ist leer!
    Und wenn ich eine leere datei habe kommt er zu einem fehler und nicmmt den inhalt vom array vom vorgänger,
    also muss ich das irgendwie abfragen weiss aber nicht wie, oder ich muss mein array löschen??

  • Array vorher Löschen ??

    • subzero007
    • 7. August 2009 um 14:34

    Hey,
    da habe ich mich wohl falsch ausgedrück
    ja ich habe den fehler gefunden weiss aber nicht wie ich den behebe??

    Mein array ist falsch und die datei ist leer???
    ich vermute er nimmt das allte arry wenn die datei leer ist??
    Bin ja nicht so fit drin aber ist meiner vermutung eine idee?

    Gruß
    SubZero

  • Array vorher Löschen ??

    • subzero007
    • 7. August 2009 um 13:44

    So,
    jetzt zum ergebeniss
    log datei geprüft alles richtig.

    und habe mal ein:

    [autoit]

    _arraydisplay($ain)

    [/autoit]


    Gemacht:
    und siehe da array werte Falsch : und mein text file leer da kein user angemeldt ;)

    [0]|10
    [1]|BENUTZERNAME|SITZUNGSNAME|KENNUNG|STATUS|LEERLAUFZEIT|ANMELDEZEIT
    [2]|userc|rdp-tcp#748|6|Aktiv|5:52|06.08.2009 05:29
    [3]|userd|rdp-tcp#776|9|Aktiv|.|06.08.2009 20:34
    [4]|userf|rdp-tcp#778|5|Aktiv|1|07.08.2009 06:02
    [5]|userg|rdp-tcp#780|2|Aktiv|3:54|07.08.2009 06:13
    [6]|userm|rdp-tcp#788|1|Aktiv|1|07.08.2009 11:13
    [7]|usert|rdp-tcp#790|4|Aktiv|23|07.08.2009 12:02
    [8]|uservvv|rdp-tcp#791|8|Aktiv|24|07.08.2009 12:28
    [9]|usern|rdp-tcp#792|7|Aktiv|9|07.08.2009 13:05
    [10]|user|rdp-tcp#793|10|Aktiv|31|07.08.2009 13:07

    Ich wollte mich nochmal offiziel bei euch allen bedanken für eure hilfe
    Gruß
    SubZero

  • Array vorher Löschen ??

    • subzero007
    • 7. August 2009 um 12:34

    So,
    an der datei liegt es nicht alles einzelnt geprüft mein bauchgefühl sagtr mir das es am array liegt
    habe was von Prog@ndy gefunden entweder klappt es damit auch nicht oder ich ruffe es falsch auf:

    so jetzt zu meiner frage ist die _ArrayEmpty($aIn[0]) aufruf in meiner func check() richtig??


    [autoit]

    Func check()

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

    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost)
    if @error then Return
    FileDelete(@SystemDir & '\ts.log')
    Ping($ListViewText[1], 1) ; Host anpingen
    If Not @error Then
    $TSUSER = RunWait(@ComSpec & " /c " & @SystemDir & '\query.exe user /server:' & $ListViewText[1] & " > " & @SystemDir & '\ts.log', "", @SW_HIDE)
    ;Sleep(5000)
    ConsoleWrite(@SystemDir & '\query.exe user /server:' & $ListViewText[1] & " > " & @SystemDir & '\ts.log' & @crlf)

    _FileReadToArray(@SystemDir & '\ts.log', $aIn)

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

    For $i = 1 To $aIn[0]
    $aIn[$i] = StringReplace(StringStripWs($aIn[$i],7)," ","|",5)

    Next
    ;FileWriteFromArray("C:\serverts_out.txt",$aIn,2)
    For $i = 2 To $aIn[0] ; bei Index 2 starten, dann ist die erste Zeile weg
    $item1 = GUICtrlCreateListViewItem($ListViewText[1] & '|' & $aIn[$i], $listview2)
    _ArrayEmpty($aIn[0])
    ;$item1 = GUICtrlCreateListViewItem($aIn[$i], $listview2)

    Next

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

    EndIf
    EndFunc

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

    Func _ArrayEmpty(ByRef $array)
    ; Prog@ndy
    If Not isArray($array) Then Return SetError(1,0,0)
    Switch UBound($array,0)
    Case 1
    Dim $array[UBound($array,1)]
    Case 2
    Dim $array[UBound($array,1)][UBound($array,2)]
    Case 3
    Dim $array[UBound($array,1)][UBound($array,2)][UBound($array,3)]
    Case Else
    Return SetError(2,0,0)
    EndSwitch
    Return 1
    EndFunc

    [/autoit]
  • Array vorher Löschen ??

    • subzero007
    • 7. August 2009 um 11:21

    Hey,
    Andy habe auch schon versucht für jeden server eine datei erzeugt also und die daten die mein Query erzeugt sind ok,
    Hast du noch eine idee wo der fehler liegen könnte?

    PS:sehr schönes Script!!! ist das dein ernst oder ironisch gemeint ich wurde noch nie wegen mein Script hier gelobt ;)
    Gruß
    SubZero

  • Array vorher Löschen ??

    • subzero007
    • 7. August 2009 um 09:00

    Hey,
    ok hier was ich vorhabe_:

    Ich will wissen und auswerten wer alles auf einem terminal server angemeldet ist..(Funktioniert bereits leider wenn ich mehrer server hintereinander auswerte kommen doppelte einträge)
    Ich will den server für anmeldung sperren.(Funktioniert bereits)
    Ich will den server für anmeldung entsperren.(Funktioniert bereits)
    Ich will die anmeldung Disconecten und resseten können .(Funktioniert bereits)
    Nachricht an einen oder mehrer user auf dem terminal server verschicken(funktioniert)

    Hier mein Code:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=TS-Manager.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GuiListView.au3>
    #include <Array.au3>
    #include <File.au3>

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

    #Region ### START Koda GUI section ### Form=

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

    $Form1_1 = GUICreate("TSManger", 850, 650, 231, 154)
    GUISetBkColor(0xA6CAF0)
    $ListViewhost = GUICtrlCreateListView("Hostname", 32, 32, 170, 430)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 150)
    ;$ListView2 = GUICtrlCreateListView("Hostname|BENUTZERNAME|SITZUNGSNAME|KENNUNG STATUS|LEERLAUFZEIT|ANMELDEZEIT", 224, 32, 564, 430)
    $ListView2 = GUICtrlCreateListView("Hostname|BENUTZERNAME|SITZUNGSNAME|KENNUNG|STATUS|LEERLAUFZEIT|ANMELDEZEIT", 224, 32, 580, 430)

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

    $Hostladen = GUICtrlCreateButton("Hostladen", 32, 14, 75, 17, $WS_GROUP)
    $Search = GUICtrlCreateButton("Check", 32, 464, 75, 17, $WS_GROUP)
    ;$Searchall = GUICtrlCreateButton("Check All", 32, 480, 75, 17, $WS_GROUP)
    $Reset = GUICtrlCreateButton("Reset", 224, 464, 75, 17, $WS_GROUP)
    ;$resetall = GUICtrlCreateButton("Reset-all", 224, 480, 75, 17, $WS_GROUP)
    $Disconnect = GUICtrlCreateButton("disconnect", 305, 464, 75, 17, $WS_GROUP)
    ;$disconnectall = GUICtrlCreateButton("disconnect-all", 305, 480, 75, 17, $WS_GROUP)
    $MSG = GUICtrlCreateButton("MSG", 480, 482, 75, 17, $WS_GROUP)
    $MS = GUICtrlCreateButton("MSG-All", 560, 482, 75, 17, $WS_GROUP)
    $stop = GUICtrlCreateButton("Stop", 125, 14, 75, 17, $WS_GROUP)
    ;$Export = GUICtrlCreateButton("Export", 614, 464, 75, 17, $WS_GROUP)

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

    $Laden = GUICtrlCreateButton("LADEN", 695, 480, 75, 17, $WS_GROUP)
    $logonenable = GUICtrlCreateButton("Logonenable", 32, 497, 75, 17, $WS_GROUP)
    $Logondisable = GUICtrlCreateButton("Logondisable", 32, 511, 75, 17, $WS_GROUP)
    $Edit1 = GUICtrlCreateEdit("", 480, 500, 300, 133)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $aIn[1]
    While 1

    _install()
    Sleep(20)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Hostladen
    _Load()
    case $Laden
    msg()
    Case $Search
    _GUICtrlListView_DeleteAllItems($ListView2)

    Sleep(1000)
    check()

    case $Disconnect
    _disconnect()

    Case $Reset
    _reset()
    Case $logonenable
    _enable()
    Case $Logondisable
    _dis()

    Case $MSG
    _msgsend()

    Case $ms
    _msgsendall()


    EndSwitch
    WEnd

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

    func _msgsendall()

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

    $aSel = _GUICtrlListView_GetSelectedIndices($ListView2, True)
    For $i = 1 To $aSel[0]
    $var1 = _GUICtrlListView_GetItemText($ListView2, $aSel[$i], 1)
    $var2 = _GUICtrlListView_GetItemText($ListView2, $aSel[$i], 0)
    ; MsgBox(0, "", $var1 & @CRLF & $var2)
    $TSMSG = Run(@ComSpec & " /c " & @SystemDir & '\msg.exe * /server:' & $var2 & ' ' & GuiCtrlRead($Edit1) & '', "", @SW_HIDE)

    Next
    EndFunc

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

    Func _dis()
    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost)
    Ping($ListViewText[1], 100) ; Host anpingen
    If Not @error Then
    Run(@ComSpec & " /c " & @SystemDir & '\psexec.exe \\' & $ListViewText[1] & ' change logon /disable', "", @SW_HIDE)
    EndIf
    EndFunc

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

    Func _enable()
    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost)
    Ping($ListViewText[1], 100) ; Host anpingen
    If Not @error Then
    Run(@ComSpec & " /c " & @SystemDir & '\psexec.exe \\' & $ListViewText[1] & ' change logon /enable', "", @SW_HIDE)
    EndIf
    EndFunc

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

    Func msg()
    GuICtrlSetData($Edit1, "")
    $var = FileOpenDialog("", @ScriptDir & "\", "Text (*.txt)", 1 + 4 ) ; hat schon gestimmt aber :
    $txt = FileRead($var) ; Die Ausgewählte datei mus erst gelesen werden
    GuICtrlSetData($Edit1, $txt)

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

    EndFunc

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

    func _msgsend()
    $aSel = _GUICtrlListView_GetSelectedIndices($ListView2, True)
    For $i = 1 To $aSel[0]
    $var1 = _GUICtrlListView_GetItemText($ListView2, $aSel[$i], 1)
    $var2 = _GUICtrlListView_GetItemText($ListView2, $aSel[$i], 0)
    ;MsgBox(0, "", $var1 & @CRLF & $var2)
    $TSMSG = Run(@ComSpec & " /c " & @SystemDir & '\msg.exe '& $var1 & ' /server:' & $var2 & ' ' & GuiCtrlRead($Edit1) & '', "", @SW_HIDE)
    ConsoleWrite(@ScriptDir & '\msg.exe '& $var1 & ' /server:' & $var2 & GuiCtrlRead($Edit1))
    Next

    EndFunc

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

    Func check()

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

    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost)
    if @error then Return
    Ping($ListViewText[1], 1) ; Host anpingen
    If Not @error Then
    $TSUSER = RunWait(@ComSpec & " /c " & @SystemDir & '\query.exe user /server:' & $ListViewText[1] & " > " & @SystemDir & "\" & $ListViewText[1] & '.log', "", @SW_HIDE)
    ConsoleWrite(@SystemDir & '\query.exe user /server:' & $ListViewText[1] & " > " & @SystemDir & "\" & $ListViewText[1] & '.log')
    Sleep(1000)
    _FileReadToArray(@SystemDir & '\' & $ListViewText[1] & '.log', $aIn)

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

    For $i = 1 To $aIn[0]
    $aIn[$i] = StringReplace(StringStripWs($aIn[$i],7)," ","|",5)
    Next
    ;FileWriteFromArray("C:\serverts_out.txt",$aIn,2)
    For $i = 2 To $aIn[0] ; bei Index 2 starten, dann ist die erste Zeile weg
    $item1 = GUICtrlCreateListViewItem($ListViewText[1] & '|' & $aIn[$i], $listview2)

    ;$item1 = GUICtrlCreateListViewItem($aIn[$i], $listview2)

    Next

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

    EndIf
    EndFunc

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

    func _ErsetzeLeerzeichenDurchPipe($zeile)
    $zeile=stringstripws($zeile,4) ;alle aufeinanderfolgenden leerzeichen auf eins reduzieren
    if stringleft($zeile,1)=" " then $zeile=stringtrimleft($zeile,1) ; erstes leerzeichen löschen
    $zeile=stringreplace($zeile," ","|",5) ; leerzeichen mit pipes ersetzen
    return $zeile
    endfunc

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

    Func _Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($ListViewhost) ; Das Handle eben noch bestimmen (s. Anfang des Threads)

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

    Local $sItem
    $FileOpenDialog = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
    Local $hFile = FileOpen($FileOpenDialog, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($ListViewhost) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $ListViewhost) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($ListViewhost) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>_Load

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

    Func _disconnect()
    $aSel = _GUICtrlListView_GetSelectedIndices($ListView2, True)
    For $i = 1 To $aSel[0]
    $var1 = _GUICtrlListView_GetItemText($ListView2, $aSel[$i], 2)
    $var2 = _GUICtrlListView_GetItemText($ListView2, $aSel[$i], 0)
    ;MsgBox(0, "", $var1 & @CRLF & $var2)
    $TSDIS = Run(@ComSpec & " /c " & @SystemDir & '\tsdiscon.exe '& $var1 & ' /server:' & $var2, "", @SW_HIDE)
    ConsoleWrite(@SystemDir & '\tsdiscon.exe '& $var1 & ' /server:' & $var2)
    Next
    EndFunc


    Func _disconnectall()
    For $i = 0 To _GUICtrlListView_GetItemCount($Listview2) -1;hier zählst du die einträge
    $var1 = _GUICtrlListView_GetItemText($ListView2, $i, 2)
    $var2 = _GUICtrlListView_GetItemText($ListView2, $i, 0)
    $TSDISall = Run(@ComSpec & " /c " & @SystemDir & '\tsdiscon.exe '& $var1 & ' /server:' & $var2, "", @SW_HIDE)

    Next

    EndFunc

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

    Func _reset()
    $aSel = _GUICtrlListView_GetSelectedIndices($ListView2, True)
    For $i = 1 To $aSel[0]
    $var1 = _GUICtrlListView_GetItemText($ListView2, $aSel[$i], 2)
    $var2 = _GUICtrlListView_GetItemText($ListView2, $aSel[$i], 0)
    ;MsgBox(0, "", $var1 & @CRLF & $var2)
    $TSREST = Run(@ComSpec & " /c " & @SystemDir & '\reset.exe session '& $var1 & ' /server:' & $var2, "", @SW_HIDE)


    Next

    EndFunc

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

    Func _install()
    FileInstall('F:\autoit\entwicklung\ts\msg.exe', 'c:\windows\system32\msg.exe')
    FileInstall('F:\autoit\entwicklung\ts\psexec.exe', 'c:\windows\system32\psexec.exe')
    FileInstall('F:\autoit\entwicklung\ts\regapi.dll', 'c:\windows\system32\regapi.dll')

    FileInstall('F:\autoit\entwicklung\ts\change.exe', 'c:\windows\system32\change.exe')
    FileInstall('F:\autoit\entwicklung\ts\query.exe', 'c:\windows\system32\query.exe')
    FileInstall('F:\autoit\entwicklung\ts\quser.exe', 'c:\windows\system32\quser.exe')
    FileInstall('F:\autoit\entwicklung\ts\reset.exe', 'c:\windows\system32\reset.exe')
    FileInstall('F:\autoit\entwicklung\ts\tsdiscon.exe', 'c:\windows\system32\tsdiscon.exe')

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

    EndFunc

    [/autoit]

    Das einzige Problem was ich noch habe ist, die einträge in meiner listview die Doppelt erscheinen, wenn ich gleich hintereinander die Fuc _check() ausführe.
    wenn ich aber jedesmal das Programm Schliesse und nur einmal das jeden server einzeln auslese dann ist alles ok. ich will ja aber nicht bei jedem terminal server auslessen
    die applikation neustarten.

    so soll die ausgabe in der listview sein:

    Die ausgabe soll so sein:
    Serverxx|user_000211|rdp-tcp#122|2|Aktiv|4|05.08.2009 06:17
    serverxx|group_0013rdp-tcp#123|3|Aktiv|2:41|05.08.2009 06:59

    Hier die datei die ich verarbeite um es in der listview darzustellen:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Würde mich über jede hilfe freuen:

    Gruß
    SubZero

  • Array vorher Löschen ??

    • subzero007
    • 6. August 2009 um 19:26

    Und wie würde ich:

    [autoit]

    _ArrayUnique

    [/autoit]


    in meinem script einsetzen??

    Danke
    SubZero

  • Array vorher Löschen ??

    • subzero007
    • 6. August 2009 um 17:43

    Hey,

    habe eine problem ich erzeuge eintrage in einer listview aber wenn ich diese fuktion öfter hintereinander nutze gibt er mir doppelte werte raus?
    Kann sowas am array liegen??
    Habe auch schon Sleep zwischen gesetzt leider ohne erfolg
    Hat jemand eine idee?

    [autoit]

    Func check()
    _GUICtrlListView_DeleteAllItems($ListView2)
    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost)
    if @error then Return
    Ping($ListViewText[1], 1) ; Host anpingen
    If Not @error Then
    $TSUSER = RunWait(@ComSpec & " /c " & @SystemDir & '\query.exe user /server:' & $ListViewText[1] & " > " & @SystemDir & "\" & $ListViewText[1] & '.log', "", @SW_HIDE)
    ConsoleWrite(@SystemDir & '\query.exe user /server:' & $ListViewText[1] & " > " & @SystemDir & "\" & $ListViewText[1] & '.log')
    Sleep(1000)
    _FileReadToArray(@SystemDir & '\' & $ListViewText[1] & '.log', $aIn)

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

    For $i = 1 To $aIn[0]
    $aIn[$i] = StringReplace(StringStripWs($aIn[$i],7)," ","|",5)
    Next
    ;FileWriteFromArray("C:\serverts_out.txt",$aIn,2)
    For $i = 2 To $aIn[0] ; bei Index 2 starten, dann ist die erste Zeile weg
    $item1 = GUICtrlCreateListViewItem($ListViewText[1] & '|' & $aIn[$i], $listview2)

    ;$item1 = GUICtrlCreateListViewItem($aIn[$i], $listview2)

    Next

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

    EndIf
    EndFunc

    [/autoit]

    Hier die Datei:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Die ausgabe soll so sein:
    Serverxx|user_000211|rdp-tcp#122|2|Aktiv|4|05.08.2009 06:17
    serverxx|group_0013rdp-tcp#123|3|Aktiv|2:41|05.08.2009 06:59


    Danke SubZero

  • Func Fehler

    • subzero007
    • 6. August 2009 um 12:47

    Hey,
    weil er die einträge in listview2 erzeugt die ich aus der listviewhost einlese eine idee?

  • Func Fehler

    • subzero007
    • 6. August 2009 um 11:43

    Hey,

    nach der änderung:

    [autoit]

    Ping($ListViewText[$i], 100) ; Host anpingen

    [/autoit]


    stürtzt das script ab mit fehlermeldung:
    Ping($ListViewText[$i], 100)
    Ping(^ ERROR
    ???

  • ListviewItem an run Übergeben

    • subzero007
    • 6. August 2009 um 11:37

    Hey,

    ich glaube es langsam zu verstehen aber was mache ich hier falsch ?

    [autoit]

    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <GuiConstantsEx.au3>

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

    GUICreate('ListView Get Item Text', 400, 300)
    $hListView = GUICtrlCreateListView('Hostname|BENUTZERNAME|SITZUNGSNAME', 2, 2, 394, 268, BitOR($LVS_REPORT, $LVS_SINGLESEL));hier erstellst du die Listview
    GUISetState()
    For $i = 0 To 9
    GUICtrlCreateListViewItem(Random(100, 999, 1) & '|' & Random(1000, 9999, 1) & '|' & Random(10000, 99999, 1), $hListView);hier die einträge
    Next
    $hButton = GUICtrlCreateButton('Alle SITZUNGSNAMEN anzeigen', 100, 275, 220, 22);Button ist klar
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hButton
    ; For $i = 0 To _GUICtrlListView_GetItemCount($hListview) -1;hier zählst du die einträge
    ; MsgBox(0, 'Item ' & $i, _GUICtrlListView_GetItemText($hListView, $i, 0 & 2));MSG boX
    $ListViewText = _GUICtrlListView_GetItemTextArray($hListView)
    $var1 = _GUICtrlListView_GetItemText($ListViewText[1], $i, 0);MSG boX
    $var2 = _GUICtrlListView_GetItemText($ListViewText[1], $i, 2);MSG boX
    MsgBox(0, "", $var1 & @crlf & $var2)


    ;woher weiss er das er die sitzung rausgeben soll?????
    ;Next
    EndSwitch
    WEnd

    [/autoit]


    Danke
    SubZero

  • ListviewItem an run Übergeben

    • subzero007
    • 6. August 2009 um 10:57

    Ok,
    kann mir jemand das ergänzen damit ich das verstehe??
    Danke
    SubZero

    [autoit]

    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <GuiConstantsEx.au3>

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

    GUICreate('ListView Get Item Text', 400, 300)
    $hListView = GUICtrlCreateListView('Hostname|BENUTZERNAME|SITZUNGSNAME', 2, 2, 394, 268, BitOR($LVS_REPORT, $LVS_SINGLESEL));hier erstellst du die Listview
    GUISetState()
    For $i = 0 To 9
    GUICtrlCreateListViewItem(Random(100, 999, 1) & '|' & Random(1000, 9999, 1) & '|' & Random(10000, 99999, 1), $hListView);hier die einträge
    Next
    $hButton = GUICtrlCreateButton('Alle SITZUNGSNAMEN anzeigen', 100, 275, 220, 22);Button ist klar
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hButton
    For $i = 0 To _GUICtrlListView_GetItemCount($hListview) -1;hier zählst du die einträge
    MsgBox(0, 'Item ' & $i, _GUICtrlListView_GetItemText($hListView, $i, 2));MSG boX
    ;woher weiss er das er die sitzung ausgeben soll?????
    Next
    EndSwitch
    WEnd

    [/autoit]
  • Func Fehler

    • subzero007
    • 6. August 2009 um 10:32

    Hey,
    dank oscar funktioniert jetzt mein Script teilweise
    er verarbeitet jetzt nur das erste item hat jemand noch eine idee was ich falsch mache ??

    [autoit]

    Func checkall()
    _GUICtrlListView_DeleteAllItems($ListView2)
    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $i = 0 To $icount - 1
    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost, $i) ; <- ,$i sonst bekommst Du nur das aktuell selektierte Item
    If $ListViewText[0] = 0 Then Return ; @error wird von _GUICtrlListView_GetItemTextArray() nicht gesetzt
    Ping($ListViewText[1], 100) ; Host anpingen
    If Not @error Then
    $TSUSER = RunWait(@ComSpec & " /c " & @ScriptDir & '\query.exe user /server:' & $ListViewText[1] & " >" & @ScriptDir & '\' & $ListViewText[1] & ".log", "", @SW_HIDE)
    ConsoleWrite(@ScriptDir & '\query.exe user /server:' & $ListViewText[1] & " >" & @ScriptDir & '\' & $ListViewText[1] & ".log")
    _FileReadToArray(@ScriptDir & '\' & $ListViewText[1] & ".log", $aIn)
    For $i = 1 To $aIn[0]
    $aIn[$i] = StringReplace(StringStripWS($aIn[$i], 7), " ", "|", 5)
    Next
    ;FileWriteFromArray("C:\serverts_out.txt",$aIn,2)
    For $i = 2 To $aIn[0] ; bei Index 2 starten, dann ist die erste Zeile weg
    $item1 = GUICtrlCreateListViewItem($ListViewText[1] & '|' & $aIn[$i], $ListView2)
    ;$item1 = GUICtrlCreateListViewItem($aIn[$i], $listview2)
    Next
    EndIf
    Next
    EndFunc

    [/autoit]

    Danke
    SubZero

  • ListviewItem an run Übergeben

    • subzero007
    • 6. August 2009 um 10:28

    Danke,

    habe es gefunden aus der hilfe aber habe noch ein verständnis problem ??
    kannst du es mir kurz erklätren??

    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work

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

    _Main()

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

    Func _Main()
    Local $hListView

    GUICreate("ListView Get Item Text", 400, 300)
    $hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
    GUISetState()

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

    ; Add columns
    _GUICtrlListView_AddColumn($hListView, "Items", 100)

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

    ; Add items
    _GUICtrlListView_AddItem($hListView, "Item 1")
    _GUICtrlListView_AddItem($hListView, "Item 2")
    _GUICtrlListView_AddItem($hListView, "Item 3")

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

    ; Set item 2 text
    _GUICtrlListView_SetItemText($hListView, 1, "New Item 2")
    MsgBox(4160, "Information", "Item 2 Text: " & _GUICtrlListView_GetItemText($hListView, 1))

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc

    [/autoit]

    Oder mir ein bespiel geben damit ich es verstehe?

    Danke
    SubZero

  • ListviewItem an run Übergeben

    • subzero007
    • 6. August 2009 um 10:16

    Hallo,
    habe folgendes Problem möchte gerne aus einem Listview eintrag parameter an run übergeben.
    so sieht meine Listview aus:

    Hostname|BENUTZERNAME|SITZUNGSNAME|KENNUNG|STATUS|LEERLAUFZEIT|ANMELDEZEIT|

    und das möchte ich ausführen:

    TSDISCON SITZUNGSNAME /SERVER:Hostname

    Wie geht das habe leider kein beispiel für gefunden.

    Danke
    SubZero

  • Func Fehler

    • subzero007
    • 5. August 2009 um 15:37

    Hey,

    kann mal jemand kurz drüber schauen kann leider den Fehler nicht finden.

    eine fehlermeldung gibt es leider nicht, die funktion läuft nicht durch ???

    [autoit]

    Func checkall()
    _GUICtrlListView_DeleteAllItems($ListView2)

    local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    for $i = 0 to $icount -1
    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost)
    if @error then Return
    Ping($ListViewText[1], 100) ; Host anpingen
    If Not @error Then
    $TSUSER = RunWait(@ComSpec & " /c " & @ScriptDir & '\query.exe user /server:' & $ListViewText[1] & " >" & @ScriptDir & '\' & $ListViewText[1] & ".log", "", @SW_HIDE)
    ConsoleWrite(@ScriptDir & '\query.exe user /server:' & $ListViewText[1] & " >" & @ScriptDir & '\' & $ListViewText[1] & ".log")

    _FileReadToArray(@ScriptDir & '\' & $ListViewText[1] & ".log", $aIn)
    For $i = 1 To $aIn[0]
    $aIn[$i] = StringReplace(StringStripWs($aIn[$i],7)," ","|",5)
    Next
    ;FileWriteFromArray("C:\serverts_out.txt",$aIn,2)
    For $i = 2 To $aIn[0] ; bei Index 2 starten, dann ist die erste Zeile weg
    $item1 = GUICtrlCreateListViewItem($ListViewText[1] & '|' & $aIn[$i], $listview2)
    ;$item1 = GUICtrlCreateListViewItem($aIn[$i], $listview2)

    Next
    EndIf
    Next
    EndFunc

    [/autoit]

    Diese Funktion Funktioniert

    [autoit]

    Func check()

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

    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost)
    if @error then Return
    Ping($ListViewText[1], 100) ; Host anpingen
    If Not @error Then
    $TSUSER = RunWait(@ComSpec & " /c " & @ScriptDir & '\query.exe user /server:' & $ListViewText[1] & " >" & @ScriptDir & '\' & $ListViewText[1] & ".log", "", @SW_HIDE)
    ConsoleWrite(@ScriptDir & '\query.exe user /server:' & $ListViewText[1] & " >" & @ScriptDir & '\' & $ListViewText[1] & ".log")

    _FileReadToArray(@ScriptDir & '\' & $ListViewText[1] & ".log", $aIn)
    For $i = 1 To $aIn[0]
    $aIn[$i] = StringReplace(StringStripWs($aIn[$i],7)," ","|",5)
    Next
    ;FileWriteFromArray("C:\serverts_out.txt",$aIn,2)
    For $i = 2 To $aIn[0] ; bei Index 2 starten, dann ist die erste Zeile weg
    $item1 = GUICtrlCreateListViewItem($ListViewText[1] & '|' & $aIn[$i], $listview2)
    ;$item1 = GUICtrlCreateListViewItem($aIn[$i], $listview2)

    Next
    EndIf
    EndFunc

    [/autoit]

    Ich wollte mit der Checkall()
    alle items Prüfen aber irgendwie kriege ich es diesmal nicht hin???

    Danke
    SubZero

    Danke
    SubZero

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™