Hallo,
Ich habe versucht ein Dynymisches Gui zu realisieren.
Vieleicht hilft das ja jemanden.
Da ich auf mein Post keine Reaktion bekommen habe versuche ich es hier dann noch einmal :party4:
Gesteuert wird das Gui über eine INI Datei.
Unter STARTPUNKT wird Festgelegt wo die Y,X Startkooridinaten sind.
Dann kann man noch mit Breite und die Höhe das Aussehen des GUI Festers einstellen. Das muß man einfach mal ausprobieren. Wichtig ist auch noch der Abstand der beim hinzufügen einer Zeile berücksichtigt wird.
TITEL stellt natürlich den Titel des Fensters ein.
Dieses Beispiel ist für eine Schleife die meherer IP Adressen nacheinander anpingt und den Status mittels einer grünen oder roten Kugel anzeigt.
Ich überprüfe damit welche VPN Clients gerade angemeldet sind. Man könnte aber auch verschiedene Rechner im Netzwerk abfragen, z.B. Router, Netzwerkdrucker, NAS usw.
Hier die INI Datei "dynamisches_Gui.ini"
Spoiler anzeigen
[Startpunkt]
X=0
Y=0
with=110
height=20
abstand=24
titel=VPNSTATUS
[Entrys]
Edit_ip1="127.0.0.1"
Edit_name1="localhost"
Edit_IP2="10.3.0.2"
Edit_name2="PC1"
Edit_ip3="10.3.0.6"
Edit_name3="PC2"
Edit_IP4="10.3.0.10"
Hier nun das eigendliche Script.
Der Hotkey zum beenden ist ESC.
Spoiler anzeigen
#include <array.au3>
#include <GuiConstants.au3>
dim $with, $height, $var, $x, $y, $y2, $abstand, $Edit_IP, $titel, $yNR, $nr, $bubble1, $edit, $zaehler, $EditNR, $bubble
Opt("TrayIconDebug", 1) ; zeigt am trayicon welchen Befehl das Script gerade Ausführt
;$PINGDELAY = 1000
HotKeySet("{Esc}", "captureEsc")
$inifile = "dynamisches_Gui.ini"
$var = IniReadSection($inifile, "Entrys")
Gui_berechnen()
gui_erstellen()
abfrage()
While 1
GuiSetState()
;~ tooltip("Breite:" & $with+30 & " Höhe:" & $var[0][0]*$height+25)
WEnd
func Gui_berechnen()
$X = IniRead($inifile,"Startpunkt","x","")
$Y = IniRead($inifile,"Startpunkt","y","")
$with = IniRead($inifile,"Startpunkt","with","")
$height = IniRead($inifile,"Startpunkt","height","")
$abstand = IniRead($inifile,"Startpunkt","abstand","")
$titel= IniRead($inifile,"Startpunkt","titel","")
$zaehler=0
EndFunc
func gui_erstellen()
$nr = $var[0][0]/2 ;Anzahl der Felder
dim $edit[$nr+1]
$edit[0]=$nr
Dim $edit_ip[$nr+1]
$edit_ip[0]=$nr
dim $edit_name[$nr+1]
$edit_name[0]=$nr
dim $bubble[$nr+1]
$bubble[0]=$nr
GuiCreate($titel, $with+30, ($nr+4)*$height+25, 400,346,BitOR($WS_Border, $WS_CLIPSIBLINGS)); Hauptgui
For $i = 1 To $nr
$Edit_IP[$i] = IniRead($inifile, "Entrys","Edit_IP" & $i,"")
$Edit_name[$i] = IniRead($inifile, "Entrys","Edit_name" & $i,"")
;~ _ArrayDisplay($edit_ip,$i & " von " & $nr )
if $i = 1 Then
$x = $x ; erstes Element ohne Abstand
Else
$y2 = $y+$abstand*($i-1); bei jedem Element den Abstand hinzufügen
EndIf
$edit[$i] = GUICtrlCreateLabel($Edit_IP[$i] & " - " & $edit_name[$i],$x,$y2,$with,$height)
GUICtrlSetBkColor($Edit[$i],0xd3d3d3) ; Gray
$bubble[$i] = GUICtrlCreatePic ("red_bubble.bmp", 116, $y2, 14, 14)
Next
$yNR = $y2+$abstand
$EditNR = GUICtrlCreateLabel("Anzahl", 0, $yNR, 140, 20)
GUISetState()
EndFunc
Func abfrage()
while 1
For $i = 1 To $nr
;Pingschleife()
GuiSetState()
;Statusabfrage Server
GUICtrlSetBkColor($Edit[$i],0x00ff00) ; Green
Ping($Edit_IP[$i],1000)
if @error = 0 Then
GUICtrlSetImage ($bubble[$i],"green_bubble.bmp")
Sleep(900);für die Optik
Else
GUICtrlSetImage ($bubble[$i],"red_bubble.bmp")
EndIf
GUICtrlSetBkColor($Edit[$i],0xd3d3d3) ; Gray
$zaehler=$zaehler+1
GUICtrlSetData($editNR,"Durchläufe=>> " & $zaehler)
GuiSetState()
sleep (1000)
Next
WEnd
EndFunc
Func captureEsc()
if WinActive($titel) Then
Exit
EndIf
endfunc