Minimieren als TrayIcon

  • Hallo,

    so habe meine Funktionen umgeschrieben so das ich auf INIWRITE und INIREAD gehe.(Danke für die Hilfe im alten Theard)
    Das geht soweit und die Funktion ist auch 100%.

    Nun habe ich noch versucht, dass beim Minimieren das Fenster nur noch als TrayIcon da ist. Dies geht auch, nur leider gehen dann alle andere Funktion nicht mehr.

    Sprich er geht nicht mehr in mein Einstellmenü/Exit/Info ...

    Also habe ich mir Irgend wie einen Bock rein geholt und ich sehe es nicht.

    Als 2 Frage hätte ich noch gewusst wie die INI in das Userprofil schreiben kann. Ich habe zwar zu dem Problem was gelesen es aber nicht verstanden.

    Danke schon mal für die Hilfe.

    Gruß

    Steffen

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    Opt('TrayMenuMode', 1)
    $Form1 = GUICreate("Arbeitszeiterfassung", 307, 201, 192, 124)
    $Setting_Menu = GUICtrlCreateMenu("Menü")
    $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
    $helpmenu = GUICtrlCreateMenu("?")
    $BJ = GUICtrlCreateMenuItem("Buchungsjournal",$helpmenu)
    $Einstellung = GUICtrlCreateMenuItem("Einstellungen",$helpmenu)
    $Info = GUICtrlCreateMenuItem("Info",$helpmenu)
    $Kommen = GUICtrlCreateButton("Kommen", 32, 16, 113, 113)
    GUICtrlSetFont(-1, 18, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Gehen = GUICtrlCreateButton("Gehen", 171, 16, 113, 113)
    GUICtrlSetFont(-1, 18, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0xFF0000)
    GUISetState(@SW_SHOW)
    $StatusBar1 = _GUICtrlStatusBar_Create($Form1)
    _GUICtrlStatusBar_SetBkColor($StatusBar1, 0x0000FF)
    _GUICtrlStatusBar_SetText($StatusBar1, "")
    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
    GUISetOnEvent($GUI_EVENT_MINIMIZE, '_Minimize')
    TraySetOnEvent( -7, '_Restore')
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Einstellung
    GuiSETState(@SW_HIDE, $Form1)
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")
    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Einstellungen", 293, 126, 192, 124)
    $Benutzername = GUICtrlCreateLabel("Benutzername", 8, 16, 100, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $Passwort = GUICtrlCreateLabel("Passwort", 8, 64, 66, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $BNspeichern = GUICtrlCreateInput($name, 128, 16, 145, 21)
    $PWspeichern = GUICtrlCreateInput("*****", 128, 64, 145, 21)
    $Speichern1 = GUICtrlCreateButton("Speichern", 128, 96, 65, 25)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 208, 96, 65, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg1 = GUIGetMsg()
    Switch $nMsg1
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_Hide, $Form2)
    GUISetState(@SW_SHOW, $Form1)
    ExitLoop
    Case $Speichern1
    IniWrite ("c:\aze.ini","User", "Benutzer", GUICtrlRead ($BNspeichern))
    IniWrite ("c:\aze.ini","User", "PW", GUICtrlRead ($PWspeichern))
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")
    GUISetState(@SW_Hide, $Form2)
    GUISetState(@SW_SHOW, $Form1)
    ExitLoop
    Case $Abbrechen
    GUISetState(@SW_Hide, $Form2)
    GUISetState(@SW_SHOW, $Form1)
    ExitLoop
    EndSwitch
    WEnd
    Case $Gehen
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("",0,0)
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(500)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Buchung")
    _IELoadWait($oIE)
    sleep(800)
    $oForm2 = _IEGetObjById($oIE, "2img")
    _IEAction($oForm2, "click")
    _IELoadWait($oIE)
    $oForm3 = _IEGetObjById($oIE, "shutdown")
    _IEAction($oForm3, "click")
    _IELoadWait($oIE)
    _IEQuit($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "Gehen Gebucht")
    case $Kommen
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("",0,0)
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(500)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Buchung")
    _IELoadWait($oIE)
    sleep(800)
    $oForm2 = _IEGetObjById($oIE, "1img")
    _IEAction($oForm2, "click")
    _IELoadWait($oIE)
    $oForm3 = _IEGetObjById($oIE, "shutdown")
    _IEAction($oForm3, "click")
    _IELoadWait($oIE)
    _IEQuit($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "Kommen Gebucht")
    case $Info
    MsgBox (0,"Info","Version 1.4 "&@CRLF&"25.08.2014 ")
    case $BJ
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("")
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(200)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Stempelkarte")
    _IELoadWait($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "")
    case $Setting_exit
    _Exit()
    EndSwitch
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _Minimize()
    TraySetState(1)
    GUISetState(@SW_HIDE)
    EndFunc

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

    Func _Restore()
    TraySetState(2)
    GUISetState(@SW_SHOW)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von SCCSSF (27. August 2014 um 12:17)

  • Lol, bei mir gehen die menü buttons gar nicht! auch nicht bevor ich minimiere!

    *EDIT: Ohman du musst wenn dann bei einem mode bleiben, also entweder guigetmsg() oder guioneventmode?! hier mal der anfang abgeendert...

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    Opt('TrayMenuMode', 1)
    main()
    Func main()
    Global $StatusBar1
    $Form1 = GUICreate("Arbeitszeiterfassung", 307, 201, 192, 124)
    $Setting_Menu = GUICtrlCreateMenu("Menü")
    $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
    $helpmenu = GUICtrlCreateMenu("?")
    $BJ = GUICtrlCreateMenuItem("Buchungsjournal",$helpmenu)
    $Einstellung = GUICtrlCreateMenuItem("Einstellungen",$helpmenu)
    $Info = GUICtrlCreateMenuItem("Info",$helpmenu)
    $Kommen = GUICtrlCreateButton("Kommen", 32, 16, 113, 113)
    GUICtrlSetFont(-1, 18, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Gehen = GUICtrlCreateButton("Gehen", 171, 16, 113, 113)
    GUICtrlSetFont(-1, 18, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0xFF0000)
    GUISetState(@SW_SHOW)
    $StatusBar1 = _GUICtrlStatusBar_Create($Form1)
    _GUICtrlStatusBar_SetBkColor($StatusBar1, 0x0000FF)
    _GUICtrlStatusBar_SetText($StatusBar1, "")
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
    GUICtrlSetOnEvent($Setting_exit, '_Exit')
    GUISetOnEvent($GUI_EVENT_MINIMIZE, '_Minimize')
    GUICtrlSetOnEvent($Einstellung, 'settings')
    GUICtrlSetOnEvent($Gehen, 'gehen')
    GUICtrlSetOnEvent($Kommen, 'kommen')
    GUICtrlSetOnEvent($BJ, 'bjn')
    GUICtrlSetOnEvent($Info, 'info')
    TraySetOnEvent(-7, '_Restore')
    $name = IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw = IniRead("c:\aze.ini", "User", "PW", "")
    While 1
    Sleep(10)
    WEnd
    EndFunc

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

    Func settings()
    GUISetState(@SW_HIDE)
    $name = IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw = IniRead("c:\aze.ini", "User", "PW", "")
    $Form2 = GUICreate("Einstellungen", 293, 126, 192, 124)
    $Benutzername = GUICtrlCreateLabel("Benutzername", 8, 16, 100, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $Passwort = GUICtrlCreateLabel("Passwort", 8, 64, 66, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $BNspeichern = GUICtrlCreateInput($name, 128, 16, 145, 21)
    $PWspeichern = GUICtrlCreateInput("*****", 128, 64, 145, 21)
    $Speichern1 = GUICtrlCreateButton("Speichern", 128, 96, 65, 25)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 208, 96, 65, 25)
    GUISetState(@SW_SHOW)

    While 1
    $nMsg1 = GUIGetMsg()
    Switch $nMsg1
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_Hide, $Form2)
    GUISetState(@SW_SHOW, $Form1)
    ExitLoop
    Case $Speichern1
    IniWrite ("c:\aze.ini","User", "Benutzer", GUICtrlRead ($BNspeichern))
    IniWrite ("c:\aze.ini","User", "PW", GUICtrlRead ($PWspeichern))
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")
    GUISetState(@SW_Hide, $Form2)
    GUISetState(@SW_SHOW, $Form1)
    ExitLoop
    Case $Abbrechen
    GUISetState(@SW_Hide, $Form2)
    GUISetState(@SW_SHOW, $Form1)
    ExitLoop
    EndSwitch
    WEnd
    EndFunc

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

    Func gehen()
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("",0,0)
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(500)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Buchung")
    _IELoadWait($oIE)
    sleep(800)
    $oForm2 = _IEGetObjById($oIE, "2img")
    _IEAction($oForm2, "click")
    _IELoadWait($oIE)
    $oForm3 = _IEGetObjById($oIE, "shutdown")
    _IEAction($oForm3, "click")
    _IELoadWait($oIE)
    _IEQuit($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "Gehen Gebucht")
    EndFunc

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

    Func kommen()
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("",0,0)
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(500)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Buchung")
    _IELoadWait($oIE)
    sleep(800)
    $oForm2 = _IEGetObjById($oIE, "1img")
    _IEAction($oForm2, "click")
    _IELoadWait($oIE)
    $oForm3 = _IEGetObjById($oIE, "shutdown")
    _IEAction($oForm3, "click")
    _IELoadWait($oIE)
    _IEQuit($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "Kommen Gebucht")
    EndFunc

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

    Func bj()
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("")
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(200)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Stempelkarte")
    _IELoadWait($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "")
    EndFunc

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

    Func info()
    MsgBox (0,"Info","Version 1.4 "&@CRLF&"25.08.2014 ")
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _Minimize()
    TraySetState(1)
    GUISetState(@SW_HIDE)
    EndFunc

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

    Func _Restore()
    TraySetState(2)
    GUISetState(@SW_SHOW)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von philipp (26. August 2014 um 20:57)

  • Hallo Phil-IT,

    Danke erstmal für die Hilfe.

    Nein bevor ich das mit dem minimieren rein geschrieben habe, hat alles Funktioniert.

    Ich werde morgen deinen Code testen und berichten.

    Ich stelle mich auch etwas schwer den Umfang mancher Befehle im Zusammenhang raus zu bekommen.

    Sprich ich suche eine neue Funktion, schaue mir die Beispiele an und schreibe sie für mich um. Blöd ist dann nur wenn man Funktionen kombiniert und dazu dann nichts direkt findet(inkl. Erklärung).

    Da ich seit 2 Jahren mal wieder was mit autoit geschrieben habe bin ich innerlich schon zufrieden mit mir. ;)

    Steffen


  • ja, so mach ich das nicht, ich versuche mir anhand der beispiele dann immer ein eigenes 'test' script zu schreiben, und mit dem neuen wissen zu arbeiten, und arbeite mich dann zu dem was ich letztendlich haben will langsam hin.. also zu dem code du hast hat einfach guieventmode und msg verwendet und das geht schlicht und einfach nicht.:D

  • Ich habs dir mal komplett umgeschrieben...
    Das Hauptfenster am besten vor den Funktionen schreiben. Die Unterfenster dann in den Funktionen erstellen und alle Controls und die Gui GLOBAL am Anfang des Codes deklarieren.
    GuiGetMsg() und opt("GUIOnEventMode",1) funktioniert oft nicht gleichzeitig. Deshalb funktionierten deine Buttons nicht mehr. Man sollte sich für eine Möglichkeit entscheiden.
    Bei größeren Programmen empfehle ich den guioneventmode, da bei dem Andern immer die Schleife abgegrast wird. So wird auf Messages reagiert... spart nen bisschen Rechenleistung (wenn das Programm größer ist...)

    PS: (Das Einrücken überlass ich dir)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    Opt('TrayMenuMode', 1)

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

    global $Form2,$BNspeichern,$PWspeichern

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

    $Form1 = GUICreate("Arbeitszeiterfassung", 307, 201, 192, 124)
    $Setting_Menu = GUICtrlCreateMenu("Menü")
    $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
    GUICtrlSetOnEvent(-1,"_Exit")
    $helpmenu = GUICtrlCreateMenu("?")
    $BJ = GUICtrlCreateMenuItem("Buchungsjournal",$helpmenu)
    GUICtrlSetOnEvent(-1,"_Help")
    $Einstellung = GUICtrlCreateMenuItem("Einstellungen",$helpmenu)
    GUICtrlSetOnEvent(-1,"_settings")
    $Info = GUICtrlCreateMenuItem("Info",$helpmenu)
    GUICtrlSetOnEvent(-1,"_showInfo")
    $Kommen = GUICtrlCreateButton("Kommen", 32, 16, 113, 113)
    GUICtrlSetFont(-1, 18, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0x00FF00)
    GUICtrlSetOnEvent(-1,"_startSession")
    $Gehen = GUICtrlCreateButton("Gehen", 171, 16, 113, 113)
    GUICtrlSetFont(-1, 18, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0xFF0000)
    GUICtrlSetOnEvent(-1,"_endSession")
    GUISetState(@SW_SHOW)
    $StatusBar1 = _GUICtrlStatusBar_Create($Form1)
    _GUICtrlStatusBar_SetBkColor($StatusBar1, 0x0000FF)
    _GUICtrlStatusBar_SetText($StatusBar1, "")
    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
    GUISetOnEvent($GUI_EVENT_MINIMIZE, '_Minimize')
    TraySetOnEvent( -7, '_Restore')
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")

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

    While sleep(100)
    WEnd

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

    Func _settings()
    GuiSETState(@SW_HIDE, $Form1)
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")
    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Einstellungen", 293, 126, 192, 124)
    $Benutzername = GUICtrlCreateLabel("Benutzername", 8, 16, 100, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $Passwort = GUICtrlCreateLabel("Passwort", 8, 64, 66, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $BNspeichern = GUICtrlCreateInput($name, 128, 16, 145, 21)
    $PWspeichern = GUICtrlCreateInput("*****", 128, 64, 145, 21)
    $Speichern1 = GUICtrlCreateButton("Speichern", 128, 96, 65, 25)
    GUICtrlSetOnEvent(-1,"_settings_save")
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 208, 96, 65, 25)
    GUICtrlSetOnEvent(-1,"_settings_end")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    GUISetOnEvent($GUI_EVENT_CLOSE, '_settings_end')
    EndFunc

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

    Func _settings_save()
    IniWrite ("c:\aze.ini","User", "Benutzer", GUICtrlRead ($BNspeichern))
    IniWrite ("c:\aze.ini","User", "PW", GUICtrlRead ($PWspeichern))
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")
    ;GUISetState(@SW_Hide, $Form2)
    GUIDelete($Form2) ;andernfalls erzeugst du bei jedem aufruf ein neues Fenster. Das wird nicht zerstört, sondern jedesmal neu erzeugt.
    ;hier spielt es nur eine geringe Rolle, bei anderen Fenstern wird es aber schnell größer und verbraucht mehr und mehr speicher,
    ;da das Fenster ja noch existiert und nur versteckt ist. Also immer löschen, oder auch testen, ob es bereits existiert, und wenn ja, dann nur wie der anzeigen:
    ;if $Form2<>"" then
    ;guisetstate(@SW_SHOW,$Form2)
    ;else
    ;guicreate(
    ;...
    ;endif
    ;Dann die Variable aber auch global anlegen ;)
    GUISetState(@SW_SHOW, $Form1)
    EndFunc

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

    Func _settings_end()
    GUIDelete($Form2)
    GUISetState(@SW_SHOW, $Form1)
    EndFunc

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

    Func _endSession()
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("",0,0)
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(500)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Buchung")
    _IELoadWait($oIE)
    sleep(800)
    $oForm2 = _IEGetObjById($oIE, "2img")
    _IEAction($oForm2, "click")
    _IELoadWait($oIE)
    $oForm3 = _IEGetObjById($oIE, "shutdown")
    _IEAction($oForm3, "click")
    _IELoadWait($oIE)
    _IEQuit($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "Gehen Gebucht")
    EndFunc

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

    Func _startSession()
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("",0,0)
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(500)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Buchung")
    _IELoadWait($oIE)
    sleep(800)
    $oForm2 = _IEGetObjById($oIE, "1img")
    _IEAction($oForm2, "click")
    _IELoadWait($oIE)
    $oForm3 = _IEGetObjById($oIE, "shutdown")
    _IEAction($oForm3, "click")
    _IELoadWait($oIE)
    _IEQuit($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "Kommen Gebucht")
    EndFunc

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

    Func _showInfo()
    MsgBox (0,"Info","Version 1.4 "&@CRLF&"25.08.2014 ")
    EndFunc

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

    Func _Help()
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("")
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(200)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Stempelkarte")
    _IELoadWait($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "")
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _Minimize()
    TraySetState(1)
    GUISetState(@SW_HIDE)
    EndFunc

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

    Func _Restore()
    TraySetState(2)
    GUISetState(@SW_SHOW)
    EndFunc

    [/autoit]
  • Danke an euch beide!

    Habe es geteste und in "mein" Programm so umgebaut und es Funktioniert.

    Das mit den Fenstern war mir gar nicht klar. Gut so häufig macht man das Fenster wirklich nicht auf und zu.

    Habe jetzt noch eine Funktion eingebaut damit er mir nicht ***** als Passwort speichert.

    Mal sehen was mir noch so einfällt.

    Gruß
    Steffen

  • Hallo,

    $PWspeichern = GUICtrlCreateInput("", 128, 64, 145, 21,$ES_PASSWORD)

    hatte es so gelöst.

    Spoiler anzeigen
    [autoit]

    Func _settings_save()
    IniWrite ("c:\aze.ini","User", "Benutzer", GUICtrlRead ($BNspeichern))
    if GUICtrlRead ($PWspeichern) <> "*****" Then
    IniWrite ("c:\aze.ini","User", "PW", GUICtrlRead ($PWspeichern))
    Endif
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")
    GUIDelete($Form2)
    GUISetState(@SW_SHOW, $Form1)
    EndFunc

    [/autoit]

    Werde deine Funktion mal Testen und sicherlich für besser befinden ;)

    Update
    oder Besser noch ich verknüpfe unsere Funktionen! Bessere Passworteingabe und sicheres Speichern.

    Spoiler anzeigen
    [autoit]

    Func _settings()
    GuiSETState(@SW_HIDE, $Form1)
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")
    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Einstellungen", 293, 126, 192, 124)
    $Benutzername = GUICtrlCreateLabel("Benutzername", 8, 16, 100, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $Passwort = GUICtrlCreateLabel("Passwort", 8, 64, 66, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $BNspeichern = GUICtrlCreateInput($name, 128, 16, 145, 21)
    $PWspeichern = GUICtrlCreateInput("", 128, 64, 145, 21,$ES_PASSWORD)
    $Speichern1 = GUICtrlCreateButton("Speichern", 128, 96, 65, 25)
    GUICtrlSetOnEvent(-1,"_settings_save")
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 208, 96, 65, 25)
    GUICtrlSetOnEvent(-1,"_settings_end")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    GUISetOnEvent($GUI_EVENT_CLOSE, '_settings_end')
    EndFunc

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

    Func _settings_save()
    IniWrite ("c:\aze.ini","User", "Benutzer", GUICtrlRead ($BNspeichern))
    if GUICtrlRead ($PWspeichern) <> "" Then
    IniWrite ("c:\aze.ini","User", "PW", GUICtrlRead ($PWspeichern))
    Endif
    $name =IniRead("c:\aze.ini", "User", "Benutzer", "")
    $pw =IniRead("c:\aze.ini", "User", "PW", "")
    GUIDelete($Form2)
    GUISetState(@SW_SHOW, $Form1)
    EndFunc

    [/autoit]

    Hast du noch ne Idee zum User Dokumentenverzeichnis, wo jeder User ein recht hat eine INI zu schreiben? AKtuell schreibe ich ja in c:\.

    Gruß

    Steffen

    Einmal editiert, zuletzt von SCCSSF (27. August 2014 um 18:51)

    • Offizieller Beitrag

    Zum speichern von Einstellungen und Daten ist eigentlich das Anwendungsverzeichnis des Benutzers vorgesehen (dort brauchst Du keine zusätzlichen Rechte).
    Bei AutoIt gibt es dazu das Makro: @AppDataDir.
    Im Anwendungsverzeichnis erstellst Du ein Verzeichnis für Dein Programm:

    [autoit]

    DirCreate(@AppDataDir & '\DeinProgramm\')

    [/autoit]


    und schreibst dann die Daten in das erstellte Verzeichnis.

  • Danke Oskar habe ich Umgebaut.

    Hier mein Code für die Leute die auch die Frage haben wie es geht.

    Gruß
    Steffen

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    Opt('TrayMenuMode', 1)

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

    global $Form2,$BNspeichern,$PWspeichern
    DirCreate(@AppDataDir & '\aze\')
    $Form1 = GUICreate("Arbeitszeiterfassung", 307, 201, 192, 124)
    $Setting_Menu = GUICtrlCreateMenu("Menü")
    $Setting_exit = GUICtrlCreateMenuItem("Ende", $Setting_Menu)
    GUICtrlSetOnEvent(-1,"_Exit")
    $helpmenu = GUICtrlCreateMenu("?")
    $BJ = GUICtrlCreateMenuItem("Buchungsjournal",$helpmenu)
    GUICtrlSetOnEvent(-1,"_Help")
    $Einstellung = GUICtrlCreateMenuItem("Einstellungen",$helpmenu)
    GUICtrlSetOnEvent(-1,"_settings")
    $Info = GUICtrlCreateMenuItem("Info",$helpmenu)
    GUICtrlSetOnEvent(-1,"_showInfo")
    $Kommen = GUICtrlCreateButton("Kommen", 32, 16, 113, 113)
    GUICtrlSetFont(-1, 18, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0x00FF00)
    GUICtrlSetOnEvent(-1,"_startSession")
    $Gehen = GUICtrlCreateButton("Gehen", 171, 16, 113, 113)
    GUICtrlSetFont(-1, 18, 800, 0, "@Arial Unicode MS")
    GUICtrlSetBkColor(-1, 0xFF0000)
    GUICtrlSetOnEvent(-1,"_endSession")
    GUISetState(@SW_SHOW)
    $StatusBar1 = _GUICtrlStatusBar_Create($Form1)
    _GUICtrlStatusBar_SetText($StatusBar1, "")
    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
    GUISetOnEvent($GUI_EVENT_MINIMIZE, '_Minimize')
    TraySetOnEvent( -7, '_Restore')
    $name =IniRead(@AppDataDir & "\aze\aze.ini", "User", "Benutzer", "")
    $pw =IniRead(@AppDataDir & "\aze\aze.ini", "User", "PW", "")

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

    While sleep(100)
    WEnd

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

    Func _settings()
    GuiSETState(@SW_HIDE, $Form1)
    $name =IniRead(@AppDataDir & "\aze\aze.ini", "User", "Benutzer", "")
    $pw =IniRead(@AppDataDir & "\aze\aze.ini", "User", "PW", "")
    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Einstellungen", 293, 126, 192, 124)
    $Benutzername = GUICtrlCreateLabel("Benutzername", 8, 16, 100, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $Passwort = GUICtrlCreateLabel("Passwort", 8, 64, 66, 22)
    GUICtrlSetFont(-1, 10, 800, 0, "@Arial Unicode MS")
    $BNspeichern = GUICtrlCreateInput($name, 128, 16, 145, 21)
    $PWspeichern = GUICtrlCreateInput("", 128, 64, 145, 21,$ES_PASSWORD)
    $Speichern1 = GUICtrlCreateButton("Speichern", 128, 96, 65, 25)
    GUICtrlSetOnEvent(-1,"_settings_save")
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 208, 96, 65, 25)
    GUICtrlSetOnEvent(-1,"_settings_end")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    GUISetOnEvent($GUI_EVENT_CLOSE, '_settings_end')
    EndFunc

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

    Func _settings_save()
    IniWrite (@AppDataDir & "\aze\aze.ini","User", "Benutzer", GUICtrlRead ($BNspeichern))
    if GUICtrlRead ($PWspeichern) <> "" Then
    IniWrite (@AppDataDir & "\aze\aze.ini","User", "PW", GUICtrlRead ($PWspeichern))
    Endif
    $name =IniRead(@AppDataDir & "\aze\aze.ini", "User", "Benutzer", "")
    $pw =IniRead(@AppDataDir & "\aze\aze.ini", "User", "PW", "")
    GUIDelete($Form2)
    GUISetState(@SW_SHOW, $Form1)
    EndFunc

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

    Func _settings_end()
    GUIDelete($Form2)
    GUISetState(@SW_SHOW, $Form1)
    EndFunc

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

    Func _endSession()
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("",0,0)
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(500)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Buchung")
    _IELoadWait($oIE)
    sleep(800)
    $oForm2 = _IEGetObjById($oIE, "2img")
    _IEAction($oForm2, "click")
    _IELoadWait($oIE)
    $oForm3 = _IEGetObjById($oIE, "shutdown")
    _IEAction($oForm3, "click")
    _IELoadWait($oIE)
    _IEQuit($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "Gehen Gebucht")
    EndFunc

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

    Func _startSession()
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("",0,0)
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(500)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Buchung")
    _IELoadWait($oIE)
    sleep(800)
    $oForm2 = _IEGetObjById($oIE, "1img")
    _IEAction($oForm2, "click")
    _IELoadWait($oIE)
    $oForm3 = _IEGetObjById($oIE, "shutdown")
    _IEAction($oForm3, "click")
    _IELoadWait($oIE)
    _IEQuit($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "Kommen Gebucht")
    EndFunc

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

    Func _showInfo()
    MsgBox (0,"Info","Version 1.5.1 "&@CRLF&"28.08.2014")
    EndFunc

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

    Func _Help()
    _GUICtrlStatusBar_SetText($StatusBar1, "Bitte Warten!")
    $oIE = _IECreate("")
    _IENavigate($oIE, "http://192.168.100.89:8080/info")
    _IELoadWait($oIE, 0, 30000)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByname($oForm, "UID")
    $oPassword = _IEFormElementGetObjByName($oForm, "PWD")
    _IEFormElementSetValue($oUsername, $name)
    _IEFormElementSetValue($oPassword, $pw)
    _IEFormSubmit($oForm)
    sleep(200)
    $oForm1 = _IEFormGetCollection($oIE, 0)
    $Menu1 = _IELinkClickByText($oForm1, "Stempelkarte")
    _IELoadWait($oIE)
    _GUICtrlStatusBar_SetText($StatusBar1, "")
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _Minimize()
    TraySetState(1)
    GUISetState(@SW_HIDE)
    EndFunc

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

    Func _Restore()
    TraySetState(2)
    GUISetState(@SW_SHOW)
    EndFunc

    [/autoit]