Workaround für OperaUser [Update 10.6]

  • 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
    [autoit]

    #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

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

    $opt_wintitlematchmode = Opt("WinTitleMatchMode", 2) ;modi speichern
    $opt_sendkeydelay = Opt("SendKeyDelay", $keydelay) ;ggf anpassen, zeit zwischen den Tastendrücken

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

    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

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

    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

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

    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

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

    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

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

    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

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

    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

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

    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

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

    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

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

    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

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

    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

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

    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]

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

    ; 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

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

    ;holt aus einer Datei oder einem Handle die Bitmapdaten
    Func _GetImage($bmpfile, ByRef $BMPDataStart, ByRef $Width, ByRef $Height, ByRef $Stride, ByRef $pBitmap, ByRef $BitmapData)

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

    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

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

    ; 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

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

    ;_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

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

    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

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

    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
    [autoit]

    #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

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

    While Sleep(50) ;Endlosschleife
    WEnd

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

    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

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

    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

    [/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("^v") ;Text aus Zwischenablage einfügen
    Send("{TAB 23}") ;zum "Absenden" Button
    Send("{ENTER}") ;Text absenden
    _toggle_JS() ;JS aktivieren
    endfunc

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

    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

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

    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

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

    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

    [/autoit]

    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....

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    18 Mal editiert, zuletzt von Andy (8. Juli 2010 um 17:48)

  • Bitte kurzes Feedback, wenn etwas nicht funktioniert bzw fehlt. Die Antwort auf meine Mail bzgl. des Erscheinens einer für Opera-User"bugfreien" Forensoftware-Version war sinngemäß "when its done"...

  • Hi zusammen, habe bemerkt, daß der Hotkey für die Umschaltung von Javascript sich mit dem ctrl+q von Scite "beisst". Ist nun im Startpost geändert in ctrl+w

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (3. Juli 2010 um 12:30)

  • Hi, habe für Opera 10.6 in den Workaround neue Features eingebaut, s. erstes Post.