hey,
ich habe jetzt das grundkonzept zu einem script fertig, das laufend verschiedene ips anpingen soll. während des vorgangs soll man natürlich auch ips hinzufügen/löschen oder die settings ändern können.
das geht über TrayItems.
doch leider funzt das nur 1 mal, danach reagiert das programm auf kein einziges trayitem mehr.
bin mir nicht sicher wo der fehler sein soll:
Spoiler anzeigen
#Include <GuiConstants.au3>
#include <Array.au3>
#include <GuiListBox.au3>
#include <file.au3>
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#Include <WinAPI.au3>
Opt("TrayIconHide", 0)
Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1)
Opt("GuiOnEventMode",1)
FileInstall("No.ico", @ScriptDir & "\Icons\No.ico")
FileInstall("Yes.ico", @ScriptDir & "\Icons\Yes.ico")
Global $addip, $addname, $anz, $badd, $bclear, $bexit, $BL, $bok, $BR, $bremove, $bsave, $bstandard, $cbtooltip, $cbwindow, $corner, $cornerBL, $cornerBR, $cornerTL, $cornerTR, $count, $DeskX, $DeskY, $error1, $error2, $gui, $GuiIP, $GuiSettings, $h, $i, $Ih, $Iintervall, $ini, $Intervall, $ips, $ips2, $Itimeout, $Iw, $lineIndex, $list, $list2, $pathIPs, $Paused, $ping, $pingip, $SaveIPs, $script, $SectionIP, $Sections, $slider, $state, $timeout, $TL, $tool, $ToolTipEnabled, $TR, $trans, $urllist, $varIP, $w, $WinEnabled, $x, $y
[/autoit] [autoit][/autoit] [autoit]$pathIPs = @ScriptDir & "\Destiny.ini"
$script = "WhoIsOn RelOadEd"
$ini = @ScriptDir & "\Settings.ini"
$intervall = 10000
$timeout = 4000
$corner = 3
$WinEnabled = 1
$ToolTipEnabled = 1
$trans = 40
$w = 300
$h = 200
$error1 = 0
$error2 = 0
$DeskX = @DesktopWidth
$DeskY = @DesktopHeight
HotKeySet("!{End}", "_OnExitFunc")
HotKeySet("!{PAUSE}", "TogglePause")
HotKeySet("^!g",'_ShowGUI')
HotKeySet("^!t", "TrayIcon")
HotKeySet("^!s",'_Settings')
HotKeySet("^!c", "_Change")
TrayCreateItem("Settings")
TrayItemSetOnEvent(-1,"_Settings")
TrayCreateItem("Change IPs")
TrayItemSetOnEvent(-1,"_Change")
TrayCreateItem("-")
TrayCreateItem("Hide/Show")
TrayItemSetOnEvent(-1,"_ShowGUI")
TrayCreateItem("Exit")
TrayItemSetOnEvent(-1,"_OnExitFunc")
If FileExists($ini) Then
$intervall = IniRead($ini, "Ping", "Intervall", $intervall)
$timeout = IniRead($ini, "Position", "Timeout", $timeout)
$corner = IniRead($ini, "Position", "Corner", $corner)
$WinEnabled = IniRead($ini, "Window", "Enabled", $WinEnabled)
$w = IniRead($ini, "Window", "Weight", $w)
$h = IniRead($ini, "Window", "Height", $h)
$trans = IniRead($ini, "Window", "Transparency", $trans)
$ToolTipEnabled = IniRead($ini, "ToolTip", "Enabled", $ToolTipEnabled)
Else
IniWrite($ini, "Ping", "Intervall", $intervall)
IniWrite($ini, "Ping", "Timeout", $timeout)
IniWrite($ini, "Position", "Corner", $corner)
IniWrite($ini, "Window", "Enabled", $WinEnabled)
IniWrite($ini, "Window", "Weight", $w)
IniWrite($ini, "Window", "Height", $h)
IniWrite($ini, "Window", "Transparency", $trans)
IniWrite($ini, "ToolTip", "Enabled", $ToolTipEnabled)
EndIf
If $corner = 1 Then
$x = 5
$y = 5
ElseIf $corner = 2 Then
$x = $DeskX - $w - 5
$y = 5
ElseIf $corner = 3 Then
$x = $DeskX - $w - 5
$y = $DeskY - $h - 35
ElseIf $corner = 4 Then
$x = 5
$y = $DeskY -$h - 35
EndIf
$gui = GUICreate($script, $w, $h, $x, $y, $WS_POPUPWINDOW, $WS_EX_TRANSPARENT + $WS_EX_TOOLWINDOW )
WinSetOnTop($script,'',1)
WinSetTrans($script,'', (100 - $trans) * 2.55)
$list2 = _GUICtrlListView_Create($gui,"||", 5, 5, $w - 10, $h - 10)
_GUICtrlListView_SetColumn($list2, 0, "Name", ($w / 2) - 30, 2)
_GUICtrlListView_SetColumn($list2, 1, "IP", ($w / 2) - 30, 2)
_GUICtrlListView_SetColumn($list2, 2, "Status", 50, 2)
If FileExists($pathIPs) Then
$Sections = IniReadSectionNames($pathIPs)
If $Sections = 0 Then
Else
$lineIndex = 0
For $i = 1 To $Sections[0]
$varIP = IniReadSection($pathIPs, $Sections[$i])
_GUICtrlListView_AddItem($list2, $varIP[1][0])
_GUICtrlListView_AddSubItem($list2, $lineIndex, $Sections[$i], 1)
_GUICtrlListView_AddSubItem($list2, $lineIndex, $varIP[1][1], 2)
$lineIndex += 1
Next
EndIf
Else
EndIf
GUISetState(@SW_SHOW, $gui)
_PingProc()
Func _PingProc()
While 1
$count = _GUICtrlListView_GetItemCount($list2)
For $i = 0 To $count - 1
$pingip = _GUICtrlListView_GetItemText($list2, $i, 1)
Ping($pingip, $timeout)
Next
Sleep($Intervall)
WEnd
EndFunc
Func _Change()
$GuiIP = GUICreate($script & " Destiny IPs", 345, 310)
GUISetOnEvent($GUI_EVENT_CLOSE, "_ExitSettings")
$list = _GUICtrlListView_Create($GuiIP,"|", 5, 5, 250, 300)
_GUICtrlListView_SetColumn($list, 0, "Name", 120, 2)
_GUICtrlListView_SetColumn($list, 1, "IP", 125, 2)
If FileExists($pathIPs) Then
$Sections = IniReadSectionNames($pathIPs)
$lineIndex = 0
For $i = 1 To $Sections[0]
$varIP = IniReadSection($pathIPs, $Sections[$i])
_GUICtrlListView_AddItem($list, $varIP[1][0])
_GUICtrlListView_AddSubItem($list, $lineIndex, $Sections[$i], 1)
;~ _GUICtrlListView_AddSubItem($list2, $lineIndex, $varIP[1][1], 2)
$lineIndex += 1
Next
Else
EndIf
$badd = GUICtrlCreateButton("&add", 260, 10, 80)
GUICtrlSetOnEvent(-1, "_AddIP")
$bremove = GUICtrlCreateButton("&remove", 260, 50, 80)
GUICtrlSetOnEvent(-1, "_RemoveIP")
$bclear = GUICtrlCreateButton("&clear", 260, 90, 80)
GUICtrlSetOnEvent(-1, "_ClearIP")
$bok = GUICtrlCreateButton("&ok", 260, 280, 80)
GUICtrlSetOnEvent(-1, "_SaveIP")
GUISetState(@SW_SHOW, $GuiIP)
While 1
Sleep(100)
WEnd
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _AddIP()
Do
$addname = InputBox("Name", "Please enter a name", "", "", 100, 130)
If @error = 1 Then
$error1 = 1
ExitLoop
Else
EndIf
until $addname <> ""
If $error1 = 1 Then
Else
Do
$addip = InputBox("IP", "Please enter the IP", "", "", 100, 130)
If @error = 1 Then
$error2 = 1
ExitLoop
Else
EndIf
Until StringRegExp($addip, "[0-9]+")
If $error2 <> 1 Then
_GUICtrlListView_AddItem($list, $addname)
_guictrllistview_AddSubItem($list, _GUICtrlListView_GetItemCount($list) - 1, $addip, 1)
Else
EndIf
EndIf
$error1 = 0
$error2 = 0
EndFunc
Func _RemoveIP()
_GUICtrlListView_DeleteItemsSelected($list)
EndFunc
Func _ClearIP()
_GUICtrlListView_DeleteAllItems($list)
EndFunc
Func _SaveIP()
FileDelete($pathIPs)
$anz = _GUICtrlListView_GetItemCount($list)
If $anz = 0 Then
Else
For $i = 1 To $anz
IniWrite($pathIPs, _GUICtrlListView_GetItemText($list, $i - 1, 1), _GUICtrlListView_GetItemText($list, $i - 1), "-")
Next
EndIf
GUISetState(@SW_HIDE, $GuiIP)
If FileExists($pathIPs) Then
$Sections = IniReadSectionNames($pathIPs)
$lineIndex = 0
For $i = 1 To $Sections[0]
$varIP = IniReadSection($pathIPs, $Sections[$i])
_GUICtrlListView_AddItem($list2, $varIP[1][0])
_GUICtrlListView_AddSubItem($list2, $lineIndex, $Sections[$i], 1)
_GUICtrlListView_AddSubItem($list2, $lineIndex, $varIP[1][1], 2)
$lineIndex += 1
Next
Else
EndIf
_PingProc()
EndFunc
Func _Settings()
$GuiSettings = GUICreate($script & " Settings", 450, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "_ExitSettings")
;ToolTip
GUICtrlCreateGroup("Tooltip", 5, 5, 135, 60)
$cbtooltip = GUICtrlCreateCheckbox("Enable ToolTip", 25, 30, 100)
GUICtrlSetTip(-1, "Enables the ToolTip-Information")
GUICtrlSetState($cbtooltip, IniRead($ini, "ToolTip", "Enabled", $ToolTipEnabled))
;ping
GUICtrlCreateGroup("Ping", 5, 70, 135, 120)
GUICtrlCreateLabel("Intervall:", 15, 105, 40)
GUICtrlSetTip(-1, "Time between pings in miliseconds")
$Iintervall = GUICtrlCreateInput(IniRead($ini, "Ping", "Intervall", $intervall), 60, 100, 50)
GUICtrlCreateLabel("ms", 115, 105, 20)
GUICtrlCreateLabel("Timeout:", 15, 140, 40)
GUICtrlSetTip(-1, "Timeout after no response in miliseconds")
$Itimeout = GUICtrlCreateInput(IniRead($ini, "Ping", "Timeout", $timeout), 60, 135, 50)
GUICtrlCreateLabel("ms", 115, 140, 20)
;weight & height
GUICtrlCreateGroup("Window", 150, 5, 200, 100)
$cbwindow = GUICtrlCreateCheckbox("Enable Info-Window", 160, 20, 120)
GUICtrlSetTip(-1, "Enables the Information-Window on startup")
GUICtrlSetState($cbwindow, IniRead($ini, "Window", "Enabled", $WinEnabled))
GUICtrlSetOnEvent($cbwindow, "_DisabelWindow")
GUICtrlCreateLabel("Weight:", 180, 50, 40)
GUICtrlSetTip(-1, "Wight of the Information-Window")
$Iw = GUICtrlCreateInput(IniRead($ini, "Window", "Weight", $w), 220, 45, 50)
GUICtrlCreateLabel("mm", 275, 50, 20)
GUICtrlCreateLabel("Height:", 180, 80, 40)
GUICtrlSetTip(-1, "Hight of the Information-Window")
$Ih = GUICtrlCreateInput(IniRead($ini, "Window", "Height", $h), 220, 75, 50)
GUICtrlCreateLabel("mm", 275, 80, 20)
$slider = GUICtrlCreateSlider(300, 15, 25, 85, $TBS_VERT + $TBS_AUTOTICKS)
GUICtrlSetTip(-1, "Transparency of the Information-Window")
GUICtrlSetLimit($slider,100,0)
GUICtrlSetData($slider,IniRead($ini, "Window", "Transparency", $trans))
GUICtrlCreateLabel("0", 335, 15, 10, 15)
GUICtrlCreateLabel("100", 327, 85, 20, 15)
;corner
GUICtrlCreateGroup("Corner Position", 150, 110, 200, 80)
$TL = GUICtrlCreateRadio("Top Left", 160, 125, 60)
GUICtrlSetTip(-1, "Position the Information-Window appears")
$TR = GUICtrlCreateRadio("Top Right", 255, 125, 65)
GUICtrlSetTip(-1, "Position the Information-Window appears")
$BR = GUICtrlCreateRadio("Bottom Right", 255, 160, 80)
GUICtrlSetTip(-1, "Position the Information-Window appears")
$BL = GUICtrlCreateRadio("Bottom Left", 160, 160, 70)
GUICtrlSetTip(-1, "Position the Information-Window appears")
$corner = IniRead($ini, "Position", "Corner", $corner)
If $corner = 1 Then
GUICtrlSetState($TL, 1)
ElseIf $corner = 2 Then
GUICtrlSetState($TR, 1)
ElseIf $corner = 3 Then
GUICtrlSetState($BR, 1)
ElseIf $corner = 4 Then
GUICtrlSetState($BL, 1)
EndIf
;buttons
$bsave = GUICtrlCreateButton("save", 360, 10, 80)
GUICtrlSetOnEvent(-1, "_SaveSettings")
$bstandard = GUICtrlCreateButton("standard", 360, 45, 80)
GUICtrlSetOnEvent(-1, "_StandardSettings")
$bexit = GUICtrlCreateButton("exit", 360, 160, 80)
GUICtrlSetOnEvent(-1, "_ExitSettings")
GUISetState(@SW_SHOW, $GuiSettings)
While 1
Sleep(100)
WEnd
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _SaveSettings()
IniWrite($ini, "Ping", "Intervall", GUICtrlRead($Iintervall))
IniWrite($ini, "Ping", "Timeout", GUICtrlRead($Itimeout))
IniWrite($ini, "Window", "Enabled", GUICtrlRead($cbwindow))
IniWrite($ini, "Window", "Weight", GUICtrlRead($Iw))
IniWrite($ini, "Window", "Height", GUICtrlRead($Ih))
IniWrite($ini, "Window", "Transparency", GUICtrlRead($slider))
IniWrite($ini, "ToolTip", "Enabled", GUICtrlRead($cbtooltip))
$cornerTL = GUICtrlRead($TL)
$cornerTR = GUICtrlRead($TR)
$cornerBR = GUICtrlRead($BR)
$cornerBL = GUICtrlRead($BL)
If $cornerTL = 1 Then
IniWrite($ini, "Position", "Corner", "1")
ElseIf $cornerTR = 1 Then
IniWrite($ini, "Position", "Corner", "2")
ElseIf $cornerBR = 1 Then
IniWrite($ini, "Position", "Corner", "3")
ElseIf $cornerBL = 1 Then
IniWrite($ini, "Position", "Corner", "4")
EndIf
EndFunc
Func _StandardSettings()
GUICtrlSetData($Iintervall, "10000")
GUICtrlSetData($Itimeout, "4000")
GUICtrlSetState($cbwindow, 1)
GUICtrlSetData($Iw, 300)
GUICtrlSetData($Ih, 200)
GUICtrlSetData($slider, 40)
GUICtrlSetState($cbtooltip, 1)
GUICtrlSetState($TL, 0)
GUICtrlSetState($TR, 0)
GUICtrlSetState($BR, 1)
GUICtrlSetState($BL, 0)
GUICtrlSetState($Iw, $GUI_ENABLE)
GUICtrlSetState($Ih, $GUI_ENABLE)
GUICtrlSetState($slider, $GUI_ENABLE)
EndFunc
Func _ExitSettings()
GUISetState(@SW_HIDE, $GuiSettings)
$intervall = IniRead($ini, "Ping", "Intervall", $intervall)
$timeout = IniRead($ini, "Position", "Timeout", $timeout)
$corner = IniRead($ini, "Position", "Corner", $corner)
$WinEnabled = IniRead($ini, "Window", "Enabled", $WinEnabled)
$w = IniRead($ini, "Window", "Weight", $w)
$h = IniRead($ini, "Window", "Height", $h)
$trans = IniRead($ini, "Window", "Transparency", $trans)
$ToolTipEnabled = IniRead($ini, "ToolTip", "Enabled", $ToolTipEnabled)
If $corner = 1 Then
$x = 5
$y = 5
ElseIf $corner = 2 Then
$x = $DeskX - $w - 5
$y = 5
ElseIf $corner = 3 Then
$x = $DeskX - $w - 5
$y = $DeskY - $h - 35
ElseIf $corner = 4 Then
$x = 5
$y = $DeskY -$h - 35
EndIf
WinMove($script, "", $x, $y, $w, $h)
WinSetTrans($script,'', (100 - $trans) * 2.55)
_WinAPI_SetWindowPos($list2, 0, 5, 5, $w - 10, $h - 10, $SWP_SHOWWINDOW)
_GUICtrlListView_SetColumn($list2, 0, "Name", ($w / 2) - 30, 2)
_GUICtrlListView_SetColumn($list2, 1, "IP", ($w / 2) - 30, 2)
_GUICtrlListView_SetColumn($list2, 2, "Status", 50, 2)
_PingProc()
[/autoit] [autoit][/autoit] [autoit]EndFunc
Func _DisabelWindow()
If GUICtrlRead($cbwindow) = 1 Then
GUICtrlSetState($Iw, $GUI_ENABLE)
GUICtrlSetState($Ih, $GUI_ENABLE)
GUICtrlSetState($slider, $GUI_ENABLE)
Else
GUICtrlSetState($Iw, $GUI_DISABLE)
GUICtrlSetState($Ih, $GUI_DISABLE)
GUICtrlSetState($slider, $GUI_DISABLE)
EndIf
EndFunc
Func _OnExitFunc()
Exit
EndFunc
;Tray-Icon
Func TrayIcon()
Opt("TrayIconHide", Not Opt("TrayIconHide", "Default"))
EndFunc
;Pause
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip(@ScriptName & ' is paused')
WEnd
ToolTip("")
EndFunc
Func _ShowGUI()
$state = WinGetState('WhoIsOn','')
If BitAnd($state, 2) Then
WinSetState('WhoIsOn','',@SW_HIDE)
ToolTip('',-1,-1,'','',2)
$tool = 1
Else
WinSetState('WhoIsOn','',@SW_SHOW)
$tool = 0
EndIf
EndFunc