Hallo,
Aufgabenstellung:
Ich habe 2 Listviews, in der Ersten werden User welche aus einer Datei ausgelesen werden angezeigt. Wenn ich einen user markiere und dann auf einen button drücke dann erscheint in einer zweiten Listview alle Computer wo dieser user einmal angemeldet war.
Ich möchte mir das drücken auf den Button sparen und dieses mit einem Doppelclick auf den listen eintrag erledigen.
Ist das möglich? Und wenn ja, wie?
Anbei einmal mein Script
Spoiler anzeigen
#include <Array.au3>
#include <GUIConstants.au3>
Dim $file = "\\userfile.dat"
Dim $avErgebnis[300][2]
GUICreate("Who´s Online? (er) " & FileGetVersion(@ScriptName), 250, 200)
GUICtrlCreateLabel("Who´s Online?", 40, 10, 180)
GUICtrlSetFont(-1, 15)
$pingbutton = GUICtrlCreateButton("ping", 160, 155, 60)
$showclientbutton = GUICtrlCreateButton(">>", 115, 60, 20, 15)
$exitbutton = GUICtrlCreateButton("exit", 35, 155, 60)
$userlist = GUICtrlCreateList("", 10, 50, 100, 100)
$clientlist = GUICtrlCreateList("", 140, 50, 100, 100)
_filluserlist()
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $showclientbutton
_fillclientlist()
Case $msg = $exitbutton
ExitLoop
Case $msg = $pingbutton
_pingclient()
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
Func _filluserlist()
$result = IniReadSection($file, "PSF-User")
For $i = 1 To $result[0][0]
$split = StringSplit($result[$i][0], "_")
For $n = 1 To $split[0]
$search = StringInStr($split[$n], "GEJ")
If $search <> 0 Then
$avErgebnis[$i][0] = $split[$n - 1]
$avErgebnis[$i][1] = $split[$n]
GUICtrlSetData($userlist, $split[$n - 1])
EndIf
Next
Next
EndFunc ;==>_filluserlist
Func _fillclientlist()
GUICtrlSetData($clientlist, "")
$user = GUICtrlRead($userlist)
For $o = 1 To 299
$client = StringInStr($avErgebnis[$o][0], $user)
If $client <> 0 Then
GUICtrlSetData($clientlist, $avErgebnis[$o][1], "test")
EndIf
Next
EndFunc ;==>_fillclientlist
Func _pingclient()
$host = GUICtrlRead($clientlist)
TrayTip("Who´s online?", "sende pakete zu " & $host, 1)
$ttl = Ping($host, 1000)
If $ttl > 0 Then
$pingresult = "is online"
ElseIf @error = 1 Then
$pingresult = "is offline"
ElseIf @error = 2 Then
$pingresult = "is unreachable"
ElseIf @error = 3 Then
$pingresult = "bad destination"
ElseIf @error = 4 Then
$pingresult = "other errors"
EndIf
MsgBox(0, "Who´s online (er)", $host & @CRLF & $pingresult)
EndFunc ;==>_pingclient
Ich bedanke ich für eure inovative Lösung jetzt schon einmal im Voraus.