[autoit]
FileSaveDialog
[/autoit]liefert dir ja nur einen pfad zurück... woher soll
[autoit]FileWrite
[/autoit]denn wissen, was für eine dateiendung die datei haben soll???
FileSaveDialog
[/autoit]liefert dir ja nur einen pfad zurück... woher soll
[autoit]FileWrite
[/autoit]denn wissen, was für eine dateiendung die datei haben soll???
ok das habe ich verstanden;-)
kannst du mir nochhier helfen dann wird auch dieses thema geschlossen es landet alles in Offline "$listview3" obwohl wenn offline es in Online landen sollte "$listview2" eine idee?
[autoit]Func _pingitem()
[/autoit][autoit][/autoit][autoit]$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
Switch @error
Case 1
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
Case 2
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
Case 3
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
Case 4
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
case Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
EndSwitch
EndFunc
wow, werd aus deinem satz nicht schlau
Zitates landet alles in Offline "$listview3" obwohl wenn offline es in Online landen sollte "$listview2"
wtf?
Wenn ich einen rechner anpinge der Online ist landet er in $listview3
wenn ich einen rechner anpinge der offline ist landet er in $listview3
unter dos ping habe ich es geprüft,
die rechner sind online aber landen trotzdem in meiner $listview3
eine idee?
Func _pingitem()
[/autoit][autoit][/autoit][autoit]$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
Switch @error
Case 1
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
Case 2
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
Case 3
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
Case 4
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
case Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
EndSwitch
EndFunc
kannst du mir einen kleinen tipp geben wie ich die dateiendung mitgebe habe kein beispiel gefunden
FileWrite($path, _GUICtrlListView_Export($hWnd, 1, ','))
[/autoit]schon besser, danke
also wenn alle online-hosts in die $listView2 und alle offline-hosts in die $listView3 sollen (stimmt doch oder?) dann müsste die funktion so aussehen (hab die funktion noch ein bisschen formatiert bezüglich lesbarkeit)
[autoit]
Func _pingitem()
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
Switch @error
Case 1
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
Case 2
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
Case 3
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
Case 4
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
case Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
EndSwitch
EndFunc
EDIT: zur dateiendung....
[autoit]FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
[/autoit]ungetestet!
super das mit der dateiendung klappt aber mein listview problem besteht immernoch, jetzt umgekehrt;-)
alle clients landen in Online obwohl vielle auch offline sind
Der genaue Error code ist egal?
[autoit]Func _pingitem()
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
;consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
if $var = 0 then
GUICtrlCreateListViewItem($ListViewText[1], $ListView3) ;für offline
Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView2) ;für jeden Rückgabewert ohne @error (online)
endif
EndFunc
Wenn das nicht hilft muss du genau den Rückgabewert der Ping() Funktion untersuchen (z.B. per msgbox).
nuts
jetzt landen alle in Offline ???
Habe noch etwas;-)
In der Listview in der erste zeile,
erscheint die anzahl an zeilen"Pc's" wie kriege ich diesen wert in ein Label rein?
Mit GUICtrlSetData das weiss ich mitlerweile aber wie lösche ich diessen wert oder kann man das viel elegantzer lössen?
z.b die anzahl an clients hier reinschreiben $ListView2 = GUICtrlCreateListView("Online %anzahl Client&", 224, 48, 170, 342)
/\/\ /\
Eine idee?
Edit:
Habe es mal so getestet Kriege bei allen den Offline wert zurück?
Unter dos sind die rechner Online, eine idee?
Func _pingitem()
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
;consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
if $var = 0 then
GUICtrlCreateListViewItem($ListViewText[1], $ListView3) ;für offline
Msgbox(0,"Status","Offline, Antwortzeit war:" & $var)
Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView2) ;für jeden Rückgabewert ohne @error (online)
Msgbox(0,"Status","Online, Antwortzeit war:" & $var)
endif
EndFunc
bernd670: Beiträge zusammengefasst!
stehen die pc-namen auch richtig in dem array ($ListViewText)
[autoit]
Func _pingitem()
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
_ArrayDisplay($ListViewText)
;consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
if $var = 0 then
GUICtrlCreateListViewItem($ListViewText[1], $ListView3) ;für offline
Msgbox(0,"Status","Offline, Antwortzeit war:" & $var)
Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView2) ;für jeden Rückgabewert ohne @error (online)
Msgbox(0,"Status","Online, Antwortzeit war:" & $var)
endif
EndFunc
$var = Ping($ListViewText[1],250) dann gibt doch hier mal die IP des Onlinerechners ein.
bzw. untersusche $ListViewText[1]
Kriege folgende listview autoit.de/wcf/attachment/5014/ scheint doch mein Item zu laufen oder?
Mit der ip landet auch alles in offline könnt ihr das script mal bei euch testen?
127.0.0.1 zeigt er auch offline an ?? eine idee?
hier die msg zu 127.0.0.1 autoit.de/wcf/attachment/5015/
Func _pingitem()
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
_ArrayDisplay($ListViewText)
consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
if $var = 0 then
GUICtrlCreateListViewItem($ListViewText[1], $ListView3) ;für offline
Msgbox(0,"Status","Offline, Antwortzeit war:" & $var)
Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView2) ;für jeden Rückgabewert ohne @error (online)
Msgbox(0,"Status","Online, Antwortzeit war:" & $var)
endif
EndFunc
Aus der Hilfe:
[autoit]$var = Ping("127.0.0.1",250)
If $var Then; also possible: If @error = 0 Then ...
Msgbox(0,"Status","Online, roundtrip was:" & $var)
Else
Msgbox(0,"Status","An error occured with number: " & @error)
EndIf
Ergibt bei mir das erwartete Ergebnis ("online")!
In deinem Array ist $ListViewText[1] = "test"
Ein ping auf "test" führt wohl zu offline ... (logisch)
das habe ich auch bereits getestet,
kann es sein das meine liste die ich in liestview reinlade leerzeichen nach dem Pc namen hat, daher der fehler auftretten tut?
In der txt habe keine leerzeichen aber kann es sein das mein item leerzeichen hat hinter dem Hostname?
wie kann ich das prüfen?
Möglich ist vieles.
Deine _Insert Funktion ist mir eh unklar (kenne aber auch die .txt nicht PC1, PC2, PC3 usw. wird ja wohl nicht drin stehen - sonst wundert mich das Ergebnis nicht!)
hier mal eine Funktion aus Oscars Listview Beispiel zum einlesen
[autoit]Func Load() ; Datenbank-Datei laden
_GUICtrlListView_DeleteAllItems($hLVHandle) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
Local $sItem
Local $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
_GUICtrlListView_BeginUpdate($hLVHandle) ; 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, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
WEnd
_GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
FileClose($hFile) ; Datei schließen
EndIf
EndFunc ;==>Load
P.S. etwas mehr Mitarbeit bitte.
Wenn Ping("127.0.0.1") erfolgreich ist, dann trage doch mal nur 127.0.0.1 in deine .txt Datei ein und teste dein Skript!
Sollte dann Ping($ListViewText[1]) nicht funktionieren liegt doch der Schluss nahe, dass etwas mit $ListViewText[1] nicht stimmt!
daher bin ich ja auf den schluss gekommen das mein item falsch ist
den die 127.0.0.1 sagt er auch fehler 4
Edit:
Was mache ich falsch ??
Func Load() ; Datenbank-Datei laden
_GUICtrlListView_DeleteAllItems($listview1) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
Local $sItem
$hFile = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
;Local $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
_GUICtrlListView_BeginUpdate($listview1) ; 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, $listview1) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
WEnd
_GUICtrlListView_EndUpdate($listview1) ; Listview wieder freigeben
FileClose($hFile) ; Datei schließen
EndIf
EndFunc ;==>Load
aktueller code
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <array.au3>
#Include <File.au3>
#Include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
Local $ad, $array1, $x = 0
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Ping Tool", 700, 510, 257, 323)
$ListView1 = GUICtrlCreateListView("Hostname", 24, 48, 170, 342)
GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 160) ; setzt die 1. Spalte des Listviews auf 160 Pixel Breite
$ListView2 = GUICtrlCreateListView("Online", 224, 48, 170, 342)
$ListView3 = GUICtrlCreateListView("Offline", 424, 48, 186, 342)
$Button1 = GUICtrlCreateButton("PC`s Laden", 24, 400, 60, 25, 0)
$Button2 = GUICtrlCreateButton("Check", 24, 432, 50, 25, 0)
$Button3 = GUICtrlCreateButton("Check All", 75, 432, 50, 25, 0)
$Button4 = GUICtrlCreateButton("export1", 136, 400, 59, 25, 0)
$Button5 = GUICtrlCreateButton("export2", 336, 400, 59, 25, 0)
$Button6 = GUICtrlCreateButton("export3", 552, 400, 59, 25, 0)
$Button7 = GUICtrlCreateButton("Clear Host", 80, 20, 59, 25, 0)
$Button8 = GUICtrlCreateButton("Clear Online", 270, 20, 65, 25, 0)
$Button9 = GUICtrlCreateButton("Clear Offline", 490, 20, 65, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_Load()
Case $Button2
_pingitem()
case $Button3
_pingall()
Case $Button4
_export()
EndSwitch
WEnd
Func _export()
$hWnd = $listview1
$path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
If @error Then Exit MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
EndFunc
Func Load() ; Datenbank-Datei laden
_GUICtrlListView_DeleteAllItems($listview1) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
Local $sItem
$hFile = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
;Local $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
_GUICtrlListView_BeginUpdate($listview1) ; 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, $listview1) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
WEnd
_GUICtrlListView_EndUpdate($listview1) ; Listview wieder freigeben
FileClose($hFile) ; Datei schließen
EndIf
EndFunc ;==>Load
Func _insert()
$string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
_GUICtrlListView_DeleteAllItems($ListView1)
_GUICtrlListView_DeleteAllItems($ListView2)
_GUICtrlListView_DeleteAllItems($ListView3)
$array = StringSplit(FileRead($string),@CR)
For $i = 0 To UBound($array) - 1
GUICtrlCreateListViewItem($array[$i], $ListView1)
Next
EndFunc
Func _Load() ; Datenbank-Datei laden
_GUICtrlListView_DeleteAllItems($listview1) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
$string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
FileOpen($string, 0) ; Datei zum lesen öffnen
If $string <> -1 Then ; wenn das öffnen erfolgreich war, dann...
_GUICtrlListView_BeginUpdate($listview1) ; Listview sperren
While True ; Endlosschleife
$sItem = FileReadLine($string) ; Zeile aus der Datei lesen
If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
GUICtrlCreateListViewItem($sItem, $ListView1) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
WEnd
_GUICtrlListView_EndUpdate($listview1) ; Listview wieder freigeben
FileClose($string) ; Datei schließen
EndIf
EndFunc
Func _pingall()
_GUICtrlListView_DeleteAllItems($ListView2)
_GUICtrlListView_DeleteAllItems($ListView3)
local $icount = _GUICtrlListView_GetItemCount($ListView1)
for $i = 0 to $icount -1
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1, $i)
;consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
Switch @error
Case 1
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
Case 2
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
Case 3
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
Case 4
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
case Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
EndSwitch
next
EndFunc
Func _pingitem()
[/autoit] [autoit][/autoit] [autoit]$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
;consolewrite($ListViewText[1]&@CRLF)
consolewrite (Ping($ListViewText[1],250))
$var = Ping($ListViewText[1],250)
If $var Then; Es geht auch If @error = 0 Then ...
Msgbox(0,"Status","Online, Antwortzeit war:" & $var)
Else
Msgbox(0,"Status","Es ist ein Fehler mit der Nummer " & @error & " aufgetreten.")
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _GUICtrlListView_Export($hWnd, $exType=0, $Delim=Default) ; $exType=0 Array / $exType=1 String
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Local $row = _GUICtrlListView_GetItemCount($hWnd)
If $exType Then
If $Delim <> Default Then Local $oldDelim = Opt('GUIDataSeparatorChar', $Delim)
Local $sOut = ''
For $i = 0 To $row -1
$sOut &= _GUICtrlListView_GetItemTextString($hWnd, $i) & @CRLF
Next
If $Delim <> Default Then Opt('GUIDataSeparatorChar', $oldDelim)
Return $sOut
EndIf
Local $col = _GUICtrlListView_GetColumnCount($hWnd)
Local $aOut[$row][$col]
If $col = 1 Then
ReDim $aOut[$row]
For $i = 0 To UBound($aOut) -1
$aOut[$i] = _GUICtrlListView_GetItemText($hWnd, $i)
Next
Return $aOut
EndIf
For $i = 0 To UBound($aOut) -1
For $j = 0 To UBound($aOut, 2) -1
$aOut[$i][$j] = _GUICtrlListView_GetItemText($hWnd, $i, $j)
Next
Next
Return $aOut
EndFunc
bernd670: Beiträge zusammengefasst!
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <array.au3>
#include <File.au3>
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
Local $ad, $array1, $x = 0
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Ping Tool", 700, 510, 257, 323)
$ListView1 = GUICtrlCreateListView("Hostname", 24, 48, 170, 342)
GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 160) ; setzt die 1. Spalte des Listviews auf 160 Pixel Breite
$ListView2 = GUICtrlCreateListView("Online", 224, 48, 170, 342)
$ListView3 = GUICtrlCreateListView("Offline", 424, 48, 186, 342)
$Button1 = GUICtrlCreateButton("PC`s Laden", 24, 400, 60, 25, 0)
$Button2 = GUICtrlCreateButton("Check", 24, 432, 50, 25, 0)
$Button3 = GUICtrlCreateButton("Check All", 75, 432, 50, 25, 0)
$Button4 = GUICtrlCreateButton("export1", 136, 400, 59, 25, 0)
$Button5 = GUICtrlCreateButton("export2", 336, 400, 59, 25, 0)
$Button6 = GUICtrlCreateButton("export3", 552, 400, 59, 25, 0)
$Button7 = GUICtrlCreateButton("Clear Host", 80, 20, 59, 25, 0)
$Button8 = GUICtrlCreateButton("Clear Online", 270, 20, 65, 25, 0)
$Button9 = GUICtrlCreateButton("Clear Offline", 490, 20, 65, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_Load()
Case $Button2
_pingitem()
Case $Button3
_pingall()
Case $Button4
_export()
EndSwitch
WEnd
Func _export()
[/autoit] [autoit][/autoit] [autoit]$hWnd = $ListView1
$path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
If @error Then Exit MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
EndFunc ;==>_export
[/autoit] [autoit][/autoit] [autoit]Func _Load() ; Datenbank-Datei laden
_GUICtrlListView_DeleteAllItems($ListView1) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
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($ListView1) ; 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, $ListView1) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
WEnd
_GUICtrlListView_EndUpdate($ListView1) ; Listview wieder freigeben
FileClose($hFile) ; Datei schließen
EndIf
EndFunc ;==>_Load
Func _insert()
$string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
_GUICtrlListView_DeleteAllItems($ListView1)
_GUICtrlListView_DeleteAllItems($ListView2)
_GUICtrlListView_DeleteAllItems($ListView3)
$array = StringSplit(FileRead($string), @CR)
For $i = 0 To UBound($array) - 1
GUICtrlCreateListViewItem($array[$i], $ListView1)
Next
EndFunc ;==>_insert
Func _pingall()
_GUICtrlListView_DeleteAllItems($ListView2)
_GUICtrlListView_DeleteAllItems($ListView3)
Local $icount = _GUICtrlListView_GetItemCount($ListView1)
For $i = 0 To $icount - 1
$ListViewText = _GUICtrlListView_GetItemTextArray($ListView1, $i)
;consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1], 250)
If $var Then; Es geht auch If @error = 0 Then ...
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
EndIf
Next
EndFunc ;==>_pingall
Func _pingitem()
[/autoit] [autoit][/autoit] [autoit]$ListViewText = _GUICtrlListView_GetItemTextArray($ListView1)
;consolewrite($ListViewText[1]&@CRLF)
ConsoleWrite(Ping($ListViewText[1], 250))
$var = Ping($ListViewText[1], 250)
If $var Then; Es geht auch If @error = 0 Then ...
MsgBox(0, "Status", "Online, Antwortzeit war:" & $var)
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
Else
MsgBox(0, "Status", "Es ist ein Fehler mit der Nummer " & @error & " aufgetreten.")
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_pingitem
[/autoit] [autoit][/autoit] [autoit]Func _GUICtrlListView_Export($hWnd, $exType = 0, $Delim = Default) ; $exType=0 Array / $exType=1 String
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Local $row = _GUICtrlListView_GetItemCount($hWnd)
If $exType Then
If $Delim <> Default Then Local $oldDelim = Opt('GUIDataSeparatorChar', $Delim)
Local $sOut = ''
For $i = 0 To $row - 1
$sOut &= _GUICtrlListView_GetItemTextString($hWnd, $i) & @CRLF
Next
If $Delim <> Default Then Opt('GUIDataSeparatorChar', $oldDelim)
Return $sOut
EndIf
Local $col = _GUICtrlListView_GetColumnCount($hWnd)
Local $aOut[$row][$col]
If $col = 1 Then
ReDim $aOut[$row]
For $i = 0 To UBound($aOut) - 1
$aOut[$i] = _GUICtrlListView_GetItemText($hWnd, $i)
Next
Return $aOut
EndIf
For $i = 0 To UBound($aOut) - 1
For $j = 0 To UBound($aOut, 2) - 1
$aOut[$i][$j] = _GUICtrlListView_GetItemText($hWnd, $i, $j)
Next
Next
Return $aOut
EndFunc ;==>_GUICtrlListView_Export
So.
und jetzt mach dir eine .txt Datei mit folgendem Inhalt
Bei 127.0.0.1 kommts ins Listview online und bei test ins Listview offline.
Es läuft danke für deine hilfe.............................
eine aller letzte frage habe ich noch wollte in einem label die anzahl der clients schreiben
hast du eine idee wie ich die clients in der listview zählen kann und die anzahl in ein label packen kann?
Ich geb dir nen Tipp:
_GUICtrlListView_GetItemCount & GUICtrlSetData
sollte zum Ziel führen
Hey,
bin jetzt endgültig fertig Funktioniert auch:
will aber 2 kleine sachen einbauen vielleicht hat jemand da eine idee?
1. Stop Botton falls ich eine längere liste von rechner pinge will ich auch abrechen können ohne die Gui abzuschiessen zu müssen?
2. hat jemand eine idee wie ich ein Schnelleren Ping hinkriege wo ich die rechner schneller Prüfen kann?
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <array.au3>
#Include <File.au3>
#Include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
Local $ad, $array1, $x = 0
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Ping Tool", 700, 510, 257, 323)
$ListView1 = GUICtrlCreateListView("Hostname", 24, 48, 170, 342)
GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 160) ; setzt die 1. Spalte des Listviews auf 160 Pixel Breite
$ListView2 = GUICtrlCreateListView("Online", 224, 48, 170, 342)
GUICtrlSendMsg($ListView2, $LVM_SETCOLUMNWIDTH, 0, 160)
$ListView3 = GUICtrlCreateListView("Offline", 424, 48, 186, 342)
GUICtrlSendMsg($ListView3, $LVM_SETCOLUMNWIDTH, 0, 160)
$hostladen = GUICtrlCreateButton("PC`s Laden", 24, 400, 60, 25, 0)
$check = GUICtrlCreateButton("Check", 24, 432, 50, 25, 0)
$stop = GUICtrlCreateButton("Stop", 24, 460, 50, 25, 0)
$checkall = GUICtrlCreateButton("Check All", 75, 432, 50, 25, 0)
$export1 = GUICtrlCreateButton("export1", 136, 400, 59, 25, 0)
$export2 = GUICtrlCreateButton("export2", 336, 400, 59, 25, 0)
$export3 = GUICtrlCreateButton("export3", 552, 400, 59, 25, 0)
$chost = GUICtrlCreateButton("Clear Host", 80, 20, 59, 25, 0)
$countoffline = GUICtrlCreateLabel("", 575, 20, 65, 25)
$conline = GUICtrlCreateButton("Clear Online", 270, 20, 65, 25, 0)
$countonline = GUICtrlCreateLabel("", 360, 20, 65, 25)
$coffline = GUICtrlCreateButton("Clear Offline", 490, 20, 65, 25, 0)
$counthost = GUICtrlCreateLabel("", 160, 20, 65, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $hostladen
_Load()
Case $check
_pingitem()
case $checkall
_pingall()
Case $coffline
_GUICtrlListView_DeleteAllItems($ListView3)
Case $conline
_GUICtrlListView_DeleteAllItems($ListView2)
Case $chost
_GUICtrlListView_DeleteAllItems($ListView1)
case $export1
_export1()
case $export2
_export2()
case $export3
_export2()
EndSwitch
WEnd
Func _export1()
; $path = FileSaveDialog('ListView-Export speichern', @ScriptDir, '(*.txt)')
; $hWnd = $listview1
; FileWrite($path, _GUICtrlListView_Export $hWnd, 1, ',')
;FileWrite($path, _GUICtrlListView_Export ($hWnd, 1, ',')
$hWnd = $listview1
$path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
If @error Then Exit MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
EndFunc
Func _export2()
; $path = FileSaveDialog('ListView-Export speichern', @ScriptDir, '(*.txt)')
; $hWnd = $listview1
; FileWrite($path, _GUICtrlListView_Export $hWnd, 1, ',')
;FileWrite($path, _GUICtrlListView_Export ($hWnd, 1, ',')
$hWnd = $listview2
$path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
If @error Then Exit MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
EndFunc
Func _export3()
; $path = FileSaveDialog('ListView-Export speichern', @ScriptDir, '(*.txt)')
; $hWnd = $listview1
; FileWrite($path, _GUICtrlListView_Export $hWnd, 1, ',')
;FileWrite($path, _GUICtrlListView_Export ($hWnd, 1, ',')
$hWnd = $listview3
$path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
If @error Then Exit MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
EndFunc
Func _Load() ; Datenbank-Datei laden
_GUICtrlListView_DeleteAllItems($ListView1) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
_count()
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($ListView1) ; 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, $ListView1) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
WEnd
_GUICtrlListView_EndUpdate($ListView1) ; Listview wieder freigeben
FileClose($hFile) ; Datei schließen
_count()
EndIf
EndFunc ;==>_Load
Func _insert()
$string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
_GUICtrlListView_DeleteAllItems($ListView1)
_GUICtrlListView_DeleteAllItems($ListView2)
_GUICtrlListView_DeleteAllItems($ListView3)
$array = StringSplit(FileRead($string),@CR)
For $i = 0 To UBound($array) - 1
GUICtrlCreateListViewItem($array[$i], $ListView1)
Next
EndFunc
Func _pingall()
_count()
_GUICtrlListView_DeleteAllItems($ListView2)
_GUICtrlListView_DeleteAllItems($ListView3)
local $icount = _GUICtrlListView_GetItemCount($ListView1)
for $i = 0 to $icount -1
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1, $i)
;consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
Switch @error
Case 1
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
_count()
Case 2
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
_count()
Case 3
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
_count()
Case 4
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
_count()
case Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
_count()
EndSwitch
next
EndFunc
Func _pingitem()
_count()
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],100)
If $var Then
GUICtrlCreateListViewItem($ListViewText[1] & " online Antwortzeit: " & $var , $ListView2)
_count()
;Msgbox(0,"Status","Online, Antwortzeit war:" & $var)
Else
GUICtrlCreateListViewItem($ListViewText[1] & " offline Fehler: " & @error , $ListView3)
_count()
;Msgbox(0,"Status","Es ist ein Fehler mit der Nummer " & @error & " aufgetreten.")
EndIf
EndFunc
Func _GUICtrlListView_Export($hWnd, $exType=0, $Delim=Default) ; $exType=0 Array / $exType=1 String
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Local $row = _GUICtrlListView_GetItemCount($hWnd)
If $exType Then
If $Delim <> Default Then Local $oldDelim = Opt('GUIDataSeparatorChar', $Delim)
Local $sOut = ''
For $i = 0 To $row -1
$sOut &= _GUICtrlListView_GetItemTextString($hWnd, $i) & @CRLF
Next
If $Delim <> Default Then Opt('GUIDataSeparatorChar', $oldDelim)
Return $sOut
EndIf
Local $col = _GUICtrlListView_GetColumnCount($hWnd)
Local $aOut[$row][$col]
If $col = 1 Then
ReDim $aOut[$row]
For $i = 0 To UBound($aOut) -1
$aOut[$i] = _GUICtrlListView_GetItemText($hWnd, $i)
Next
Return $aOut
EndIf
For $i = 0 To UBound($aOut) -1
For $j = 0 To UBound($aOut, 2) -1
$aOut[$i][$j] = _GUICtrlListView_GetItemText($hWnd, $i, $j)
Next
Next
Return $aOut
EndFunc
Func _count()
$lv1count = _GUICtrlListView_GetItemCount($ListView1)
$lv2count = _GUICtrlListView_GetItemCount($ListView2)
$lv3count = _GUICtrlListView_GetItemCount($ListView3)
GUICtrlSetData($counthost, $lv1count)
GUICtrlSetData($countonline, $lv2count)
GUICtrlSetData($countoffline, $lv3count)
EndFunc
Punkt1: Mit solchen Problemen habe ich regelmäßig auch zu kämpfen.
Ob sich das mit autoit überhaupt so ganz optimal lösen lässt? Schließlich wird eben Zeile für Zeile das Skript interpretiert.
Hier mal eine Möglichkeit.
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <array.au3>
#Include <File.au3>
#Include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
Local $ad, $array1, $x = 0
global $dummy = 0 ;um die Pingall Schleife zu verlassen wird dieser Wert später auf 1 gesetzt (s. WM_Command & _Pingall )
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Ping Tool", 700, 510, 257, 323)
$ListView1 = GUICtrlCreateListView("Hostname", 24, 48, 170, 342)
GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 160) ; setzt die 1. Spalte des Listviews auf 160 Pixel Breite
$ListView2 = GUICtrlCreateListView("Online", 224, 48, 170, 342)
GUICtrlSendMsg($ListView2, $LVM_SETCOLUMNWIDTH, 0, 160)
$ListView3 = GUICtrlCreateListView("Offline", 424, 48, 186, 342)
GUICtrlSendMsg($ListView3, $LVM_SETCOLUMNWIDTH, 0, 160)
$hostladen = GUICtrlCreateButton("PC`s Laden", 24, 400, 60, 25, 0)
$check = GUICtrlCreateButton("Check", 24, 432, 50, 25, 0)
$stop = GUICtrlCreateButton("Stop", 24, 460, 50, 25, 0)
$checkall = GUICtrlCreateButton("Check All", 75, 432, 50, 25, 0)
$export1 = GUICtrlCreateButton("export1", 136, 400, 59, 25, 0)
$export2 = GUICtrlCreateButton("export2", 336, 400, 59, 25, 0)
$export3 = GUICtrlCreateButton("export3", 552, 400, 59, 25, 0)
$chost = GUICtrlCreateButton("Clear Host", 80, 20, 59, 25, 0)
$countoffline = GUICtrlCreateLabel("", 575, 20, 65, 25)
$conline = GUICtrlCreateButton("Clear Online", 270, 20, 65, 25, 0)
$countonline = GUICtrlCreateLabel("", 360, 20, 65, 25)
$coffline = GUICtrlCreateButton("Clear Offline", 490, 20, 65, 25, 0)
$counthost = GUICtrlCreateLabel("", 160, 20, 65, 25)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $hostladen
_Load()
Case $check
_pingitem()
case $checkall
_pingall()
Case $coffline
_GUICtrlListView_DeleteAllItems($ListView3)
Case $conline
_GUICtrlListView_DeleteAllItems($ListView2)
Case $chost
_GUICtrlListView_DeleteAllItems($ListView1)
case $export1
_export1()
case $export2
_export2()
case $export3
_export2()
EndSwitch
WEnd
Func _export1()
; $path = FileSaveDialog('ListView-Export speichern', @ScriptDir, '(*.txt)')
; $hWnd = $listview1
; FileWrite($path, _GUICtrlListView_Export $hWnd, 1, ',')
;FileWrite($path, _GUICtrlListView_Export ($hWnd, 1, ',')
$hWnd = $listview1
$path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
If @error Then Exit MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
EndFunc
Func _export2()
; $path = FileSaveDialog('ListView-Export speichern', @ScriptDir, '(*.txt)')
; $hWnd = $listview1
; FileWrite($path, _GUICtrlListView_Export $hWnd, 1, ',')
;FileWrite($path, _GUICtrlListView_Export ($hWnd, 1, ',')
$hWnd = $listview2
$path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
If @error Then Exit MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
EndFunc
Func _export3()
; $path = FileSaveDialog('ListView-Export speichern', @ScriptDir, '(*.txt)')
; $hWnd = $listview1
; FileWrite($path, _GUICtrlListView_Export $hWnd, 1, ',')
;FileWrite($path, _GUICtrlListView_Export ($hWnd, 1, ',')
$hWnd = $listview3
$path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
If @error Then Exit MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
EndFunc
Func _Load() ; Datenbank-Datei laden
_GUICtrlListView_DeleteAllItems($ListView1) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
_count()
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($ListView1) ; 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, $ListView1) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
WEnd
_GUICtrlListView_EndUpdate($ListView1) ; Listview wieder freigeben
FileClose($hFile) ; Datei schließen
_count()
EndIf
EndFunc ;==>_Load
Func _insert()
$string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
_GUICtrlListView_DeleteAllItems($ListView1)
_GUICtrlListView_DeleteAllItems($ListView2)
_GUICtrlListView_DeleteAllItems($ListView3)
$array = StringSplit(FileRead($string),@CR)
For $i = 0 To UBound($array) - 1
GUICtrlCreateListViewItem($array[$i], $ListView1)
Next
EndFunc
Func _pingall()
_count()
_GUICtrlListView_DeleteAllItems($ListView2)
_GUICtrlListView_DeleteAllItems($ListView3)
local $icount = _GUICtrlListView_GetItemCount($ListView1)
for $i = 0 to $icount -1
if $dummy = 1 then
$dummy = 0
return
endif
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1, $i)
;consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],250)
Switch @error
Case 1
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
_count()
Case 2
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
_count()
Case 3
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
_count()
Case 4
GUICtrlCreateListViewItem($ListViewText[1], $ListView3)
_count()
case Else
GUICtrlCreateListViewItem($ListViewText[1], $ListView2)
_count()
EndSwitch
next
EndFunc
Func _pingitem()
_count()
$ListViewText = _GUICtrlListView_GetItemTextArray($listview1)
consolewrite($ListViewText[1]&@CRLF)
$var = Ping($ListViewText[1],100)
If $var Then
GUICtrlCreateListViewItem($ListViewText[1] & " online Antwortzeit: " & $var , $ListView2)
_count()
;Msgbox(0,"Status","Online, Antwortzeit war:" & $var)
Else
GUICtrlCreateListViewItem($ListViewText[1] & " offline Fehler: " & @error , $ListView3)
_count()
;Msgbox(0,"Status","Es ist ein Fehler mit der Nummer " & @error & " aufgetreten.")
EndIf
EndFunc
Func _GUICtrlListView_Export($hWnd, $exType=0, $Delim=Default) ; $exType=0 Array / $exType=1 String
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Local $row = _GUICtrlListView_GetItemCount($hWnd)
If $exType Then
If $Delim <> Default Then Local $oldDelim = Opt('GUIDataSeparatorChar', $Delim)
Local $sOut = ''
For $i = 0 To $row -1
$sOut &= _GUICtrlListView_GetItemTextString($hWnd, $i) & @CRLF
Next
If $Delim <> Default Then Opt('GUIDataSeparatorChar', $oldDelim)
Return $sOut
EndIf
Local $col = _GUICtrlListView_GetColumnCount($hWnd)
Local $aOut[$row][$col]
If $col = 1 Then
ReDim $aOut[$row]
For $i = 0 To UBound($aOut) -1
$aOut[$i] = _GUICtrlListView_GetItemText($hWnd, $i)
Next
Return $aOut
EndIf
For $i = 0 To UBound($aOut) -1
For $j = 0 To UBound($aOut, 2) -1
$aOut[$i][$j] = _GUICtrlListView_GetItemText($hWnd, $i, $j)
Next
Next
Return $aOut
EndFunc
Func _count()
$lv1count = _GUICtrlListView_GetItemCount($ListView1)
$lv2count = _GUICtrlListView_GetItemCount($ListView2)
$lv3count = _GUICtrlListView_GetItemCount($ListView3)
GUICtrlSetData($counthost, $lv1count)
GUICtrlSetData($countonline, $lv2count)
GUICtrlSetData($countoffline, $lv3count)
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($stop) Then $hWndbutton = GUICtrlGetHandle($stop)
$hWndFrom = $ilParam
Switch $hWndFrom
Case $stop, $hWndbutton
$dummy = 1
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND (Bugfix - http://www.autoit.de)
Punkt2: Ist dabei nicht Windows die eigentliche Bremse?