Zitat von MoombasRaleigh : 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:
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
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