GUI aktualisieren

  • Liebe Autoit-Gemeinde! Ich habe versucht, mein Grundprogramm (Überprüfung des Übertragungsvolumens) um eine GUI und einen Timer zu erweitern. Leider weiß ich nicht, ob man die GUI als Func einbindet und wenn ja, wie man einen Countdown erstellt.
    Problem: Die GUI soll nur aktualisiert werden. Im Moment wird aber eine weitere Instanz gestartet.

    Vielen Dank im Voraus!

    EDIT: aktualisierte Fassung unten.

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #cs => um mehrere Zeilen auszukommentieren
    Trafficlimit-Projekt
    To Do:
    überprüfung ob das Netzwerkkabel steckt
    Deaktivierung der Netzwerkkarte für winxp, für vista: keine Ahnung
    #ce

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

    #include <IE.au3>
    #include <array.au3>
    #Include <Constants.au3>
    #NoTrayIcon ; Trayicon erstmal verstecken
    #include<EditConstants.au3>
    #include<StaticConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    Global $schwellenwert = 1.950000
    Global $grenze1 = 1.400000;hier die variablen definieren,
    Global $grenze2 = 1.800000;Local gilt hier nur als defaultwert, kann mit global über menü überschrieben werden
    Global $grenze3 = 1.900000
    Global $sleeptime0 = 1
    Global $sleeptime1 = 90 ; in Min
    Global $sleeptime2 = 30; = 30 Min
    Global $sleeptime3 = 5;5 Min
    Global $traffic = 0
    Global $Minutes
    Global $hShadow, $hGui, $sTitle

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

    ;ab hier Schleife
    While 1=1 ; wenn der Ausdruck immer wahr ist: dann wie hier endlos
    ; hier stehen die Befehle,
    ; die immer wieder ausgefuehrt
    ; werden sollen
    check()
    Select ; Wartezeit bestimmen
    Case $traffic >= $schwellenwert
    Ueberschreitung ()
    Case $traffic >= $grenze3
    $Minutes = $sleeptime3
    Sleep (20)
    Case $traffic >= $grenze2
    $Minutes = $sleeptime2
    Sleep (20)
    Case $traffic >= $grenze1
    $Minutes = $sleeptime1
    Sleep (20)
    Case $traffic < $grenze1
    $Minutes = $sleeptime0
    Case Else
    Fehler()
    EndSelect
    ;MsgBox(64, "Info", "$Minutes ist:" & $Minutes & " ")
    AusgabeimFenster () ;Im Fenster ausgeben
    warten()
    sleep (20)
    WEnd
    ;--------------------------

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

    Func warten ()
    ;Time Machine #1
    ;Minutes/seconds/miliseconds

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

    ; Author - Valuater

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

    ;$Minutes = 90 ; will wait 90 minutes: das hier löschen

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

    Global $60Count = 0, $begin = TimerInit()
    While $Minutes > $60Count

    $dif = TimerDiff($begin)
    $dif2 = StringLeft($dif, StringInStr($dif, ".") -1)
    $Count = int($dif/1000)
    $60Count = Int($Count / 60)

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

    ;ToolTip("Minuten bis zur nächsten Traffic-Überprüfung = " & $Minutes & @CRLF & "Minuten vergangen = " & $60Count & @CRLF & "Sekunden vergangen = " & $Count & @CRLF & "Mili-Sekunden = " & $dif2, 20, 20, "Time Machine #1", 1)
    ;TrayTip("Traffic-Info", "Internetkontingent-Information " & $Uhrzeit, "Aktuell sind: " & $traffic & " Gbyte verbraucht", 5)

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

    ;AusgabeimFenster () ;Im Fenster ausgeben
    Sleep(20);Prozessorentlastung in Endlosschleife
    WEnd
    ;MsgBox(64, "Time-Up!!", "Your " & $Minutes & " minutes have passed")
    ;sleep (20)
    EndFunc
    ;------------------------------
    Func check ();Funktion die einmal den Traffic ausliest

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

    Local $url = 'http://statistik.uni-trier.de/monatsstat.php'
    Local $oIE = _IECreate($url, 0, 0)
    Local $oTable = _IETableGetCollection($oIE, 0)
    Local $array = _IETableWriteToArray($oTable, True) ; liest Tabelle in einen 2D-Array
    ;_ArrayDisplay($array) ; gibt Array auf dem Bildschirm aus -> Messagebox einfügen!
    $traffic = $array[3][2];soll Gesamttraffic anzeigen: 4.Zeile (Zählung beginnt mit 0, 2.Spalte
    $traffic = StringStripWS ( $traffic, 2 );entfernt Leerzeichen u.ä. am Anfang und Ende von $traffic (führt sonst zu Überspringen von if-Abfrage)
    _IEQuit($oIE) ; schließt IE

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

    sleep (20)
    EndFunc
    ;-----------------------------
    Func Ueberschreitung ()
    MsgBox(16, "Achtung: Kontingent erschöpft! " & @HOUR & ":" & @MIN & ":" & @SEC & " Uhr", "Das Internetkontingent wurde erreicht." & @CR & @CR & _
    "Aktuell: " & $traffic & " Gbyte" & @CR & "Das Netzwerkkabel ziehen wäre jetzt die einfachste Lösung ;-)")
    sleep(20)
    EndFunc
    ;----------------------------
    Func Fehler ()
    MsgBox(64, "Fehler", "Ein Fehler ist aufgetreten.")
    sleep (20)
    EndFunc

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

    ;----------------------------
    ; Ab hier kommt die GUI
    Func AusgabeimFenster ()

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

    Opt('GUIOnEventMode', 1) ; OnEventMode für die GUI
    Opt('TrayOnEventMode', 1) ; OnEventMode für das Traymenü
    Opt('TrayMenuMode', 1) ; Standard-Traymenü entfernen

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

    $sTitle = 'Extended Tooltip'
    $BgColor = 0xFFFFDF ; Hintergrundfarbe
    $ShColor = 0x666666 ; Schattenfarbe
    $Width = 320 ; Breite des Fensters
    $Height = 200 ; Höhe des Fensters
    $Left = Int(@DesktopWidth/2-$Width/2) ; Horizontale Position (zentriert)
    $Top = Int(@DesktopHeight/2-$Height/2) ; Vertikale Position (zentriert)

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

    $hGui = GUICreate($sTitle, $Width, $Height, $Left, $Top, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW) ; keine Titelleiste, kein Button in der Taskleiste
    GUISetBkColor($BgColor) ; Hintergrundfarbe setzen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End') ; [ESC] beendet das Programm

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

    $hLabel = GUICtrlCreateLabel('', 0, 0, $Width, $Height, Default, $GUI_WS_EX_PARENTDRAG) ; Transparentes Label zum verschieben des Fensters

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

    $hHead = GUICtrlCreateLabel('', 10, 10, $Width-20, 30, $SS_CENTER, $GUI_WS_EX_PARENTDRAG) ; Ein Label für die Überschrift
    GUICtrlSetFont(-1, 16, 600, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hText = GUICtrlCreateEdit('', 10, 45, $Width-20, $Height-60, BitOr($WS_VSCROLL, $ES_AUTOVSCROLL, $ES_READONLY), $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellen
    GUICtrlSetBkColor(-1, $BgColor) ; Hintergrundfarbe setzen
    GUICtrlSetState(-1, $GUI_ONTOP) ; Das Editfeld nach vorne holen, damit man scrollen kann
    GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    ;$hCountdown = GUICtrlCreateEdit('', 10, 45, $Width-20, $Height-20, $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellenEin Label für den Countdown
    ;GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hContextMenu = GUICtrlCreateContextMenu($hLabel) ; Kontextmenü erstellen
    GUICtrlCreateMenuItem('Minimieren', $hContextMenu) ; Minimieren-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_Minimize') ; dem Eintrag eine Funktion zuweisen
    GUICtrlCreateMenuItem('Beenden', $hContextMenu) ; Beenden-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    TrayCreateItem('Wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Restore') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Beenden') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    $hShadow = GUICreate('Shadow', $Width, $Height, $Left+6, $Top+6, $WS_POPUP, $WS_EX_TOOLWINDOW) ; Schattenfenster erzeugen
    GUISetBkColor($ShColor) ; Farbe des Schattens setzen
    WinSetTrans($hShadow, '', 128) ; Transparenz des Schattens einstellen

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

    GUISetState(@SW_SHOW, $hShadow) ; Schatten anzeigen
    GUISetState(@SW_SHOW, $hGui) ; GUI anzeigen
    WinSetOnTop('Shadow', '', 1) ; Schatten immer im Vordergrund
    WinSetOnTop($sTitle, '', 1) ; GUI immer im Vordergrund

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

    GUIRegisterMsg($WM_MOVE, '_ShadowMove') ; Funktion zum "Schatten verschieben" registrieren

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

    ;Diese Variable möchte ich über mein Programm definieren.
    ;$msg = 'In der großen Koalition sorgt der Zank um die Novelle des Gesetzes für das Bundeskriminalamt (BKA) weiter für Unmut. Vor allem Bundesinnenminister Wolfgang Schäuble ist nach wie vor erzürnt über den Widerstand auch aus SPD-regierten Ländern gegen die vom Bundestag abgesegnete Ausweitung der BKA-Befugnisse einschließlich einer Lizenz für heimliche Online-Durchsuchungen.'
    ;$msg &= '"Die Führung der Partei kann ihre Entscheidungen derzeit nicht durchsetzen", klagte der CDU-Minister dem "Focus" sein Leid. Der Koalitionspartner befinde sich in einer "akuten Krise". Eine "Handvoll Jusos" in Sachsen könne das Inkrafttreten eines jahrelang beratenen Gesetzes verzögern, schimpfte Schäuble gegen das erste Nein eines Landes gegen das Vorhaben, in dem die Sozialdemokraten mit an der Macht sind.'
    ;GUICtrlSetData($hHead, 'Streit um BKA-Gesetz') ; Überschrift anzeigen
    Global $Count, $60Count, $hShadow
    Global $msg = @HOUR & ":" & @MIN & ":" & @SEC & " Uhr"
    $msg &= @CRLF & @CRLF & "Aktuell sind: " ; Fensterinhalt definieren: Traffic und Verbleibende Minuten
    $msg &= $traffic
    $msg &= " Gbyte verbraucht."
    $msg &= @CRLF & "Nächste Überprüfung in "
    $msg &= $Minutes
    $msg &= " Minuten."

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

    GUICtrlSetData($hHead, "Internet-Kontingent") ; Überschrift anzeigen
    GUICtrlSetData($hText, $msg) ; denText anzeigen
    ; Wie zeigt man einen Countdown an?

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

    #cs While True ; Endlosschleife
    Sleep(10) ; Prozessor entlasten
    WEnd
    #ce
    EndFunc
    ;--------------------------------------------
    Func _End()
    Exit
    EndFunc

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

    Func _Minimize()
    GUISetState(@SW_HIDE, $hShadow) ; Schatten verstecken
    GUISetState(@SW_HIDE, $hGui) ; GUI verstecken
    TraySetState(1) ; Trayicon anzeigen
    EndFunc

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

    Func _Restore()
    GUISetState(@SW_SHOW, $hShadow) ; Schatten wiederherstellen
    GUISetState(@SW_SHOW, $hGui) ; GUI wiederherstellen
    TraySetState(2) ; Trayicon verstecken
    EndFunc

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

    Func _ShadowMove()
    Local $pos = WinGetPos($sTitle) ; Fensterposition der GUI holen
    WinMove('Shadow', '', $pos[0]+6, $pos[1]+6) ; das Schatten-Fenster entsprechend verschieben
    EndFunc

    [/autoit]

    Edit: Die Lösung in Kurzfassung steht im letzten Post.

    6 Mal editiert, zuletzt von Poloshirt (21. Juli 2009 um 00:09)

  • Hallo PoloShirt,

    hab dein Skript mal abgeändert damit die Mehrfachinstanzen vermieden werden:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    Opt('GUIOnEventMode', 1) ; OnEventMode für die GUI
    Opt('TrayOnEventMode', 1) ; OnEventMode für das Traymenü
    Opt('TrayMenuMode', 1) ; Standard-Traymenü entfernen

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

    $sTitle = 'Extended Tooltip'
    $BgColor = 0xFFFFDF ; Hintergrundfarbe
    $ShColor = 0x666666 ; Schattenfarbe
    $Width = 320 ; Breite des Fensters
    $Height = 200 ; Höhe des Fensters
    $Left = Int(@DesktopWidth/2-$Width/2) ; Horizontale Position (zentriert)
    $Top = Int(@DesktopHeight/2-$Height/2) ; Vertikale Position (zentriert)

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

    $hGui = GUICreate($sTitle, $Width, $Height, $Left, $Top, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW) ; keine Titelleiste, kein Button in der Taskleiste
    GUISetBkColor($BgColor) ; Hintergrundfarbe setzen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End') ; [ESC] beendet das Programm

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

    $hLabel = GUICtrlCreateLabel('', 0, 0, $Width, $Height, Default, $GUI_WS_EX_PARENTDRAG) ; Transparentes Label zum verschieben des Fensters

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

    $hHead = GUICtrlCreateLabel('', 10, 10, $Width-20, 30, $SS_CENTER, $GUI_WS_EX_PARENTDRAG) ; Ein Label für die Überschrift
    GUICtrlSetFont(-1, 16, 600, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hText = GUICtrlCreateEdit('', 10, 45, $Width-20, $Height-60, BitOr($WS_VSCROLL, $ES_AUTOVSCROLL, $ES_READONLY), $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellen
    GUICtrlSetBkColor(-1, $BgColor) ; Hintergrundfarbe setzen
    GUICtrlSetState(-1, $GUI_ONTOP) ; Das Editfeld nach vorne holen, damit man scrollen kann
    GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    ;$hCountdown = GUICtrlCreateEdit('', 10, 45, $Width-20, $Height-20, $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellenEin Label für den Countdown
    ;GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hContextMenu = GUICtrlCreateContextMenu($hLabel) ; Kontextmenü erstellen
    GUICtrlCreateMenuItem('Minimieren', $hContextMenu) ; Minimieren-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_Minimize') ; dem Eintrag eine Funktion zuweisen
    GUICtrlCreateMenuItem('Beenden', $hContextMenu) ; Beenden-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    TrayCreateItem('Wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Restore') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Beenden') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    $hShadow = GUICreate('Shadow', $Width, $Height, $Left+6, $Top+6, $WS_POPUP, $WS_EX_TOOLWINDOW) ; Schattenfenster erzeugen
    GUISetBkColor($ShColor) ; Farbe des Schattens setzen
    WinSetTrans($hShadow, '', 128) ; Transparenz des Schattens einstellen

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

    GUISetState(@SW_SHOW, $hShadow) ; Schatten anzeigen
    GUISetState(@SW_SHOW, $hGui) ; GUI anzeigen
    WinSetOnTop('Shadow', '', 1) ; Schatten immer im Vordergrund
    WinSetOnTop($sTitle, '', 1) ; GUI immer im Vordergrund

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

    GUIRegisterMsg($WM_MOVE, '_ShadowMove') ; Funktion zum "Schatten verschieben" registrieren

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

    #cs => um mehrere Zeilen auszukommentieren
    Trafficlimit-Projekt
    To Do:
    überprüfung ob das Netzwerkkabel steckt
    Deaktivierung der Netzwerkkarte für winxp, für vista: keine Ahnung
    #ce

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

    #include <IE.au3>
    #include <array.au3>
    #Include <Constants.au3>
    #NoTrayIcon ; Trayicon erstmal verstecken
    #include<EditConstants.au3>
    #include<StaticConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    Global $schwellenwert = 1.950000
    Global $grenze1 = 1.400000 ;hier die variablen definieren,
    Global $grenze2 = 1.800000 ;Local gilt hier nur als defaultwert, kann mit global über menü überschrieben werden
    Global $grenze3 = 1.900000
    Global $sleeptime0 = 1
    Global $sleeptime1 = 90 ; in Min
    Global $sleeptime2 = 30 ; = 30 Min
    Global $sleeptime3 = 5 ;5 Min
    Global $traffic = 0
    Global $Minutes
    Global $hShadow, $hGui, $sTitle

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

    ;ab hier Schleife
    While 1=1 ; wenn der Ausdruck immer wahr ist: dann wie hier endlos
    ; hier stehen die Befehle,
    ; die immer wieder ausgefuehrt
    ; werden sollen
    check()
    Select ; Wartezeit bestimmen
    Case $traffic >= $schwellenwert
    Ueberschreitung ()
    Case $traffic >= $grenze3
    $Minutes = $sleeptime3
    Sleep (20)
    Case $traffic >= $grenze2
    $Minutes = $sleeptime2
    Sleep (20)
    Case $traffic >= $grenze1
    $Minutes = $sleeptime1
    Sleep (20)
    Case $traffic < $grenze1
    $Minutes = $sleeptime0
    Case Else
    Fehler()
    EndSelect
    ;MsgBox(64, "Info", "$Minutes ist:" & $Minutes & " ")
    AusgabeimFenster () ;Im Fenster ausgeben
    warten()
    sleep (20)
    WEnd
    ;--------------------------

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

    Func warten ()
    ;Time Machine #1
    ;Minutes/seconds/miliseconds

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

    ; Author - Valuater

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

    ;$Minutes = 90 ; will wait 90 minutes: das hier löschen

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

    Global $60Count = 0, $begin = TimerInit()
    While $Minutes > $60Count

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

    $dif = TimerDiff($begin)
    $dif2 = StringLeft($dif, StringInStr($dif, ".") -1)
    $Count = int($dif/1000)
    $60Count = Int($Count / 60)

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

    ;ToolTip("Minuten bis zur nächsten Traffic-Überprüfung = " & $Minutes & @CRLF & "Minuten vergangen = " & $60Count & @CRLF & "Sekunden vergangen = " & $Count & @CRLF & "Mili-Sekunden = " & $dif2, 20, 20, "Time Machine #1", 1)
    ;TrayTip("Traffic-Info", "Internetkontingent-Information " & $Uhrzeit, "Aktuell sind: " & $traffic & " Gbyte verbraucht", 5)

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

    ;AusgabeimFenster () ;Im Fenster ausgeben
    Sleep(20) ;Prozessorentlastung in Endlosschleife
    WEnd
    ;MsgBox(64, "Time-Up!!", "Your " & $Minutes & " minutes have passed ")
    ;sleep (20)
    EndFunc
    ;------------------------------
    Func check () ;Funktion die einmal den Traffic ausliest

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

    Local $url = 'http://statistik.uni-trier.de/monatsstat.php'
    Local $oIE = _IECreate($url, 0, 0)
    Local $oTable = _IETableGetCollection($oIE, 0)
    Local $array = _IETableWriteToArray($oTable, True) ; liest Tabelle in einen 2D-Array
    ;_ArrayDisplay($array) ; gibt Array auf dem Bildschirm aus -> Messagebox einfügen!
    $traffic = $array[3][2] ;soll Gesamttraffic anzeigen: 4.Zeile (Zählung beginnt mit 0, 2.Spalte
    $traffic = StringStripWS ( $traffic, 2 ) ;entfernt Leerzeichen u.ä. am Anfang und Ende von $traffic (führt sonst zu Überspringen von if-Abfrage)
    _IEQuit($oIE) ; schließt IE

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

    sleep (20)
    EndFunc
    ;-----------------------------
    Func Ueberschreitung ()
    MsgBox(16, "Achtung: Kontingent erschöpft! " & @HOUR & ":" & @MIN & ":" & @SEC & " Uhr", "Das Internetkontingent wurde erreicht." & @CR & @CR & _
    "Aktuell: " & $traffic & " Gbyte" & @CR & "Das Netzwerkkabel ziehen wäre jetzt die einfachste Lösung ;-)")
    sleep(20)
    EndFunc
    ;----------------------------
    Func Fehler ()
    MsgBox(64, "Fehler", "Ein Fehler ist aufgetreten.")
    sleep (20)
    EndFunc

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

    ;----------------------------
    ; Ab hier kommt die GUI
    Func AusgabeimFenster ()

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

    ;Diese Variable möchte ich über mein Programm definieren.
    ;$msg = 'In der großen Koalition sorgt der Zank um die Novelle des Gesetzes für das Bundeskriminalamt (BKA) weiter für Unmut. Vor allem Bundesinnenminister Wolfgang Schäuble ist nach wie vor erzürnt über den Widerstand auch aus SPD-regierten Ländern gegen die vom Bundestag abgesegnete Ausweitung der BKA-Befugnisse einschließlich einer Lizenz für heimliche Online-Durchsuchungen.'
    ;$msg &= '"Die Führung der Partei kann ihre Entscheidungen derzeit nicht durchsetzen", klagte der CDU-Minister dem "Focus" sein Leid. Der Koalitionspartner befinde sich in einer "akuten Krise". Eine "Handvoll Jusos" in Sachsen könne das Inkrafttreten eines jahrelang beratenen Gesetzes verzögern, schimpfte Schäuble gegen das erste Nein eines Landes gegen das Vorhaben, in dem die Sozialdemokraten mit an der Macht sind.'
    ;GUICtrlSetData($hHead, 'Streit um BKA-Gesetz') ; Überschrift anzeigen
    Global $Count, $60Count, $hShadow
    Global $msg = @HOUR & ":" & @MIN & ":" & @SEC & " Uhr"
    $msg &= @CRLF & @CRLF & "Aktuell sind: " ; Fensterinhalt definieren: Traffic und Verbleibende Minuten
    $msg &= $traffic
    $msg &= " Gbyte verbraucht."
    $msg &= @CRLF & "Nächste Überprüfung in "
    $msg &= $Minutes
    $msg &= " Minuten."

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

    GUICtrlSetData($hHead, "Internet-Kontingent") ; Überschrift anzeigen
    GUICtrlSetData($hText, $msg) ; denText anzeigen
    ; Wie zeigt man einen Countdown an?

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

    #cs While True ; Endlosschleife
    Sleep(10) ; Prozessor entlasten
    WEnd
    #ce
    EndFunc
    ;--------------------------------------------
    Func _End()
    Exit
    EndFunc

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

    Func _Minimize()
    GUISetState(@SW_HIDE, $hShadow) ; Schatten verstecken
    GUISetState(@SW_HIDE, $hGui) ; GUI verstecken
    TraySetState(1) ; Trayicon anzeigen
    EndFunc

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

    Func _Restore()
    GUISetState(@SW_SHOW, $hShadow) ; Schatten wiederherstellen
    GUISetState(@SW_SHOW, $hGui) ; GUI wiederherstellen
    TraySetState(2) ; Trayicon verstecken
    EndFunc

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

    Func _ShadowMove()
    Local $pos = WinGetPos($sTitle) ; Fensterposition der GUI holen
    WinMove('Shadow', '', $pos[0]+6, $pos[1]+6) ; das Schatten-Fenster entsprechend verschieben
    EndFunc

    [/autoit]


    Ich kann es aber leider nicht selbst testen, da schon dein Ursprungsskript mit folgende Fehler aussteigt:

    Code
    C:\Programme\AutoIt3\Downloads\PoloShirt\VolumenGui.au3 (96) : ==> Subscript used with non-Array variable.:
    $traffic =     $array[3][2]
    $traffic =     $array^ ERROR
    ->18:37:46 AutoIT3.exe ended.rc:1
    +>18:37:47 AutoIt3Wrapper Finished

    Zu Timern schau dir mal Adlib bzw. TimerInit/TimerDiff an, oder suche nach Beiträge der letzten Tage von @ChaosKeks oder von mir,

    mfg (Auto)Bert

  • Vielen Dank schonmal, für deine Hilfe. Ich hab das Skript angepasst, sodass auf jeden Fall die Variable $traffic definiert ist. Habe mir überlegt, dass man die GUI nach jedem Durchlauf schließen und einfach neu aufbauen könnte, weiß aber nicht wie das geht. Ich habe eine Funktion gefunden, um die IP-Adresse auszulesen (LAN), habe aber keine Ahnung wie man das Skript aufrufen muss... Habe ich das Schreiben und Lesen aus der Datei richtig gemacht? Die Datei konnte bei mir nicht gelesen werden... Die Variablen die du nach oben verschoben hattest musste ich wieder runterholen, sonst kam immer ein Fehler, vielleicht kennst du den Grund.

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    ;GUI Variablen
    Opt('GUIOnEventMode', 1) ; OnEventMode für die GUI
    Opt('TrayOnEventMode', 1) ; OnEventMode für das Traymenü
    Opt('TrayMenuMode', 1) ; Standard-Traymenü entfernen

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

    $sTitle = 'Extended Tooltip'
    $BgColor = 0xFFFFDF ; Hintergrundfarbe
    $ShColor = 0x666666 ; Schattenfarbe
    $Width = 320 ; Breite des Fensters
    $Height = 200 ; Höhe des Fensters
    $Left = Int(@DesktopWidth/2-$Width/2) ; Horizontale Position (zentriert)
    $Top = Int(@DesktopHeight/2-$Height/2) ; Vertikale Position (zentriert)

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

    ;Netzwerk Variablen
    Global $arGateway, $arFakeGateways
    Global $meineIP = "192.168.178.21" ; Die IP deines Adapters, muss manuell konfiguriert sein
    Global $gatewaytxt = "gateway.txt", $i;Sicherung der IP des Gateway

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

    #cs => um mehrere Zeilen auszukommentieren
    Trafficlimit-Projekt
    To Do:
    überprüfung ob das Netzwerkkabel steckt
    Deaktivierung der Netzwerkkarte für winxp, für vista: keine Ahnung

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

    _FileWriteLog
    _FileWriteToLine

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

    $file = FileOpen("test.txt", 1)
    FileWrite($file, $rueckgabe)
    FileClose($file)

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

    #ce

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

    #include <IE.au3>
    #include <array.au3>
    #Include <Constants.au3>
    #NoTrayIcon ; Trayicon erstmal verstecken
    #include<EditConstants.au3>
    #include<StaticConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    Global $schwellenwert = 1.950000
    Global $grenze1 = 1.400000 ;hier die variablen definieren,
    Global $grenze2 = 1.800000 ;Local gilt hier nur als defaultwert, kann mit global über menü überschrieben werden
    Global $grenze3 = 1.900000
    Global $sleeptime0 = 1
    Global $sleeptime1 = 90 ; in Min
    Global $sleeptime2 = 30 ; = 30 Min
    Global $sleeptime3 = 5 ;5 Min
    Global $traffic = 0
    Global $Minutes
    Global $hShadow, $hGui, $sTitle

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

    ;ab hier Schleife
    While 1=1 ; wenn der Ausdruck immer wahr ist: dann wie hier endlos
    ; hier stehen die Befehle,
    ; die immer wieder ausgefuehrt
    ; werden sollen
    check()
    Select ; Wartezeit bestimmen
    Case $traffic >= $schwellenwert
    _Netzwerktrennen ()
    Ueberschreitung ()
    Case $traffic >= $grenze3
    $Minutes = $sleeptime3
    Sleep (20)
    Case $traffic >= $grenze2
    $Minutes = $sleeptime2
    Sleep (20)
    Case $traffic >= $grenze1
    $Minutes = $sleeptime1
    Sleep (20)
    Case $traffic < $grenze1
    $Minutes = $sleeptime0
    Case Else
    Fehler()
    EndSelect
    ;MsgBox(64, "Info", "$Minutes ist:" & $Minutes & " ")
    AusgabeimFenster () ;Im Fenster ausgeben
    warten()
    sleep (20)
    WEnd
    ;--------------------------

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

    Func warten ()
    ;Time Machine #1
    ;Minutes/seconds/miliseconds

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

    ; Author - Valuater

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

    ;$Minutes = 90 ; will wait 90 minutes: das hier löschen

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

    Global $60Count = 0, $begin = TimerInit()
    While $Minutes > $60Count

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

    $dif = TimerDiff($begin)
    $dif2 = StringLeft($dif, StringInStr($dif, ".") -1)
    $Count = int($dif/1000)
    $60Count = Int($Count / 60)

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

    ;ToolTip("Minuten bis zur nächsten Traffic-Überprüfung = " & $Minutes & @CRLF & "Minuten vergangen = " & $60Count & @CRLF & "Sekunden vergangen = " & $Count & @CRLF & "Mili-Sekunden = " & $dif2, 20, 20, "Time Machine #1", 1)
    ;TrayTip("Traffic-Info", "Internetkontingent-Information " & $Uhrzeit, "Aktuell sind: " & $traffic & " Gbyte verbraucht", 5)

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

    ;AusgabeimFenster () ;Im Fenster ausgeben
    Sleep(20);Prozessorentlastung in Endlosschleife
    WEnd
    ;MsgBox(64, "Time-Up!!", "Your " & $Minutes & " minutes have passed")
    ;sleep (20)
    EndFunc
    ;------------------------------
    Func check () ;Funktion die einmal den Traffic ausliest
    Local $url = 'http://statistik.uni-trier.de/monatsstat.php'
    Local $oIE = _IECreate($url, 0, 0)
    Local $oTable = _IETableGetCollection($oIE, 0)
    Local $array = _IETableWriteToArray($oTable, True) ; liest Tabelle in einen 2D-Array
    ;_ArrayDisplay($array) ; gibt Array auf dem Bildschirm aus -> Messagebox einfügen!
    If $array [3] [0] = "Gesamt " Then
    $traffic = $array[3][2];soll Gesamttraffic anzeigen: 4.Zeile (Zählung beginnt mit 0, 2.Spalte
    $traffic = StringStripWS ( $traffic, 2 );entfernt Leerzeichen u.ä. am Anfang und Ende von $traffic (führt sonst zu Überspringen von if-Abfrage)

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

    Else
    $traffic = " PC ist offline oder nicht im Uninetz. Bitte Netzwerkkabel und IP-Adresse prüfen. "
    Msgbox(0,"Traffic-Limit: Status", $traffic)
    Endif
    ;Msgbox(0,"Status", $traffic)
    _IEQuit($oIE); schließt IE

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

    sleep (20)
    EndFunc
    ;-----------------------------
    Func Ueberschreitung ()
    MsgBox(16, "Achtung: Kontingent erschöpft! " & @HOUR & ":" & @MIN & ":" & @SEC & " Uhr", "Das Internetkontingent wurde erreicht." & @CR & @CR & _
    "Aktuell: " & $traffic & " Gbyte" & @CR & "Das Netzwerkkabel ziehen wäre jetzt die einfachste Lösung ;-)")
    EndFunc

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

    Func _getGateway();liest die IP des Gateways aus

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

    Local $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
    Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration", "WQL", 0x10 + 0x20)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If StringInStr($objItem.DefaultIPGateway(0), '.') Then Return $objItem.DefaultIPGateway(0)

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

    If FileExists($gatewaytxt) then ;schaut ob die Datei vorhanden ist und erzeugt wenn ja eine Neue mit forlaufender Nummerierung
    $name = "gateway" & $i & ".txt"
    $i +=1
    Else
    ExitLoop
    Endif

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

    $file = FileOpen("gateway.txt", 1)
    FileWrite($file, $arGateway)
    FileClose($file)
    Next
    Else
    SetError(1)
    Return -1
    EndIf
    EndFunc ;==>_getGateway

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

    Func _Netzwerktrennen () ; PC vom Netzwerk trennen durch FakeIp des Gateways

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

    Dim $arGateway = _ArrayCreate(_GetGateway (), _GetGateway ()) ; IP des Routers
    Dim $arFakeGateways = _ArrayCreate("0.0.0.0", "0.0.0.0") ; blinde IP's

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

    _ArrayDisplay($arGateway) ; gibt Array auf dem Bildschirm aus
    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $colNetCards = $objWMIService.ExecQuery _
    ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

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

    For $objNetCard in $colNetCards
    If $objNetCard.IPAddress(0) = $meineIP Then
    $objNetCard.SetGateways($arFakeGateways);Vom Internet trennen
    ;Sleep(2000)
    ;$objNetCard.SetGateways($arGateway);Zum Internet verbinden
    ExitLoop
    EndIf
    Next
    sleep(20)
    EndFunc

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

    ;---------------------------------------------

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

    Func _Netzwerkverbinden ()

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

    $file = FileOpen($gatewaytxt, 0)
    If $file = -1 Then ; Check if file opened for reading OK
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

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

    ; Read in lines of text until the EOF is reached
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    MsgBox(0, "Line read:", $line)
    Wend
    FileClose($file)

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

    Dim $arGateway = _ArrayCreate($file, $file) ; IP des Routers

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

    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $colNetCards = $objWMIService.ExecQuery _
    ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

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

    For $objNetCard in $colNetCards
    If $objNetCard.IPAddress(0) = $meineIP Then
    ;$objNetCard.SetGateways($arFakeGateways);Vom Internet trennen
    ;Sleep(2000)
    $objNetCard.SetGateways($arGateway);Zum Internet verbinden
    ExitLoop
    EndIf
    Next
    sleep(20)
    EndFunc
    ;----------------------------
    Func Fehler ()
    MsgBox(64, "Fehler", "Ein Fehler ist aufgetreten.")
    EndFunc

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

    ;----------------------------
    ; Ab hier kommt die GUI
    Func AusgabeimFenster ()

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

    $hGui = GUICreate($sTitle, $Width, $Height, $Left, $Top, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW) ; keine Titelleiste, kein Button in der Taskleiste
    GUISetBkColor($BgColor) ; Hintergrundfarbe setzen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End') ; [ESC] beendet das Programm

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

    $hLabel = GUICtrlCreateLabel('', 0, 0, $Width, $Height, Default, $GUI_WS_EX_PARENTDRAG) ; Transparentes Label zum verschieben des Fensters

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

    $hHead = GUICtrlCreateLabel('', 10, 10, $Width-20, 30, $SS_CENTER, $GUI_WS_EX_PARENTDRAG) ; Ein Label für die Überschrift
    GUICtrlSetFont(-1, 16, 600, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hText = GUICtrlCreateEdit('', 10, 45, $Width-20, $Height-60, BitOr($WS_VSCROLL, $ES_AUTOVSCROLL, $ES_READONLY), $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellen
    GUICtrlSetBkColor(-1, $BgColor) ; Hintergrundfarbe setzen
    GUICtrlSetState(-1, $GUI_ONTOP) ; Das Editfeld nach vorne holen, damit man scrollen kann
    GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    ;$hCountdown = GUICtrlCreateEdit('', 10, 45, $Width-20, $Height-20, $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellenEin Label für den Countdown
    ;GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hContextMenu = GUICtrlCreateContextMenu($hLabel) ; Kontextmenü erstellen
    GUICtrlCreateMenuItem('Minimieren', $hContextMenu) ; Minimieren-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_Minimize') ; dem Eintrag eine Funktion zuweisen
    GUICtrlCreateMenuItem('Beenden', $hContextMenu) ; Beenden-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    TrayCreateItem('Manuell vom Internet trennen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Netzwerktrennen') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Manuell Verbindung wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Netzwerkverbinden') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Restore') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Beenden') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    $hShadow = GUICreate('Shadow', $Width, $Height, $Left+6, $Top+6, $WS_POPUP, $WS_EX_TOOLWINDOW) ; Schattenfenster erzeugen
    GUISetBkColor($ShColor) ; Farbe des Schattens setzen
    WinSetTrans($hShadow, '', 128) ; Transparenz des Schattens einstellen

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

    GUISetState(@SW_SHOW, $hShadow) ; Schatten anzeigen
    GUISetState(@SW_SHOW, $hGui) ; GUI anzeigen
    WinSetOnTop('Shadow', '', 1) ; Schatten immer im Vordergrund
    WinSetOnTop($sTitle, '', 1) ; GUI immer im Vordergrund

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

    GUIRegisterMsg($WM_MOVE, '_ShadowMove') ; Funktion zum "Schatten verschieben" registrieren

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

    ;Diese Variable möchte ich über mein Programm definieren.
    ;$msg = 'In der großen Koalition sorgt der Zank um die Novelle des Gesetzes für das Bundeskriminalamt (BKA) weiter für Unmut. Vor allem Bundesinnenminister Wolfgang Schäuble ist nach wie vor erzürnt über den Widerstand auch aus SPD-regierten Ländern gegen die vom Bundestag abgesegnete Ausweitung der BKA-Befugnisse einschließlich einer Lizenz für heimliche Online-Durchsuchungen.'
    ;$msg &= '"Die Führung der Partei kann ihre Entscheidungen derzeit nicht durchsetzen", klagte der CDU-Minister dem "Focus" sein Leid. Der Koalitionspartner befinde sich in einer "akuten Krise". Eine "Handvoll Jusos" in Sachsen könne das Inkrafttreten eines jahrelang beratenen Gesetzes verzögern, schimpfte Schäuble gegen das erste Nein eines Landes gegen das Vorhaben, in dem die Sozialdemokraten mit an der Macht sind.'
    ;GUICtrlSetData($hHead, 'Streit um BKA-Gesetz') ; Überschrift anzeigen
    Global $Count, $60Count, $hShadow
    Global $msg = @HOUR & ":" & @MIN & ":" & @SEC & " Uhr"
    $msg &= @CRLF & @CRLF & "Aktuell sind: " ; Fensterinhalt definieren: Traffic und Verbleibende Minuten
    $msg &= $traffic
    $msg &= " Gbyte verbraucht."
    $msg &= @CRLF & "Nächste Überprüfung in "
    $msg &= $Minutes
    $msg &= " Minuten."

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

    GUICtrlSetData($hHead, "Internet-Kontingent") ; Überschrift anzeigen
    GUICtrlSetData($hText, $msg) ; denText anzeigen
    ; Wie zeigt man einen Countdown an?

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

    #cs While True ; Endlosschleife
    Sleep(10) ; Prozessor entlasten
    WEnd
    #ce
    EndFunc
    ;--------------------------------------------
    Func _End()
    Exit
    EndFunc

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

    Func _Minimize()
    GUISetState(@SW_HIDE, $hShadow) ; Schatten verstecken
    GUISetState(@SW_HIDE, $hGui) ; GUI verstecken
    TraySetState(1) ; Trayicon anzeigen
    EndFunc

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

    Func _Restore()
    GUISetState(@SW_SHOW, $hShadow) ; Schatten wiederherstellen
    GUISetState(@SW_SHOW, $hGui) ; GUI wiederherstellen
    TraySetState(2) ; Trayicon verstecken
    EndFunc

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

    Func _ShadowMove()
    Local $pos = WinGetPos($sTitle) ; Fensterposition der GUI holen
    WinMove('Shadow', '', $pos[0]+6, $pos[1]+6) ; das Schatten-Fenster entsprechend verschieben
    EndFunc

    [/autoit]

    Und hier die UDF:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    _ArrayDisplay(_GetNetworkAdapterIPEnabled(Array [n] [1]))

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

    ;****************************************************************************************
    ; Funktion _GetNetworkAdapterIPEnabled()
    ;
    ; Beschreibung Ermittelt Netzwerkadapter mit konfigurierter IP
    ;
    ; Rückgabe Array Netzwerkadapter
    ; Array[n][0] Caption
    ; Array[n][1] IP-Adresse
    ; Array[n][2] Subnetzmaske
    ; Array[n][3] Standardgateway
    ; wird kein IPEnabled Adapter gefunden:
    ; Return -1 und @error = 1
    ;
    ; Erfordernisse #include <array.au3>
    ;
    ; Autor BugFix ([email='bugfix@autoit.de'][/email])
    ;****************************************************************************************
    Func _GetNetworkAdapterIPEnabled()
    Dim $arAdapter[1], $var
    $arAdapter[0] = -1
    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $strComputer = "localhost"
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $IPConfigSet = $objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    For $IPConfig in $IPConfigSet
    For $i=0 to UBound($IPConfig.IPAddress)-1
    If $IPConfig.IPAddress($i) <> '0.0.0.0' Then
    $settings = $IPConfig.Caption & '|' & _
    $IPConfig.IPAddress($i) & '|' & _
    $IPConfig.IPSubnet(0) & '|' & _
    $IPConfig.DefaultIPGateway(0)
    If $arAdapter[0] = -1 Then
    $arAdapter[0] = $settings
    Else
    For $i = 0 To UBound($arAdapter)-1
    If $arAdapter[$i] = $settings Then
    ExitLoop
    Else
    _ArrayAdd($arAdapter, $settings)
    EndIf
    Next
    EndIf
    EndIf
    Next
    Next
    If $arAdapter[0] = -1 Then
    SetError(1)
    Return -1
    Else
    Local $arOut[UBound($arAdapter)][4]
    For $i = 0 To UBound($arAdapter)-1
    $var = StringSplit($arAdapter[$i], '|')
    $arOut[$i][0] = $var[1]
    $arOut[$i][1] = $var[2]
    $arOut[$i][2] = $var[3]
    $arOut[$i][3] = $var[4]
    Next
    EndIf
    Return $arOut
    EndFunc ;==>_GetNetworkAdapterIPEnabled

    [/autoit]


    Tipp: Die Funktionen Internet trennen / verbinden sind über Kontextmenü überprüfbar, wenn man das Programm minimiert hat.
    Vielen Dank!

  • Hallo PoloShirt,

    diese Änderunng sollte ebenfalls mehrere Guis verhindern:

    Spoiler anzeigen
    [autoit]

    Func AusgabeimFenster()
    if $hGui = 0 then
    $hGui = GUICreate($sTitle, $Width, $Height, $Left, $Top, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW) ; keine Titelleiste, kein Button in der Taskleiste
    GUISetBkColor($BgColor) ; Hintergrundfarbe setzen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End') ; [ESC] beendet das Programm

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

    $hLabel = GUICtrlCreateLabel('', 0, 0, $Width, $Height, Default, $GUI_WS_EX_PARENTDRAG) ; Transparentes Label zum verschieben des Fensters

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

    $hHead = GUICtrlCreateLabel('', 10, 10, $Width - 20, 30, $SS_CENTER, $GUI_WS_EX_PARENTDRAG) ; Ein Label für die Überschrift
    GUICtrlSetFont(-1, 16, 600, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hText = GUICtrlCreateEdit('', 10, 45, $Width - 20, $Height - 60, BitOR($WS_VSCROLL, $ES_AUTOVSCROLL, $ES_READONLY), $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellen
    GUICtrlSetBkColor(-1, $BgColor) ; Hintergrundfarbe setzen
    GUICtrlSetState(-1, $GUI_ONTOP) ; Das Editfeld nach vorne holen, damit man scrollen kann
    GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    ;$hCountdown = GUICtrlCreateEdit('', 10, 45, $Width-20, $Height-20, $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellenEin Label für den Countdown
    ; GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hContextMenu = GUICtrlCreateContextMenu($hLabel) ; Kontextmenü erstellen
    GUICtrlCreateMenuItem('Minimieren', $hContextMenu) ; Minimieren-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_Minimize') ; dem Eintrag eine Funktion zuweisen
    GUICtrlCreateMenuItem('Beenden', $hContextMenu) ; Beenden-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    TrayCreateItem('Manuell vom Internet trennen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Netzwerktrennen') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Manuell Verbindung wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Netzwerkverbinden') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Restore') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Beenden') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    $hShadow = GUICreate('Shadow', $Width, $Height, $Left + 6, $Top + 6, $WS_POPUP, $WS_EX_TOOLWINDOW) ; Schattenfenster erzeugen
    GUISetBkColor($ShColor) ; Farbe des Schattens setzen
    WinSetTrans($hShadow, '', 128) ; Transparenz des Schattens einstellen

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

    GUISetState(@SW_SHOW, $hShadow) ; Schatten anzeigen
    GUISetState(@SW_SHOW, $hGui) ; GUI anzeigen
    WinSetOnTop('Shadow', '', 1) ; Schatten immer im Vordergrund
    WinSetOnTop($sTitle, '', 1) ; GUI immer im Vordergrund

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

    GUIRegisterMsg($WM_MOVE, '_ShadowMove') ; Funktion zum "Schatten verschieben" registrieren

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

    EndIf
    ;Diese Variable möchte ich über mein Programm definieren.
    ;$msg = 'In der großen Koalition sorgt der Zank um die Novelle des Gesetzes für das Bundeskriminalamt (BKA) weiter für Unmut. Vor allem Bundesinnenminister Wolfgang Schäuble ist nach wie vor erzürnt über den Widerstand auch aus SPD-regierten Ländern gegen die vom Bundestag abgesegnete Ausweitung der BKA-Befugnisse einschließlich einer Lizenz für heimliche Online-Durchsuchungen.'
    ;$msg &= '"Die Führung der Partei kann ihre Entscheidungen derzeit nicht durchsetzen", klagte der CDU-Minister dem "Focus" sein Leid. Der Koalitionspartner befinde sich in einer "akuten Krise". Eine "Handvoll Jusos" in Sachsen könne das Inkrafttreten eines jahrelang beratenen Gesetzes verzögern, schimpfte Schäuble gegen das erste Nein eines Landes gegen das Vorhaben, in dem die Sozialdemokraten mit an der Macht sind.'
    ;GUICtrlSetData($hHead, 'Streit um BKA-Gesetz') ; Überschrift anzeigen
    Global $Count, $60Count, $hShadow
    Global $msg = @HOUR & ":" & @MIN & ":" & @SEC & " Uhr"
    $msg &= @CRLF & @CRLF & "Aktuell sind: " ; Fensterinhalt definieren: Traffic und Verbleibende Minuten
    $msg &= $traffic
    $msg &= " Gbyte verbraucht."
    $msg &= @CRLF & "Nächste Überprüfung in "
    $msg &= $Minutes
    $msg &= " Minuten."

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

    GUICtrlSetData($hHead, "Internet-Kontingent") ; Überschrift anzeigen
    GUICtrlSetData($hText, $msg) ; denText anzeigen
    ; Wie zeigt man einen Countdown an?

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

    #cs While True ; Endlosschleife
    Sleep(10) ; Prozessor entlasten
    WEnd
    #ce
    EndFunc ;==>AusgabeimFenster
    ;--------------------------------------------

    [/autoit]


    Kann immer noch nicht testen Fehler:

    [autoit]

    --> IE.au3 V2.4-0 Warning from function _IETableGetCollection, $_IEStatus_NoMatch
    --> IE.au3 V2.4-0 Error from function _IETableWriteToArray, $_IEStatus_InvalidDataType
    C:\Programme\AutoIt3\Downloads\PoloShirt\VolumenGui.au3 (123) : ==> Subscript used with non-Array variable.:
    If $array[3][0] = "Gesamt " Then
    If $array^ ERROR
    ->12:23:05 AutoIT3.exe ended.rc:1

    [/autoit]

    Ich benutze Web'N'Walk Stick fürs Internet, warscheins liegt da der Grund, aber vielleicht kümmert sich ja jemand anderes darum,

    mfg (Auto)Bert

    mfg (Auto)Bert

  • Vielen Dank für die Hilfe.
    Nach 3 Nächten habe ich das Programm fertig. Alles läuft. Jetzt fehlt nur noch die GUI. Ich hab mir Koda angeschaut, aber das ist mir zu kompliziert... Hab auch kein tutorial zur Funktionsweise gefunden. Ich suche ein wysiwyg ähnliches Programm.
    Es gibt wohl auch ein Bot-Tool, womit man ohne viel Aufwand eine GUI erstellen kann. Habt ihr hier auch soetwas?
    Ich würde gerne am Unteren Rand ein zentriertes Bild einfügen und die Scrollbalken entfernen, sodass das Fenster sich automatisch an die Größe des Textes anpasst.
    Vielen Dank!

    Spoiler anzeigen
    [autoit]

    Func AusgabeimFenster()
    if $hGui = 0 then
    $hGui = GUICreate($sTitle, $Width, $Height, $Left, $Top, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW) ; keine Titelleiste, kein Button in der Taskleiste
    GUISetBkColor($BgColor) ; Hintergrundfarbe setzen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End') ; [ESC] beendet das Programm

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

    $hLabel = GUICtrlCreateLabel('', 0, 0, $Width, $Height, Default, $GUI_WS_EX_PARENTDRAG) ; Transparentes Label zum verschieben des Fensters

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

    $hHead = GUICtrlCreateLabel('', 10, 10, $Width - 20, 30, $SS_CENTER, $GUI_WS_EX_PARENTDRAG) ; Ein Label für die Überschrift
    GUICtrlSetFont(-1, 16, 600, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    ;$hText = GUICtrlCreateEdit('', 10, 45, $Width - 20, $Height - 60, BitOR($WS_VSCROLL, $ES_AUTOVSCROLL, $ES_READONLY), $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellen
    $hText = GUICtrlCreateEdit('', 10, 45, $Width - 20, $Height - 30, $WS_EX_TRANSPARENT) ; ohne Scrollbalken Editfeld erstellen
    GUICtrlSetBkColor(-1, $BgColor) ; Hintergrundfarbe setzen
    ;GUICtrlSetState(-1, $GUI_ONTOP) ; Das Editfeld nach vorne holen, damit man scrollen kann
    GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

    $n = GUICtrlCreatePic(@ScriptDir & "\wohnheim.jpg", 50, 80, 0, 0)
    FileInstall(@ScriptDir & "\wohnheim.jpg", @ScriptDir & "\wohnheim.jpg")

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

    ;$hCountdown = GUICtrlCreateEdit('', 10, 45, $Width-20, $Height-20, $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellenEin Label für den Countdown
    ; GUICtrlSetFont(-1, 10, 500, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hContextMenu = GUICtrlCreateContextMenu($hLabel) ; Kontextmenü erstellen
    GUICtrlCreateMenuItem('Info Anzeigen', $hContextMenu) ; Info-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_info') ; dem Eintrag eine Funktion zuweisen
    GUICtrlCreateMenuItem('Minimieren', $hContextMenu) ; Minimieren-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_Minimize') ; dem Eintrag eine Funktion zuweisen
    GUICtrlCreateMenuItem('Beenden', $hContextMenu) ; Beenden-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    TrayCreateItem('Info Anzeigen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_info') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('IP und Gateway speichern') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_speichereIPundGateway') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Manuell vom Internet trennen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Netzwerktrennen') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Manuell Verbindung wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Netzwerkverbinden') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Fenster Wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Restore') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Beenden') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    $hShadow = GUICreate('Shadow', $Width, $Height, $Left + 6, $Top + 6, $WS_POPUP, $WS_EX_TOOLWINDOW) ; Schattenfenster erzeugen
    GUISetBkColor($ShColor) ; Farbe des Schattens setzen
    WinSetTrans($hShadow, '', 128) ; Transparenz des Schattens einstellen

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

    GUISetState(@SW_SHOW, $hShadow) ; Schatten anzeigen
    GUISetState(@SW_SHOW, $hGui) ; GUI anzeigen
    WinSetOnTop('Shadow', '', 1) ; Schatten immer im Vordergrund
    WinSetOnTop($sTitle, '', 1) ; GUI immer im Vordergrund

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

    GUIRegisterMsg($WM_MOVE, '_ShadowMove') ; Funktion zum "Schatten verschieben" registrieren

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

    EndIf
    ;Diese Variable möchte ich über mein Programm definieren.
    ;$msg = 'In der großen Koalition sorgt der Zank um die Novelle des Gesetzes für das Bundeskriminalamt (BKA) weiter für Unmut. Vor allem Bundesinnenminister Wolfgang Schäuble ist nach wie vor erzürnt über den Widerstand auch aus SPD-regierten Ländern gegen die vom Bundestag abgesegnete Ausweitung der BKA-Befugnisse einschließlich einer Lizenz für heimliche Online-Durchsuchungen.'
    ;$msg &= '"Die Führung der Partei kann ihre Entscheidungen derzeit nicht durchsetzen", klagte der CDU-Minister dem "Focus" sein Leid. Der Koalitionspartner befinde sich in einer "akuten Krise". Eine "Handvoll Jusos" in Sachsen könne das Inkrafttreten eines jahrelang beratenen Gesetzes verzögern, schimpfte Schäuble gegen das erste Nein eines Landes gegen das Vorhaben, in dem die Sozialdemokraten mit an der Macht sind.'
    ;GUICtrlSetData($hHead, 'Streit um BKA-Gesetz') ; Überschrift anzeigen

    Global $msg = @HOUR & ":" & @MIN & ":" & @SEC & " Uhr"
    $msg &= @CRLF & @CRLF & "Aktuell sind: " ; Fensterinhalt definieren: Traffic und Verbleibende Minuten
    $msg &= $traffic
    $msg &= " Gbyte verbraucht."
    $msg &= @CRLF & "Nächste Überprüfung in "
    $msg &= $Minutes
    $msg &= " Minuten."
    ;$msg &= @CRLF & $n
    GUICtrlSetData($hHead, "Internet-Kontingent") ; Überschrift anzeigen
    GUICtrlSetData($hText, $msg) ; denText anzeigen
    ; Wie zeigt man einen Countdown an?

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

    EndFunc ;==>AusgabeimFenster

    [/autoit]
    • Offizieller Beitrag
  • Vielen Dank, ich habs mal erstellt. Wie weise ich den Dialogen der Standard Windowsleiste mit X eine Funktion zu? Bei mir geschieht einfach nichts wenn ich draufklicke.

    Spoiler anzeigen
    [autoit]

    #Region ### START Koda GUI section ### Form=d:\installationsdateien\projekte u. a. trafficlimit\trafficlimit projekt\internettraffic.kxf
    $Internettraffic = GUICreate("Internet Traffic Überwachung", 283, 237, 248, 159, BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_OVERLAPPEDWINDOW,$WS_TILEDWINDOW,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_TABSTOP,$WS_BORDER,$WS_CLIPSIBLINGS,$DS_SETFOREGROUND))
    GUISetBkColor(0xF1EFE2)
    $Edit1 = GUICtrlCreateEdit("", 42, 29, 193, 81, BitOR($ES_WANTRETURN,$WS_BORDER))
    Global $msg = "Letzte Überprüfung um " & @HOUR & ":" & @MIN & ":" & @SEC & " Uhr"
    $msg &= @CRLF & @CRLF & "Aktuell sind: " ; Fensterinhalt definieren: Traffic und Verbleibende Minuten
    $msg &= $traffic
    $msg &= " Gbyte verbraucht."
    $msg &= @CRLF & "Nächste Überprüfung in "
    $msg &= $Minutes
    $msg &= " Minuten."
    ;$msg &= @CRLF & $n
    GUICtrlSetData(-1, $msg)
    $Pic1 = GUICtrlCreatePic(@ScriptDir & "\wohnheim.jpg", 50, 115, 177, 95, BitOR($SS_NOTIFY,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    FileInstall("D:\Installationsdateien\Projekte u. a. Trafficlimit\Trafficlimit Projekt\wohnheim.jpg", @ScriptDir & "\wohnheim.jpg")
    $Label1 = GUICtrlCreateLabel("SWH Olewig Internet", 15, -3, 247, 33, $SS_CENTER, $GUI_WS_EX_PARENTDRAG)
    GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
    TraySetClick("9")
    TrayCreateItem('Info Anzeigen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_info') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('IP und Gateway speichern') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_speichereIPundGateway') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Manuell vom Internet trennen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Netzwerktrennen') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Manuell Verbindung wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Netzwerkverbinden') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Fenster Wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Restore') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Beenden') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen
    $MenuItem2 = GUICtrlCreateMenu("&Fenster")
    $MenuItem7 = GUICtrlCreateMenuItem("Minimieren", $MenuItem2)
    GUICtrlSetOnEvent(-1, "_Minimize")
    $MenuItem8 = GUICtrlCreateMenuItem("Schließen", $MenuItem2)
    GUICtrlSetOnEvent(-1, "_End")
    $MenuItem1 = GUICtrlCreateMenu("&Experteneinstellungen")
    $MenuItem4 = GUICtrlCreateMenuItem("Meine IP und Gateway IP speichern", $MenuItem1)
    GUICtrlSetOnEvent(-1, "_speichereIPundGateway")
    $MenuItem3 = GUICtrlCreateMenuItem("Manuell vom Internet trennen", $MenuItem1)
    GUICtrlSetOnEvent(-1, "_Netzwerktrennen")
    $MenuItem5 = GUICtrlCreateMenuItem("Manuell Verbindung herstellen", $MenuItem1)
    GUICtrlSetOnEvent(-1, "_Netzwerkverbinden")
    $MenuItem6 = GUICtrlCreateMenu("&Info")
    $MenuItem9 = GUICtrlCreateMenuItem("Aktuelle IP und Gateway anzeigen", $MenuItem6)
    GUICtrlSetOnEvent(-1, "_info")

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

    [/autoit]


    LG Poloshirt

  • Hallo PoloShirt,

    um dem "Schliessen"-Button einer Func zuzuweisen benutze

    [autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, '_DeineExitFunktion')

    [/autoit]

    Für den "Minimieren"-Button heisst das Event $GUI_EVENT_MINIMIZE
    und für "Maximieren" -Button " " " $GUI_EVENT_MAXIMIZE

    mfg (Auto)Bert

    • Offizieller Beitrag

    @Poloshirt: Du kannst bei Koda auch die Events automatisch erzeugen lassen .
    Tools > Generating Options und einfach einen Haken an Generate OnEvent code und Generate events for all controls machen >Save
    Tools >Generate Code und schon hast du ein Programmgerüst . Mit alllen GUISetOnEvent und GUICtrlSetOnEvent aufrufen .

  • Die Lösung waren für mich folgende Zeilen, um zu verhindern, dass die gui mehrfach startet:

    [autoit]

    $Edit = GUICtrlCreateEdit("", 42, 29, 193, 81, $ES_READONLY, $ES_MULTILINE) ;Erstmalige Anzeige
    GUICtrlSetData(-1, $Ausgabe)
    GUISetState() ;Hiermit wird GUI angezeigt

    [/autoit]


    und dann immer

    [autoit]

    GUICtrlSetData($Edit, $Ausgabe)

    [/autoit]


    Vielen Dank für eure Hilfe.