1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Raleigh

Beiträge von Raleigh

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 17. Juli 2023 um 15:05
    Zitat von Moombas

    Raleigh : Das kann so nicht hin hauen. Ich habe meine oben angesprochene Korrektur auf deinen Beitrag #29 bezogen.

    Dort kommt $iClick NUR in Zeile 49 vor und wird somit nicht benötigt.

    Auch fehlt dort die Globale deklaration von $oSession, weshalb dein vorheriger angesprochener Fehler (Zeile 35) her rührt und mit meiner oben angepsrochenen Korrektur (Zeile 10) behoben wird.

    Wie soll man dir helfen, wenn du zwischen unterschiedlichen Codes hin und her springst?...


    Ja, Sorry. Ich bin selbst schon ganz verwirrt. Jetzt die Änderungen nochmal bei dem Script aus Beitrag #29 vorgenommen und läuft wie es soll.

    Somit kann man das Thema jetzt wirklich beenden. :)

    So, hier dann das Endergebnis:

    C
    Opt('MustDeclareVars', 1)
    #include <wd_helper.au3>
    #include <wd_capabilities.au3>
    #include <Date.au3>
    
    ;Hotkey eingebaut zum beenden des Programms, da aktuell keine Bedingung zum Beenden vorhanden ist.
    HotKeySet("{ESC}", "beenden")
    
    Global Const $sMin1 = "28", $sMin2 = "58", $sMin3 = "43", $sStd3 = "15"
    Global $sStd, $sMin, $oSession
    
    start()
    ; AdlibRegister('Adlib_ansage', $itime_adl) <<<<< wird nicht gebraucht
    
    While True
        $sMin = @MIN  ; für den sehr unwahrscheinlichen Fall, dass sich die Werte während der folgenden Abfrage ändern
        $sStd = @HOUR ; für den sehr unwahrscheinlichen Fall, dass sich die Werte während der folgenden Abfrage ändern
        If ($sMin = $sMin1) Or ($sMin = $sMin2) Or (($sStd = $sStd3) And ($sMin = $sMin3)) Then
            Uhr_ansagen()
            ConsoleWrite("ANSAGE : " & $sStd & ":" & $sMin & " Uhr!" &@CRLF) ; wenn gewollt
            While (@MIN = $sMin)
                Sleep(1000) ; bis zur nächsten Minute schlafen
            WEnd
        Else
            Sleep(1000) ; um die Prozessorlast unten zu halten
        EndIf
    WEnd
    beenden()
    
    ;Variablen umsortiert (Deklarationen mittem im Code sind unschön) und eine Lokal gesetzt da außerhalb nicht genutzt
    Func start()
    Local Const $sLocalFilePath = @ScriptDir & '\talk.html'
    Local Const $sLocalFileURL  = "file:///" & StringReplace($sLocalFilePath, "\", "/")
    Local $capsi = SetupEdge()
        $oSession = _WD_CreateSession($capsi)
        _WD_Navigate($oSession, $sLocalFileURL)
        Uhr_ansagen()
        ConsoleWrite('ANSAGE : ' & _NowTime() & 'Uhr PER START!!!!' & @CRLF)
    EndFunc   ;==>start
    
    Func Adlib_ansage()
        Uhr_ansagen()
        ConsoleWrite('ANSAGE : ' & _NowTime() & 'Uhr PER ADLIB!!!!' & @CRLF)
    EndFunc   ;==>Adlib_ansage
    
    Func Uhr_ansagen()
    Local $element = _WD_FindElement($oSession, 'xpath', '//*[@id="clockID"]')
        _WD_ElementAction($oSession, $element, 'Click')
    EndFunc   ;==>Uhr_ansagen
    
    Func beenden()
        _WD_DeleteSession($oSession)
        _WD_Shutdown()
        ConsoleWrite('Script wurde Erfolgreich beendet.' & @CRLF)
        Exit
    EndFunc   ;==>beenden
    
    ;Variablen umsortiert (Deklarationen mittem im Code sind unschön) und eine entfernt, da direkt über Return zurück gegeben werden kann
    Func SetupEdge()
    Local $hWnd
        _WD_UpdateDriver("msedge", @ScriptDir)
        _WD_Option('Driver', @ScriptDir & '\msedgedriver.exe')
        _WD_Option('Port', 9515)
        _WD_Startup()
        ; Startparameter sammeln
        _WD_CapabilitiesStartup()
        _WD_CapabilitiesAdd('alwaysMatch', 'msedge')
        _WD_CapabilitiesAdd('excludeSwitches', 'enable-automation')
        _WD_CapabilitiesAdd('args', 'guest')
        _WD_CapabilitiesDump(@ScriptLineNumber)
        _WD_CapabilitiesAdd('args', '--headless')
        $hWnd = WinWait("[CLASS:ConsoleWindowClass]", "", 10)
        WinSetState($hWnd, "", @SW_HIDE)
        Return _WD_CapabilitiesGet()
    EndFunc   ;==>SetupEdge
    Alles anzeigen


    @Velted

    Ich hatte dein Script auch nochmal getestet. Da kam dann Fehler in Zeile 39... Es spielt jetzt ja keine Rolle mehr. Da das Script jetzt reibungslos funktioniert. An alle nochmal vielen Dank für die Hilfsbereitschaft.


    Zitat von BugFix


    Du kannst das auch ohne Browserzugriff lösen. Schau dir mal diese Variante der Sprachausgabe an:


    Damit hatte ich als erstes experimentiert. Wie gesagt, für mich kein zufriedenstellendes Ergebniss bekommen.


    Zitat von BugFix


    Also Susi klingt schon sehr angenehm.


    Bei mir ist keine Susi installiert, unter Windows 10 Enterprise. Obwohl ich alle deutschen Sprachpakete installiert habe, sind bei mir

    Stefan, David, Katja, Zira, Mark, Steffie(DE/EN).


    Viele Grüße

    Raleigh

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 14. Juli 2023 um 18:15

    Das Script aus Beitrag #18 ist doch das letzte was als Basis genommen wurde?! Zeile 10 sieht bei mir so aus: "Global $oSession, $iclick = False" die ich jetzt mit "Global $sStd, $sMin, $oSession" geändert habe. Zeile 49 sieht bei mir so aus: "Func Adlib_ansage()".

    Zeile 57 ist bei mir: "$iclick = True". Die ich jetzt gelöscht habe. Dann kommt die Fehlermeldung:

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 14. Juli 2023 um 15:02

    Welchen Einfluss hat nun der Einwand von Velted auf das Skript? Ich bin überfordert und verwirrt. 8o

    Nachdem ich mal den Code von Velted getestet habe, kam in Zeile 35 eine Fehlremeldung. Wer weiß ob ich da den Code richtig getauscht habe.

    C
    Opt('MustDeclareVars', 1)
    #include <wd_helper.au3>
    #include <wd_capabilities.au3>
    #include <Date.au3>
    
    ;Hotkey eingebaut zum beenden des Programms, da aktuell keine Bedingung zum Beenden vorhanden ist.
    HotKeySet("{ESC}", "beenden")
    
    Global Const $sMin1 = "28", $sMin2 = "58", $sMin3 = "43", $sStd3 = "15"
    Global $sStd, $sMin
    
    start()
    ; AdlibRegister('Adlib_ansage', $itime_adl) <<<<< wird nicht gebraucht
    
    While True
        $sMin = @MIN  ; für den sehr unwahrscheinlichen Fall, dass sich die Werte während der folgenden Abfrage ändern
        $sStd = @HOUR ; für den sehr unwahrscheinlichen Fall, dass sich die Werte während der folgenden Abfrage ändern
        If ($sMin = $sMin1) Or ($sMin = $sMin2) Or (($sStd = $sStd3) And ($sMin = $sMin3)) Then
            Uhr_ansagen()
            ConsoleWrite("ANSAGE : " & $sStd & ":" & $sMin & " Uhr!" &@CRLF) ; wenn gewollt
            While (@MIN = $sMin)
                Sleep(1000) ; bis zur nächsten Minute schlafen
            WEnd
        Else
            Sleep(1000) ; um die Prozessorlast unten zu halten
        EndIf
    WEnd
    beenden()
    
    ;Variablen umsortiert (Deklarationen mittem im Code sind unschön) und eine Lokal gesetzt da außerhalb nicht genutzt
    Func start()
    Local Const $sLocalFilePath = @ScriptDir & '\talk.html'
    Local Const $sLocalFileURL  = "file:///" & StringReplace($sLocalFilePath, "\", "/")
    Local $capsi = SetupEdge()
        $oSession = _WD_CreateSession($capsi)
        _WD_Navigate($oSession, $sLocalFileURL)
        Uhr_ansagen()
        ConsoleWrite('ANSAGE : ' & _NowTime() & 'Uhr PER START!!!!' & @CRLF)
    EndFunc   ;==>start
    
    Func Adlib_ansage()
        Uhr_ansagen()
        ConsoleWrite('ANSAGE : ' & _NowTime() & 'Uhr PER ADLIB!!!!' & @CRLF)
    EndFunc   ;==>Adlib_ansage
    
    Func Uhr_ansagen()
    Local $element = _WD_FindElement($oSession, 'xpath', '//*[@id="clockID"]')
        _WD_ElementAction($oSession, $element, 'Click')
        $iclick = True
    EndFunc   ;==>Uhr_ansagen
    
    Func beenden()
        _WD_DeleteSession($oSession)
        _WD_Shutdown()
        ConsoleWrite('Script wurde Erfolgreich beendet.' & @CRLF)
        Exit
    EndFunc   ;==>beenden
    
    ;Variablen umsortiert (Deklarationen mittem im Code sind unschön) und eine entfernt, da direkt über Return zurück gegeben werden kann
    Func SetupEdge()
    Local $hWnd
        _WD_UpdateDriver("msedge", @ScriptDir)
        _WD_Option('Driver', @ScriptDir & '\msedgedriver.exe')
        _WD_Option('Port', 9515)
        _WD_Startup()
        ; Startparameter sammeln
        _WD_CapabilitiesStartup()
        _WD_CapabilitiesAdd('alwaysMatch', 'msedge')
        _WD_CapabilitiesAdd('excludeSwitches', 'enable-automation')
        _WD_CapabilitiesAdd('args', 'guest')
        _WD_CapabilitiesDump(@ScriptLineNumber)
        _WD_CapabilitiesAdd('args', '--headless')
        $hWnd = WinWait("[CLASS:ConsoleWindowClass]", "", 10)
        WinSetState($hWnd, "", @SW_HIDE)
        Return _WD_CapabilitiesGet()
    EndFunc   ;==>SetupEdge
    Alles anzeigen

    Oder doch noch leichte Anpassungen im aktuellen Script aus #18?

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 13. Juli 2023 um 22:39

    @Velted

    Ja. Danke für den Hinweis.


    Viele Grüße

    Raleigh

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 13. Juli 2023 um 14:28

    Dann muss ich mich wohl falsch ausgedrükt haben. ?( Das Script soll so lange die 30 Minuten Abfrage stellen, so lang der PC auch eingeschaltet ist. Die festgelegte Uhrzeit(bsw. 15:43 Uhr) findet einmal statt und danach soll natürlich auch die 30 Minuten Abfrage weiterhin stattfinden.

    Das letzte Script mit Hotkey von @Moombas erfüllt jetzt alle Vorgaben. Die festgellegte Zeit, die 30 Minuten Abfragen und die Hotkey Funktion funktionieren. Wenn ich dann der Meinung bin doch die Abfragen zu beenden, brauch ich ja nur per Hotkey das Script beenden. So erfüllt das Script alle meine Wünsche. Es gibt also keinen Grund mehr eure Geduld weiterhin zu strapazieren. Daher nochmals einen großen Dank an alle.


    Viele Grüße

    Raleigh

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 12. Juli 2023 um 22:25

    Ich hab eine schlechte Nachricht. Sobald die festgelegte Uhrzeit(15:43 Uhr) abgefragt wird, beendet sich das Script immer noch. Im Taskmanager sind der Webdriver und die 6 Edge Tasks dann beendet worden.

    Es gibt aber auch eine positive Nachricht. Wenn ich die Zeile "$end = 1"(Zeile 22) lösche funktioniert die Abfrage für die festgelegte Zeit und auch die 30 Minutenabfrage. Nur der Webdriver und die 6 Edge Tasks laufen im Tasmanager weiter. Auch wenn ich das Script manuell schließe. Ich häng das Script so wie es bei mir läuft nochmal hier rein.

    C
    #include <wd_helper.au3>
    #include <wd_capabilities.au3>
    #include <Date.au3>
    
    Global $oSession = '', $capsi, $hWndBrowser, $iclick = 0, $end = 0
    Global $endtime = '22:08:00', $itime_1 = '06', $itime_2 = '10', $itime_adl = 1800000
    
    AdlibRegister('Adlib_ansage', $itime_adl)
    start()
    
    While 1
        Sleep(50) ;einfach um die prozessorlast unten zu halten.
    
        If $end = 1 Then
            beenden()
        EndIf
    
        If $iclick = 0 Then
            If _NowTime() = $endtime Then
                Uhr_ansagen()            
                Sleep(10000);es dauert etwas bis die Ansage anläuft deshalb hier nochmal schlafen.
    ;            $end = 1 
            ElseIf StringSplit(_NowTime(), ':')[2] = $itime_1 And StringSplit(_NowTime(), ':')[3] = '00' Then
                Uhr_ansagen()
                ConsoleWrite('ANSAGE : ' & _NowTime() & 'Uhr ELSEIF ! 1!' & @CRLF)
            ElseIf StringSplit(_NowTime(), ':')[2] = $itime_2 And StringSplit(_NowTime(), ':')[3] = '00' Then
                Uhr_ansagen()
                ConsoleWrite('ANSAGE : ' & _NowTime() & 'Uhr ELSEIF ! 2!' & @CRLF)
            EndIf
        ElseIf $iclick = 1 Then
            Sleep(1000) ;Schlaf ca. 1sec
            $iclick = 0
        EndIf
    WEnd
    
    Func start()
        $capsi = SetupEdge()
        $oSession = _WD_CreateSession($capsi)
        Local $sLocalFilePath = @ScriptDir & '\talk.html'
        Local $sLocalFileURL = "file:///" & StringReplace($sLocalFilePath, "\", "/")
        _WD_Navigate($oSession, $sLocalFileURL)
        Uhr_ansagen()
        ConsoleWrite('ANSAGE : ' & _NowTime() & 'Uhr PER START!!!!' & @CRLF)
    EndFunc   ;==>start
    
    Func Adlib_ansage()
        Uhr_ansagen()
        ConsoleWrite('ANSAGE : ' & _NowTime() & 'Uhr PER ADLIB!!!!' & @CRLF)
    EndFunc   ;==>Adlib_ansage
    
    Func Uhr_ansagen()
         
        Local $element = _WD_FindElement($oSession, 'xpath', '//*[@id="clockID"]')
        _WD_ElementAction($oSession, $element, 'Click')
        $iclick = 1
    EndFunc   ;==>Uhr_ansagen
    
    Func beenden()
        _WD_DeleteSession($oSession)
        _WD_Shutdown()
        ConsoleWrite('Script wurde Erfolgreich beendet.' & @CRLF)
        Exit
    EndFunc   ;==>beenden
    
    Func SetupEdge()
        _WD_UpdateDriver("msedge", @ScriptDir)
        _WD_Option('Driver', @ScriptDir & '\msedgedriver.exe')
        _WD_Option('Port', 9515)
        _WD_Startup()
        ; Startparameter sammeln
        _WD_CapabilitiesStartup()
        _WD_CapabilitiesAdd('alwaysMatch', 'msedge')
        _WD_CapabilitiesAdd('excludeSwitches', 'enable-automation')
        _WD_CapabilitiesAdd('args', 'guest')
        _WD_CapabilitiesDump(@ScriptLineNumber)
        _WD_CapabilitiesAdd('args', '--headless')
        Local $hWnd = WinWait("[CLASS:ConsoleWindowClass]", "", 10)
        WinSetState($hWnd, "", @SW_HIDE)
        Local $sCapabilities = _WD_CapabilitiesGet()
        Return $sCapabilities
    EndFunc   ;==>SetupEdge
    Alles anzeigen
  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 11. Juli 2023 um 19:50

    Für meinen Einsatzzweck habe ich mich ja für die Variante mit -Headless entschieden. Leider musste ich doch feststellen das, wenn die Global $endtime = '14:30:00' Abfrage stattfindet, sich das Script beendet. Also, wenn ich das Script starte kommt die erste Zeitansage. Wenn dann die erste festgelegte Uhrzeit eintritt findet die nächste Ansage statt. Auch die 30 Minuten später wird angesagt.

    Wenn aber zwischen diesen Ansagen die Global $endtime = '14:30:00' Abfrage stattfindet, beendet sich das Script. Also immer wenn die Global $endtime = '14:30:00' abgefragt wird. Wäre es vielleicht auch sinnvoll die Hotkey Funktionen rauszunehmen?

    Da ich die Funktion nicht brauche kann man so das Script klein halten.


    Moombas

    Deswegen wundert es mich nicht, das wenn ich Variante 1 starte sich das Script nach der ersten festgelegten Ansage beendet.

    Bei Variante 2 bekomme ich gar keine Ansage. Ich setze mal die bearbeiteten Scripte nochmal hier rein. Da habe ich bestimmt auch was falsch verstanden.

    C: Variante 1
    #include <wd_helper.au3>
    #include <wd_capabilities.au3>
    #include <Date.au3>
    
    Global $oSession = ''
    Global $capsi
    Global $hWndBrowser
    Global $endtime = '15:43:00'
    
    
    
    
    
    HotKeySet("!t", "HotKeySayTime") ; Definiere den Hotkey "Alt + T" und verknüpfe ihn mit der Funktion "HotKeySayTime"
    HotKeySet("{ESC}", "HotKeybeenden") ; Definiere den Hotkey "Alt + T" und verknüpfe ihn mit der Funktion "HotKeySayTime"
    
    ;beispiel wie du hide show min max richtig einsetzt.
    HotKeySet("!h", "hide") ; Definiere den Hotkey "Alt + h" und verknüpfe ihn mit der Funktion "hide"
    HotKeySet("!s", "show") ; Definiere den Hotkey "Alt + s" und verknüpfe ihn mit der Funktion "show"
    HotKeySet("!m", "_MAXIMIZE") ; Definiere den Hotkey "Alt + m" und verknüpfe ihn mit der Funktion "_MAXIMIZE"
    HotKeySet("!n", "_MINIMIZE") ; Definiere den Hotkey "Alt + n" und verknüpfe ihn mit der Funktion "_MINIMIZE"
    
    start()
    While 1
        sleep(1000); prüfen 1mal je Sekunde sollte reichen, sonst reduzieren
        If (StringSplit(_NowTime(), ':')[2] = '28') or _ ; prüfen ob 28 oder 58 min. erreicht wurden (einmalig)
           (StringSplit(_NowTime(), ':')[2] = '58') Then ;danach wäre Adlibregister mit alle 30minuten autom. immer auf 28/58 min.
            Uhr_ansagen();führe Uhr_ansagen aus 
            ExitLoop
        EndIf    
    WEnd
    
    AdlibRegister('Uhr_ansagen', 1800000);alle 30min wiederholen
    
    
    
    
    
    Func start()
        $capsi = SetupEdge()
        $oSession = _WD_CreateSession($capsi)
        
        Local $sLocalFilePath = @ScriptDir & '\talk.html'
        Local $sLocalFileURL = "file:///" & StringReplace($sLocalFilePath, "\", "/")
    
        _WD_Navigate($oSession, $sLocalFileURL)
         Local $sBrowserTitle = '' ; Titel des Browserfensters 
        $sBrowserTitle     = _WD_Action($oSession, 'TITLE', Default); $var füllen mit dem Browserfensters (für hide/show/max/min)
        $hWndBrowser = WinGetHandle($sBrowserTitle); Browserfensters gethandle, speichert das $hWndBrowser in einer globalen variable (für hide/show/max/min)
    EndFunc   ;==>start
    
    
    
    ;beispiel wie du hide show min max richtig einsetzt.
    func hide()    
        WinSetState($hWndBrowser, '', @SW_HIDE) 
    EndFunc
    
    func show()
        WinSetState($hWndBrowser, '', @SW_SHOW) 
    EndFunc
    
    func _MAXIMIZE()
        WinSetState($hWndBrowser, '', @SW_MAXIMIZE) 
    EndFunc
    
    func _MINIMIZE()
        WinSetState($hWndBrowser, '', @SW_MINIMIZE) 
    EndFunc
    
    
    
    Func Uhr_ansagen()
        Local $element = _WD_FindElement($oSession, 'xpath', '//*[@id="clockID"]')
            _WD_ElementAction($oSession, $element, 'Click')
    EndFunc   ;==>Uhr_ansagen
    
    Func HotKeySayTime()
        Uhr_ansagen()
    EndFunc   ;==>HotKeySayTime
    
    Func HotKeybeenden()
    _WD_DeleteSession($oSession)
        _WD_Shutdown()
        Exit 
    EndFunc   ;==>HotKeybeenden
    
    Func SetupEdge()
        _WD_UpdateDriver("msedge", @ScriptDir)
    
        _WD_Option('Driver', @ScriptDir & '\msedgedriver.exe')
        _WD_Option('Port', 9515)
        _WD_Startup()
    
        ; Startparameter sammeln
        _WD_CapabilitiesStartup()
        _WD_CapabilitiesAdd('alwaysMatch', 'msedge')
        _WD_CapabilitiesAdd('excludeSwitches', 'enable-automation')
        _WD_CapabilitiesAdd('args', 'guest')
        _WD_CapabilitiesDump(@ScriptLineNumber)
         _WD_CapabilitiesAdd('args', '--headless')
        Local $hWnd = WinWait("[CLASS:ConsoleWindowClass]", "", 10)
        WinSetState($hWnd, "", @SW_HIDE)
        Local $sCapabilities = _WD_CapabilitiesGet()
        Return $sCapabilities
    EndFunc   ;==>SetupEdge
    Alles anzeigen


    C: Variante 2
    #include <wd_helper.au3>
    #include <wd_capabilities.au3>
    #include <Date.au3>
    
    Global $oSession = ''
    Global $capsi
    Global $hWndBrowser
    Global $endtime = '15:43:00'
    
    
    
    
    
    HotKeySet("!t", "HotKeySayTime") ; Definiere den Hotkey "Alt + T" und verknüpfe ihn mit der Funktion "HotKeySayTime"
    HotKeySet("{ESC}", "HotKeybeenden") ; Definiere den Hotkey "Alt + T" und verknüpfe ihn mit der Funktion "HotKeySayTime"
    
    ;beispiel wie du hide show min max richtig einsetzt.
    HotKeySet("!h", "hide") ; Definiere den Hotkey "Alt + h" und verknüpfe ihn mit der Funktion "hide"
    HotKeySet("!s", "show") ; Definiere den Hotkey "Alt + s" und verknüpfe ihn mit der Funktion "show"
    HotKeySet("!m", "_MAXIMIZE") ; Definiere den Hotkey "Alt + m" und verknüpfe ihn mit der Funktion "_MAXIMIZE"
    HotKeySet("!n", "_MINIMIZE") ; Definiere den Hotkey "Alt + n" und verknüpfe ihn mit der Funktion "_MINIMIZE"
    
    
    
    
    
    start()
    
    
    While 1
        Sleep(100)
        IF  _NowTime() = $endtime Then ; ist now = endtime dann:
            Uhr_ansagen();endzeit erreicht führe Uhr_ansagen aus 
            HotKeybeenden();beende den webdriver + beendet das script.
        EndIf
    Wend
    
    start()
    While 1
        sleep(1000); prüfen 1mal je Sekunde sollte reichen, sonst reduzieren
        If (StringSplit(_NowTime(), ':')[2] = '28') or _ ; prüfen ob 28 oder 58 min. erreicht wurden
           (StringSplit(_NowTime(), ':')[2] = '58') Then
            Uhr_ansagen()                                ;führe Uhr_ansagen aus 
        ElseIf _NowTime() = $endtime Then ; ist now = endtime dann:
            Uhr_ansagen()                                ;endzeit erreicht führe Uhr_ansagen aus 
            HotKeybeenden()                              ;beende den webdriver + beendet das script.
        EndIf   
    WEnd
    
    Func start()
        $capsi = SetupEdge()
        $oSession = _WD_CreateSession($capsi)
        
        Local $sLocalFilePath = @ScriptDir & '\talk.html'
        Local $sLocalFileURL = "file:///" & StringReplace($sLocalFilePath, "\", "/")
    
        _WD_Navigate($oSession, $sLocalFileURL)
         Local $sBrowserTitle = '' ; Titel des Browserfensters 
        $sBrowserTitle     = _WD_Action($oSession, 'TITLE', Default); $var füllen mit dem Browserfensters (für hide/show/max/min)
        $hWndBrowser = WinGetHandle($sBrowserTitle); Browserfensters gethandle, speichert das $hWndBrowser in einer globalen variable (für hide/show/max/min)
    EndFunc   ;==>start
    
    
    
    ;beispiel wie du hide show min max richtig einsetzt.
    func hide()    
        WinSetState($hWndBrowser, '', @SW_HIDE) 
    EndFunc
    
    func show()
        WinSetState($hWndBrowser, '', @SW_SHOW) 
    EndFunc
    
    func _MAXIMIZE()
        WinSetState($hWndBrowser, '', @SW_MAXIMIZE) 
    EndFunc
    
    func _MINIMIZE()
        WinSetState($hWndBrowser, '', @SW_MINIMIZE) 
    EndFunc
    
    
    
    Func Uhr_ansagen()
        Local $element = _WD_FindElement($oSession, 'xpath', '//*[@id="clockID"]')
            _WD_ElementAction($oSession, $element, 'Click')
    EndFunc   ;==>Uhr_ansagen
    
    Func HotKeySayTime()
        Uhr_ansagen()
    EndFunc   ;==>HotKeySayTime
    
    Func HotKeybeenden()
    _WD_DeleteSession($oSession)
        _WD_Shutdown()
        Exit 
    EndFunc   ;==>HotKeybeenden
    
    Func SetupEdge()
        _WD_UpdateDriver("msedge", @ScriptDir)
    
        _WD_Option('Driver', @ScriptDir & '\msedgedriver.exe')
        _WD_Option('Port', 9515)
        _WD_Startup()
    
        ; Startparameter sammeln
        _WD_CapabilitiesStartup()
        _WD_CapabilitiesAdd('alwaysMatch', 'msedge')
        _WD_CapabilitiesAdd('excludeSwitches', 'enable-automation')
        _WD_CapabilitiesAdd('args', 'guest')
        _WD_CapabilitiesDump(@ScriptLineNumber)
         _WD_CapabilitiesAdd('args', '--headless')
        Local $hWnd = WinWait("[CLASS:ConsoleWindowClass]", "", 10)
        WinSetState($hWnd, "", @SW_HIDE)
        Local $sCapabilities = _WD_CapabilitiesGet()
        Return $sCapabilities
    EndFunc   ;==>SetupEdge
    Alles anzeigen
  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 10. Juli 2023 um 22:25

    Jetzt nachdem ich die WinHttp.au3 getauscht habe läuft das Script einwandfrei. :klatschen: Nochmals vielen Dank. Selber hätte ich das so nie hinbekommen.

    Ich trau mich gar nicht zu fragen. :whistling: Ist der Aufwand sehr groß das Script noch so anzupassen, dass egal wann ich das Script starte, immer die Uhrzeitangabe ..:28 Uhr bzw. ..:58(alle 30Minuten) stattfindet? Jetzt ist es ja so das nach starten des Sriptes dann alle 30 Minuten die Ansage stattfindet. Ich weiß ich hab deine Geduld arg strapaziert. Ansonsten achte ich dann beim starten des Scriptes selber drauf. Ich bin ja froh überhaupt so weit mit deiner Hilfe gekommen zu sein.


    Viele Grüße

    Raleigh

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 10. Juli 2023 um 19:21
    Zitat von von Moombas


    Prüfe bitte ob die angegebene JSON.au3 ebenfalls in dem entsprechenden Ordner liegt. Diese wird von der wd_core.au3 benötigt., es könnten danach noch weitere folgen.

    Die wd_core.au3, WinHttpConstants.au3 und die WinHttp.au3 fehlten bei mir noch. Danke für die Info.


    @MojoeB

    Ich danke Dir nochmals für Deine große Mühe. Irgendetwas stimmt bei mir immer noch nicht. Ich bekomme eine neue Fehlermeldung. Über Suchmaschine bin ich leider nicht schlauer geworden.


    Viele Grüße

    Raleigh

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 10. Juli 2023 um 14:28
    Zitat von MojoeB

    also nach start alle 30 min bis 15:43? oder wie?

    Wenn ich den PC einschalte, egal zu welcher Uhrzeit, möchte ich alle 30 Minuten die Zeit angesagt bekommen. Aber festgelegt auf ..:28 Uhr, ..:58 Uhr, .:28 Uhr ...........

    Zusätzlich als eigene Ansage noch die Uhrzeit 15:43 Uhr. Das die Ansage im Hintergrund stattfindet wäre auch schön, weil das beim konzentrierten Schauen auf den Monitor nur stören würde.

    Ich habe die 6 Dateien(usertesting.au3, wd_capabilities.au3, wd_cdp.au3, wd_core.au3, wd_demo.au3, wd_helper.au3) aus der au3WebDriver-1.0.3 in den Include Ordner(C:\Program Files (x86)\AutoIt3\Include) kopiert. Wenn ich dann beide Scripte teste kommt die Fehlermeldung:


    Wie du oben schon geschrieben hast, liegen die Scripte zusammen mit der talk.html und die dazu gehörenden Dateien in einem Ordner.


    Viele Grüße

    Raleigh

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 9. Juli 2023 um 23:14

    Vielen Dank, euch beiden. Ich schau mir beides mal genauer an.

    Mein erster Ansatz als Unwissender ist dieser:

    C
    #include <Constants.au3>
    #include <WinAPI.au3>
    
    Global $sURL = "file:///C:/Ansage/clock/talk.html" ; Die URL der Webseite, die geöffnet werden soll
    Global $iWaitTime = 6000 ; Wartezeit in Millisekunden (hier: 6 Sekunden)
    
    Opt("WinTitleMatchMode", 2) ; Fenstertitel werden nach Teilen abgeglichen
    
    ; Öffne den Edge-Browser und lade die angegebene URL
    Global $iPID = ShellExecute("C:\Ansage\msedge.exe.lnk", $sURL, "", "", @SW_MINIMIZE)
    
    If @error Then
        MsgBox($MB_ICONERROR, "Fehler", "Der Browser konnte nicht gestartet werden.")
        Exit
    EndIf
    
    ; Warte, bis die Seite geladen ist
    Sleep($iWaitTime)
    
    ; Beende den Browser
    _TerminateEdgeProcess()
    
    Func _TerminateEdgeProcess()
        Local $sProcessName = "msedge.exe"
        Local $aProcesses = ProcessList($sProcessName)
    
        For $i = 1 To $aProcesses[0][0]
            If $aProcesses[$i][0] <> "" Then
                Local $iProcessPID = $aProcesses[$i][1]
                ProcessClose($iProcessPID)
                ExitLoop
            EndIf
        Next
    EndFunc
    
    
    ;Global $iPID = ShellExecute("C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe", $sURL, "", "", @SW_MINIMIZE)
    
    ;Global $iPID = ShellExecute("C:\Uhr\msedge.exe.lnk", $sURL, "", "", @SW_SHOWNORMAL
    Alles anzeigen


    Da die "@SW_MINIMIZE" Funktion nicht zuverlässig funktionierte, habe den Edge Browser über eine Verknüpfung, die ich dann minimiert eingestellt hatte, im Script eingetragen. Dann die Aufgabenplanung für die Startzeiten eingerichtet.

    Die bestimmten Ansagezeiten lauten beispielsweise 12:28, 12:58, dann weiter jede 30 Minuten. Zusätzlich noch die Uhrzeit 15:43 Uhr.


    Viele Grüße

    Raleigh

  • grundsätzliche Fragen zu Browser

    • Raleigh
    • 7. Juli 2023 um 23:52

    Hallo zusammen,

    da ich mich noch nie mit AutoIT beschäftigt habe, wollte ich mal fragen, welche Herangehensweise ihr in meinem Fall wählen würdet.

    Ich möchte zu bestimmten Zeiten die aktuelle Uhrzeit angesagt bekommen. Mit den internen Sprachmodulen von Windows 10 erhalte ich keine zufriedenstellende Ergebnisse. Sie klingen mir einfach zu roboterhaft. Also habe ich nach der Suche im Internet hier eine html

    Datei gefunden, die mir nach Anklicken des Links die aktuelle Uhrzeit mitteilt. Wenn ich im Browser das automatische Abspielen von Audiodateien aktiviere, kommt die Ansage schon beim Öffnen der html-Seite.

    Ich habe versucht, über Batch, Powersell und VBS ein Skript zum Starten des Browsers zu erstellen. Dann über den Taskplaner die definierten Zeiten um das Script zu starten. Das geht 3, 4 mal gut, aber dann wird der Browser nicht sauber beendet(....unerwartet beendet).

    Wenn ich jetzt mit AutoIT ein ganz einfaches Script teste,

    Code
    ShellExecute("C:\Uhrzeit\Waterfox\Waterfox.exe", "file:///C:/Uhr/talk.html")
    Sleep (6000)
    ProcessClose ("waterfox.exe")

    bekomme ich das gleiche Ergebnis. Es funktioniert eine Zeit lang und dann kommt eine Fehlermeldung. Als Browser habe ich Waterfox Portable gewählt, um von meinem Standardbrowser (Firefox) getrennt zu sein. Da ich dort viele Addons und viele Tabs parallel geöffnet habe. Oder gar nicht benutze. Ich habe auch schon versucht den Browser über IDs zu beenden. Die scheinen sich nach jeden Neustart ständig zu ändern. Ich bin für jede Hilfe dankbar.


    Viele Grüße

    Raleigh

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™