03/Juli/2010
UPDATE für Opera 10.6
Funktioniert mit EINGESCHALTETEM Javascript!
Achtung! Tasten umbelegt. Die "Absenden"-Taste beim Posten wird nun einmalig "eingelernt". Mit der Maustaste in der unteren Hälfte auf den "Absenden"-Button drücken und GEDRÜCKT LASSEN! Dann Strg+y drücken (ein Screenshot des Buttons wird erstellt). Eine MsgBox erscheint mit der Erfolgsmeldung.
Wird jetzt bei aktivem Editorfenster die Maus gedrückt, wird rund um den Mauscursor der Bereich nach dem "gelernten" "Absenden"-Button gescreent. Falls also auf den "Absenden"-Button geklickt wurde, erkennt das Script das und werkelt selbstständig weiter.
Das funktioniert natürlich nur wenn nicht zwischendurch z.B. der Style geändert wird. Ansonsten einfach den Button neu einlernen.
Spoiler anzeigen
#include <GDIPlus.au3>
#include <Misc.au3>
#include <ScreenCapture.au3>
#include <WinAPI.au3>
#include <GDIPlusConstants.au3>
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=icon0002.ico
#AutoIt3Wrapper_outfile=JavaScriptumschalter.exe
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
;HotKeySet("^y", "_send_message") ;CTRL+y startet das Script, der Cursor sollte im Editor-Feld stehen!
HotKeySet("^w", "_toggle_JS") ;CTRL+q schaltet JavaScript ein bzw aus
HotKeySet("^y", "_buttontraining") ;TRAININGSMODUS! Mauscurser zentral auf den "Absenden"-Button setzen, linke Maustaste drücken und GEDRÜCKT HALTEN!
;dann erst Strg+y drücken.....Fenster erscheint, wenn erfolgreich...
_GDIPlus_Startup()
$dll = DllOpen("user32.dll")
Local $flag = 0
local $keydelay=200 ;zeit zw den Tastendrücken, auf schnellen Rechnern kleiner
While Sleep(50) ;Endlosschleife
$opt_wintitlematchmode = Opt("WinTitleMatchMode", 2) ;modi speichern
$opt_sendkeydelay = Opt("SendKeyDelay", $keydelay) ;ggf anpassen, zeit zwischen den Tastendrücken
If WinActive("Beitrag bearbeiten") Then
If $flag = 0 Then ;nur, wenn das fenster noch nicht bearbeitet wurde
$flag = 1 ;fenster wird bearbeitet
BlockInput(1)
_toggle_JS() ;Javascript ausschalten
Sleep(4000) ;sleeps ggf kürze machen
Send("{TAB 6}") ;ins Editorfeld wechseln
Send("^a") ;allen Text markieren
Send("^c") ;Text in Zwischenablage kopieren
_toggle_JS() ;Javascript ausschalten
Sleep(4000)
;msgbox (0,"eingefügen",0,5)
Send("{TAB 12}") ;ins Editorfeld wechseln
Send("^v") ;text einfügen
BlockInput(0)
;msgbox (0,"eingefügt",0)
EndIf
EndIf
If WinActive("Neue Antwort erstellen") Or _ ;falls Operafenster mit "Neue Antwort erstellen" aktiv, oder
WinActive("Neue Nachricht erstellen") Or _ ;falls Operafenster mit "Neue Nachricht erstellen" aktiv, oder
(WinActive("Beitrag bearbeiten") And $flag = 1) Or _ ;falls Operafenster mit "Beitrag bearbeiten" aktiv, oder
WinActive("Neues Thema erstellen") Then ;falls Operafenster mit "Neues Thema erstellen" aktiv, dann
If _IsPressed("01", $dll) Then ;falls linke Maustaste gedrückt, nachschauen, ob "Absenden" gedrückt wurde
MouseDown("left") ;mausbutton gedrückt halten, sicher ist sicher
$a = MouseGetPos()
$capture = _ScreenCapture_Capture("", $a[0] - 50, $a[1] - 20, $a[0] + 50, $a[1] + 20, False) ;screen rund um den Mausklick erstellen
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $capture = ' & $capture & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
If _isAntwortbuttonPressed($capture) Then
MouseDown("left") ;mausbutton gedrückt halten
MouseMove($a[0], $a[1] + 20, 0) ;maus vom Button entfernen, am besten, bevor er losgelassen wurde^^
MouseUp("left") ;mausbutton loslassen
Send("{TAB 5}") ;ins Editorfeld wechseln
If WinActive("Neue Nachricht erstellen") Then Send("{TAB}") ;eins mehr....
If WinActive("Beitrag bearbeiten") Then Send("{TAB 2}") ;zwei mehr
_send_message() ;falls "Antwort" angeklickt wurde,
$flag = 0 ;fürs bearbeitenfenster
EndIf
MouseUp("left") ;mausbutton loslassen
;msgbox(0,"ende",0)
EndIf
EndIf
Opt("WinTitleMatchMode", $opt_wintitlematchmode) ;modi wiederherstellen
Opt("SendKeyDelay", $opt_sendkeydelay)
WEnd
Func _send_message()
$opt_wintitlematchmode = Opt("WinTitleMatchMode", 2) ;modi speichern
$opt_sendkeydelay = Opt("SendKeyDelay", $keydelay) ;ggf anpassen, zeit zwischen den Tastendrücken
If WinActive("Neue Antwort erstellen") Then _Antwort() ;falls Operafenster mit "Neue Antwort erstellen" nicht aktiv, oder
If WinActive("Neue Nachricht erstellen") Then _Nachricht() ;falls Operafenster mit "Neue Nachricht erstellen" nicht aktiv, return
If WinActive("Neues Thema erstellen") Then _Thema() ;falls Operafenster mit "Neues Thema erstellen" nicht aktiv, return ) Then return
If WinActive("Beitrag bearbeiten") Then _Beitrag()
Opt("WinTitleMatchMode", $opt_wintitlematchmode) ;modi wiederherstellen
Opt("SendKeyDelay", $opt_sendkeydelay)
EndFunc ;==>_send_message
Func _saveData() ;Daten in die Zwischenablage
Send("^a") ;allen Text markieren
Send("^c") ;Text in Zwischenablage kopieren
_toggle_JS() ;Javascript umschalten
Sleep(2000) ;auf Browser warten, JS ausgeschaltet
EndFunc ;==>_saveData
Func _Beitrag()
_savedata() ;Daten in die Zwischenablage
Send("{TAB 6}") ;Browserfenster ohne JS ist nun aktiv
Send("^a") ;allen Text markieren
Send("^v") ;Text aus Zwischenablage einfügen
Send("{TAB}") ;zum "Absenden" Button
Send("{ENTER}") ;Text absenden
sleep(2000) ;warten auf browser
_toggle_JS() ;JS aktivieren
EndFunc ;==>_Beitrag
[/autoit] [autoit][/autoit] [autoit]Func _Antwort()
_savedata() ;Daten in die Zwischenablage
Send("{TAB}") ;Browserfenster ohne JS ist nun aktiv
Send("{TAB}") ;ins Editorfels wechseln
Send("{TAB}") ;ins Editorfels wechseln
Send("{TAB}") ;ins Editorfels wechseln
Send("^v") ;Text aus Zwischenablage einfügen
Send("{TAB}") ;zum "Absenden" Button
Send("{ENTER}") ;Text absenden
_toggle_JS() ;JS aktivieren
EndFunc ;==>_Antwort
Func _Nachricht()
_savedata() ;Daten in die Zwischenablage
Send("{TAB 5}") ;Browserfenster ohne JS ist nun aktiv
Do ;solange Betreff abfragen...
$inp = InputBox("Betreff eingeben", "", "")
Until $inp <> "" ;bis ein gültiger Wert erscheint
Send(" ") ;leerzeichen
Send($inp) ;Text ins Betreff-Feld
Send("{TAB}") ;ins Editorfels wechseln
Send("^v") ;Text aus Zwischenablage einfügen
Send("{TAB}") ;zum "Absenden" Button
Send("{ENTER}") ;Text absenden
_toggle_JS()
EndFunc ;==>_Nachricht
Func _Thema() ;Neues Thema erstellen
_savedata() ;Daten in die Zwischenablage
Send("{TAB 3}") ;Browserfenster ohne JS ist nun aktiv
Do ;solange Betreff abfrahgen...
$inp = InputBox("Überschrift eingeben", "", "")
Until $inp <> "" ;bis ein gültiger Wert erscheint
Send(" ") ;leerzeichen
Send($inp) ;Text ins Betreff-Feld
Send("{TAB}") ;ins Editorfels wechseln
Send("^v") ;Text aus Zwischenablage einfügen
Send("{TAB}") ;zum "Absenden" Button
Send("{ENTER}") ;Text absenden
_toggle_JS()
EndFunc ;==>_Thema
Func _toggle_JS() ;schaltet Javascript um
Opt("SendKeyDelay", $keydelay) ;ggf anpassen, zeit zwischen den Tastendrücken
Send("{F12}") ;Schnelleinstellungen öffnen
Send("{UP}") ;Seitenspezifische Einstellungen markieren und ...
Send("{ENTER}") ;...auswählen
WinWaitActive("Site-Einstellungen", "") ;warten bis Fenster aktiv
Send("{CTRLDOWN}{TAB 4}") ;bis zum Tab...
Send("{CTRLUP}") ;...Scripte
Send("{SPACE}") ;Javascript toggeln
Send("{ENTER}") ;und ausführen
Send("{F5}") ;Browserrefresh
EndFunc ;==>_toggle_JS
Func _isantwortbuttonPressed($pic)
Local $a = _findBMP_slow($pic, "Opera_Antwortbutton.bmp") ;findet die Buttonpixel im screenshot
If IsArray($a) Then Return True
Return False
EndFunc ;==>_isantwortbuttonPressed
Func _FindBMP_slow($BMP1, $BMP2)
Dim $BMP1Data = "", $BMP1Width = 0, $BMP1Height = 0, $BMP1LineWidth = 0, $pbitmap1 = 0, $bitmapinfo1
Dim $BMP2Data = "", $BMP2Width = 0, $BMP2Height = 0, $BMP2LineWidth = 0, $pbitmap2 = 0, $bitmapinfo2
Dim $koord[2]
Local $searchFor, $line, $iPos = 1, $imgBytes = 3, $prozent, $ptr1, $ptr2
Local $VirtualDesktopWidth = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 78) ;sm_virtualwidth
Local $DesktopWidth = $VirtualDesktopWidth[0]
Local $VirtualDesktopHeight = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 79) ;sm_virtualheight
Local $DesktopHeight = $VirtualDesktopHeight[0]
; Load the bitmap to search in
$ptr1 = _GetImage($BMP1, $BMP1Data, $BMP1Width, $BMP1Height, $BMP1LineWidth, $pbitmap1, $bitmapinfo1)
$BMP1Data = BinaryToString($BMP1Data)
$ptr2 = _GetImage($BMP2, $BMP2Data, $BMP2Width, $BMP2Height, $BMP2LineWidth, $pbitmap2, $bitmapinfo2)
$BMP2Data = BinaryToString($BMP2Data)
If $BMP2Height = 0 Or $BMP1Height = 0 Then
SetError(1, 0, 0)
Return False
EndIf
$fillbytes = Mod($BMP1LineWidth, $BMP1Width)
; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $fillbytes = ' & $fillbytes & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Local $searchFor1 = StringMid($BMP2Data, 1, ($BMP2Width * $imgBytes)) ;1. pixel-zeile in der bitmap2 (string)
$iPos = StringInStr($BMP1Data, $searchFor1, 1, 1) ;1. fundstelle des strings in Bitmap2
;zeilenweises vergleichen der beiden bitmaps, ist bitmap2 in bitmap1 enthalten?
While 1
Local $flag = 0
If $iPos <> 0 Then
Local $e = Mod(($iPos - 1), $BMP1LineWidth) ;position innerhalb des Strings
If $e / $imgBytes = Int($e / $imgBytes) Then ;prüfen ob ipos am anfang eines farbbits steht, wenn nicht, nächste zeile suchen
For $S = 2 To $BMP2Height ;zeilenweise das suchbild mit dem screen vergleichen
;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $S = ' & $S & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$searchFor = StringMid($BMP2Data, 1 + (($S - 1) * $BMP2LineWidth), $BMP2Width * $imgBytes) ; s-te zeile aus dem ausschnitt
$line = StringMid($BMP1Data, $iPos + (($S - 1) * $BMP1LineWidth), $BMP2Width * $imgBytes) ;zeile "unter" der gefundenen zeile im screen
If $searchFor <> $line Then ;zeilen nicht gleich,
$flag = 1
ExitLoop ;exit for/next
EndIf
Next
If $flag = 0 Then ;alle zeilen haben übereingestimmt, BMP2 ist in BMP1 enthalten! $koord[0] = Mod(($iPos - 1), $BMP1LineWidth) / $imgBytes ;koordinaten auf dem screen
$koord[0] = Mod(($iPos - 1), $BMP1LineWidth) / $imgBytes ;koordinaten auf dem screen
$koord[1] = Int(($iPos - 1) / $BMP1LineWidth)
$BMP1Data = 0 ;strukturen löschen, Speicher freigeben
$BMP2Data = 0
$ptr1 = 0
$ptr2 = 0
_GDIPlus_BitmapUnlockBits($pbitmap1, $bitmapinfo1)
_GDIPlus_BitmapUnlockBits($pbitmap2, $bitmapinfo2)
_GDIPlus_ImageDispose($pbitmap1) ;Bitmaps löschen
_GDIPlus_ImageDispose($pbitmap2)
ToolTip("")
Return $koord
EndIf
$iPos = StringInStr($BMP1Data, $searchFor1, 1, 1, $iPos + $imgBytes)
If $iPos = 0 Then ExitLoop ;nicht gefunden
Else ;ipos ist innerhalb eines farbbits und nicht am anfang
$iPos = StringInStr($BMP1Data, $searchFor1, 1, 1, $iPos + 1)
If $iPos = 0 Then ExitLoop
EndIf
Else
ExitLoop
EndIf
WEnd
$BMP1Data = 0 ;strukturen löschen, Speicher freigeben
$BMP2Data = 0
$ptr1 = 0
$ptr2 = 0
_GDIPlus_BitmapUnlockBits($pbitmap1, $bitmapinfo1)
_GDIPlus_BitmapUnlockBits($pbitmap2, $bitmapinfo2)
_GDIPlus_ImageDispose($pbitmap1) ;Bitmaps löschen
_GDIPlus_ImageDispose($pbitmap2)
ToolTip("")
SetError(1, 0, 0)
Return 0 ;
EndFunc ;==>_FindBMP_slow
;holt aus einer Datei oder einem Handle die Bitmapdaten
Func _GetImage($bmpfile, ByRef $BMPDataStart, ByRef $Width, ByRef $Height, ByRef $Stride, ByRef $pBitmap, ByRef $BitmapData)
Local $Scan0, $hbScreen, $handle, $imgBytes = 3, $pixeldata, $pixeldata2, $xy
Local $VirtualDesktopWidth = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 78) ;sm_virtualwidth
Local $VirtualDesktopHeight = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 79) ;sm_virtualheight
; Load the bitmap to search in
If StringUpper($bmpfile) = "FULLSCREEN" Then
$hbScreen = _ScreenCapture_Capture("", 0, 0, $VirtualDesktopWidth[0], $VirtualDesktopHeight[0], False)
If @error Then MsgBox(0, "", "Fehler Screencapture FULLSCREEN")
$pBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hbScreen); returns memory bitmap
If @error Then MsgBox(0, "", "Fehler Bitmapcreate_FromHBITMAP Screen")
Else
;try to get a handle
$handle = WinGetHandle($bmpfile)
If @error Then
;Assume its an unknown handle so correct filename should be given
$hbScreen = _GDIPlus_BitmapCreateFromFile($bmpfile)
$pBitmap = $hbScreen
If @error Then MsgBox(0, "", "Fehler BitmapCreateFromFile")
Else ;aktuelles fenster
$xy = WinGetPos($bmpfile)
$hbScreen = _ScreenCapture_CaptureWnd("", $handle, 0, 0, $xy[2], $xy[3], False)
If @error Then MsgBox(0, "", "Fehler Screencapturewnd")
$pBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hbScreen); returns memory bitmap
If @error Then MsgBox(0, "", "Fehler BitmapCreateFromHBITMAP File")
EndIf
EndIf
If $pBitmap = 0x00000000 Then ;könnte ein screen sein
$pBitmap = _GDIPlus_BitmapCreateFromHBITMAP($bmpfile); returns memory bitmap
If @error Then MsgBox(0, "", "Fehler BitmapCreateFromHBITMAP File")
EndIf
;_GDIPlus_BitmapLockBits gibt $tagGDIPBITMAPDATA-Struktur zurück
$BitmapData = _GDIPlus_BitmapLockBits($pBitmap, 0, 0, _GDIPlus_ImageGetWidth($pBitmap), _GDIPlus_ImageGetHeight($pBitmap), $GDIP_ILMREAD, $GDIP_PXF24RGB)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $pBitmaplock = ' & $pBitmap & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
If @error Then MsgBox(0, "", "Error locking region " & @error)
$Stride = DllStructGetData($BitmapData, "Stride");Stride - Offset, in bytes, between consecutive scan lines of the bitmap. If the stride is positive, the bitmap is top-down. If the stride is negative, the bitmap is bottom-up.
$Width = DllStructGetData($BitmapData, "Width");Image width - Number of pixels in one scan line of the bitmap.
$Height = DllStructGetData($BitmapData, "Height");Image height - Number of scan lines in the bitmap.
;$pixelFormat = DllStructGetData($BitmapData, "PixelFormat");Pixel format - Integer that specifies the pixel format of the bitmap
$Scan0 = DllStructGetData($BitmapData, "Scan0");Scan0 - Pointer to the first (index 0) scan line of the bitmap.
$pixeldata = DllStructCreate("byte[" & (Abs($Stride) * ($Height)) & "]", $Scan0)
$BMPDataStart = DllStructGetData($pixeldata, 1) ;string im Struct-format, d.h. Byte+nulByte, in dem die pixeldaten im BGR-Format stehen
; _GDIPlus_BitmapUnlockBits($pbitmap, $BitmapData)
;_GDIPlus_ImageDispose($pBitmap) zerstört die pixeldatastruct, daher erst später!!!
_WinAPI_DeleteObject($hbScreen)
Return $pixeldata
EndFunc ;==>_GetImage
Func _Buttontraining()
Local $a = MouseGetPos()
_ScreenCapture_Capture("Opera_Antwortbutton.bmp", $a[0] - 15, $a[1] - 3, $a[0] + 15, $a[1] + 3, False) ;screen rund um den Mausklick erstellen
If @error Then
MsgBox(0, "Button einlernen", "Nicht erfolgreich, bitte wiederholen!")
Else
MsgBox(0, "Button einlernen", "Erfolgreich, bitte testen")
EndIf
EndFunc ;==>_Buttontraining
[/autoit]Kompilieren und ab in den Autostart oder zusammen mit dem Browser starten...
Hi,
ab Opera 10.5 gibts Probleme mit der aktuellen Forensoftware beim Erstellen von Beiträgen.
Das kann man mittels Ein- und Ausschalten von Javascript in den Griff bekommen, allerdings ist das nervig....
Beim folgenden Script kann JavaScript aktiviert bleiben.
Anleitung:
Mit aktiviertem Javascript bei folgenden Aktionen
- "Neue Antwort erstellen" bei Antworten bestehender Threads
- "Neues Thema erstellen" zum erstellen neuer Threads
- "Neue Nachricht erstellen" für PN´s
einfach ganz normal den Beitrag editieren , aber anstatt auf den "Absenden" Button zu klicken, nun STRG+y drücken, der Cursor sollte im Editorfeld sein!
Das Script kopiert den Text in die Zwischenablage, deaktiviert JS, refresht den Browser, kopiert den Text aus der Zwischenablage ins Editordfenster und schickt den Text ab. Danach aktiviert es wieder JS.
Das klappt bei "Beitrag bearbeiten" nicht so! Wenn der Button gedrückt wurde, erscheint das leere Fenster, aber keine Panik, ein Druck auf STRG+w deaktiviert JS und der Beitrag erscheint, kann editiert und per Mausklick abgeschickt werden. Danach mit STRG+w wieder den JS aktivieren.
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=icon0002.ico
#AutoIt3Wrapper_outfile=JavaScriptumschalter.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
HotKeySet("^y", "_send_message") ;CTRL+y startet das Script, der Cursor sollte im Editor-Feld stehen!
HotKeySet("^w", "_toggle_JS") ;CTRL+q schaltet JavaScript ein bzw aus
While Sleep(50) ;Endlosschleife
WEnd
Func _send_message()
$opt_wintitlematchmode = Opt("WinTitleMatchMode", 2) ;modi speichern
$opt_sendkeydelay = Opt("SendKeyDelay", 100) ;ggf anpassen, zeit zwischen den Tastendrücken
If WinActive("Neue Antwort erstellen") then _Antwort() ;falls Operafenster mit "Neue Antwort erstellen" nicht aktiv, oder
If WinActive("Neue Nachricht erstellen") then _Nachricht() ;falls Operafenster mit "Neue Nachricht erstellen" nicht aktiv, return
If WinActive("Neues Thema erstellen") then _Thema() ;falls Operafenster mit "Neues Thema erstellen" nicht aktiv, return ) Then return
Opt("WinTitleMatchMode", $opt_wintitlematchmode) ;modi wiederherstellen
Opt("SendKeyDelay", $opt_sendkeydelay)
EndFunc
func _saveData() ;Daten in die Zwischenablage
Send("^a") ;allen Text markieren
Send("^c") ;Text in Zwischenablage kopieren
_toggle_JS() ;Javascript umschalten
Sleep(2000) ;auf Browser warten, JS ausgeschaltet
endfunc
func _Antwort()
_savedata() ;Daten in die Zwischenablage
Send("{TAB}") ;Browserfenster ohne JS ist nun aktiv
Send("{TAB}") ;ins Editorfels wechseln
Send("^v") ;Text aus Zwischenablage einfügen
Send("{TAB 23}") ;zum "Absenden" Button
Send("{ENTER}") ;Text absenden
_toggle_JS() ;JS aktivieren
endfunc
func _Nachricht()
_savedata() ;Daten in die Zwischenablage
Send("{TAB 6}") ;Browserfenster ohne JS ist nun aktiv
do ;solange Betreff abfragen...
$inp=inputbox("Betreff eingeben","","")
until $inp<>"" ;bis ein gültiger Wert erscheint
send(" ") ;leerzeichen
send($inp) ;Text ins Betreff-Feld
Send("{TAB}") ;ins Editorfels wechseln
Send("^v") ;Text aus Zwischenablage einfügen
Send("{TAB 9}") ;zum "Absenden" Button
Send("{ENTER}") ;Text absenden
_toggle_JS()
endfunc
func _Thema() ;Neues Thema erstellen
_savedata() ;Daten in die Zwischenablage
Send("{TAB}") ;Browserfenster ohne JS ist nun aktiv
do ;solange Betreff abfrahgen...
$inp=inputbox("Überschrift eingeben","","")
until $inp<>"" ;bis ein gültiger Wert erscheint
send(" ") ;leerzeichen
send($inp) ;Text ins Betreff-Feld
Send("{TAB}") ;ins Editorfels wechseln
Send("^v") ;Text aus Zwischenablage einfügen
Send("{TAB 23}") ;zum "Absenden" Button
Send("{ENTER}") ;Text absenden
_toggle_JS()
endfunc
func _toggle_JS() ;schaltet Javascript um
Opt("SendKeyDelay", 100) ;ggf anpassen, zeit zwischen den Tastendrücken
Send("{F12}") ;Schnelleinstellungen öffnen
Send("{UP}") ;Seitenspezifische Einstellungen markieren und ...
Send("{ENTER}") ;...auswählen
WinWaitActive("Site-Einstellungen", "") ;warten bis Fenster aktiv
Send("{CTRLDOWN}{TAB 4}") ;bis zum Tab...
Send("{CTRLUP}") ;...Scripte
Send("{SPACE}") ;Javascript toggeln
Send("{ENTER}") ;und ausführen
Send("{F5}") ;Browserrefresh
endfunc
ob das sendkeydelay so hoch sein muss, keine Ahnung, probiert es aus^^ Auch die 2 Sekunden Wartezeit, um den Browser nach F5 zu refreshen sind ziemlich großzügig bemessen....