Hallo liebe Community,
nach langer Zeit möchte ich euch auch mal wieder etwas präsentieren:
AutoIt from Browser
Ich weiß, ist ein blöder Name. Damit ist es aber möglich, ein AutoIt-Skript, das im Forum in den AutoIt-Tags
...
[/autoit] gepostet wurde, direkt aus dem Browser heraus auszuführen - durch einen Klick auf dieses Symbol, das sich links über jeder "Codebox" befindet:
[Blockierte Grafik: http://stayawayknight.square7.ch/5936223522012.jpg].
Realisiert hab ich das über ein Greasemonkey-Skript.
Dafür sind leider ein paar Dinge notwendig, die zunächst eingerichtet werden müssen:
1. Greasemonkey installieren
Zunächst muss das Addon "Greasemonkey" installiert werden, falls noch nicht getan. Dieses erlaubt, Javascript über die DOM-Schnittstelle einzuschleusen.
Das gibt es meines Wissens nach leider nur für Firefox und Google Chrome.
Für Firefox gibt es das hier: Greasemonkey für Firefox von mozilla.org
Nach der Installation sollte rechts oben im Browser ein kleiner Affe grinsen (sofern GM aktiviert).
Dieses Javascript weißt den Symbolen einen EventListener zu, der auf Klicks reagiert.
2. Skript installieren
Nun muss das Javascript installiert werden. Nach der Installation von Greasemonkey kann durch ein Klick auf den Pfeil neben dem Affen ein Skript hinzugefügt werden.
Möglicherweise reicht aber auch schon ein Klick auf folgenden Link:
Installation Skript
Nach der Installation sollte eine Meldung kommen, dass das Skript erfolgreich installiert wurde.
Wenn ihr nun autoit.de aufruft und die Liste neben dem Affen aufklickt, sollte es hinzugefügt und "angehakt" sein .
3. Dateianhang herunterladen
Im Anhang befindet sich ein Zip-File, in dem die weiteren Utensilien enthalten sind. Außerdem findet sich dort nochmals das Javascript.
Das File muss natürlich noch entpackt werden. Außerdem ist es sinnvoll, den Ordner an einen festen Platz zu verschieben (C:\Programme z.B.)
Die Dateinamen sollten dabei möglichst nicht geändert werden. In die Ini-Datei (config.ini) muss der Pfad zur "au3fb.exe" angegeben werden.
4. Registryeinträge hinzufügen lassen
Nachdem das alles richtig verschoben und die Ini-Datei entsprechend angepasst wurde, kann nun das "registry.au3" - Skript ausgeführt werden.
Die Einträge werden benötigt, um die AutoIt-Datei über den Browser aufrufen zu können. Sie können durch das beigelegte Skript "registry_delete.au3" wieder
entfernt werden.
5. Fertig & Testen
Wenn das alles geklappt hat, sollte nun das Programm einsatzbereit sein.
An folgendem Test-Code kann die Funktionalität getestet werden:
MsgBox(0, "Test", "Es funktioniert!")
MsgBox(0, "", "Viel Spaß mit 'AutoIt from Browser'")
Nach Klick auf das Symbol rechts oben sollte sich ein kleines Fenster öffnen, in dem ihr gefragt werdet, ob der Quellcode in Scite geöffnet oder direkt ausgeführt werden soll.
Wenn das alles geklappt hat: Viel Spaß damit! Nun können die geposteten Programme direkt aus dem Browser getestet werden (funktioniert auch mit Code in Spoilern).
[Blockierte Grafik: http://stayawayknight.square7.ch/0841233522012.jpg]
Quellcode (auch im Anhang enthalten):
au3fb.au3
#cs
17.12.2012 22:26
[email='stayawayknight@autoit.de'][/email]
WARNUNG: In Programmen, in denen mit HTML-Tags gearbeitet wird, kann es zu Problemen kommen!
#ce
#include <Inet.au3>
#include <Array.au3>
#include <String.au3>
#include <Misc.au3>
#RequireAdmin
_Singleton("AutoIt from Browser")
[/autoit] [autoit][/autoit] [autoit]If Not IsArray($CMDLINE) Then Exit
If @Compiled Then
If UBound($CMDLINE, 1) < 2 Then Exit
EndIf
Global $aSplit = StringSplit($CMDLINE[1], "|")
If Not IsArray($aSplit) Then Exit
Global $sFilePath = @ScriptDir & "\code.au3"
[/autoit] [autoit][/autoit] [autoit]OnAutoItExitRegister("_exit")
Opt("GuiOnEventMode", 1)
Global $hGui = GUICreate("AutoIt from Browser", 200, 75, Default, Default, 0x00080000)
GUISetBkColor(0x0000FF, $hGui)
GUICtrlSetDefColor(0xFFFFFF, $hGui)
GUICtrlSetDefBkColor(0x2020FF, $hGui)
GUICtrlCreateButton("Öffnen", 0, 0, 100, 50)
GUICtrlSetOnEvent(-1, "_open")
GUICtrlCreateButton("Ausführen", 100, 0, 100, 50)
GUICtrlSetOnEvent(-1, "_run")
GUISetOnEvent(-3, "_exit", $hGui)
GUISetState(@SW_SHOW, $hGui)
GUISetState(@SW_DISABLE, $hGui)
TrayTip("Suche...", "Suche Code online... .", 5000)
[/autoit] [autoit][/autoit] [autoit]Global $iNumber = StringReplace($aSplit[1], "au3fb://", "") - 1
Global $sSource = _INetGetSource($aSplit[2])
$sBetween = _StringBetween($sSource, '<td class="codeLines container-4">', '</td>')
Global $aResult[UBound($sBetween, 1) / 2]
[/autoit] [autoit][/autoit] [autoit]$iCounter = 0
For $i = 1 To UBound($sBetween, 1) - 1 Step 2
$aResult[$iCounter] = StringReplace($sBetween[$i], '<pre>', '')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], '</pre>', '')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], '</a>', '')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], '</span>', '')
$aResult[$iCounter] = StringRegExpReplace($aResult[$iCounter], '<a style=(.+?)>', '')
$aResult[$iCounter] = StringRegExpReplace($aResult[$iCounter], '<span style=(.+?)>', '')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], '"', '"')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], '&', '&')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], '<', '<')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], '>', '>')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], Chr(196), 'Ä')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], 'Ö', 'Ö')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], Chr(220), 'Ü')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], 'ä', 'ä')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], 'ö', 'ö')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], 'ü', 'ü')
$aResult[$iCounter] = StringReplace($aResult[$iCounter], 'ß', 'ß')
$aResult[$iCounter] = StringStripWS($aResult[$iCounter], 1)
$iCounter += 1
Next
$hFile = FileOpen($sFilePath, 2)
FileWrite($hFile, $aResult[$iNumber])
FileClose($hFile)
TrayTip("Gefunden", "Code online gefunden." @CRLF & "Skript aufrufbar/ausführbar.", 1000)
GUISetState(@SW_ENABLE, $hGui)
While Sleep(10)
WEnd
Func _open()
ShellExecute($sFilePath)
EndFunc ;==>_open
Func _run()
Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sFilePath & '"')
EndFunc ;==>_run
Func _exit()
FileDelete($sFilePath)
Exit
EndFunc ;==>_exit
Wichtiger Hinweis: Bei Programmen, in denen mit HTML-Tags gearbeitet wird, kann es zu Verfälschungen des Quellcodes kommen!
Das Programm enthält vermutlich noch einige Bugs etc. Außerdem weiß ich noch nicht, wie ich feststellen kann, ob ein HTML-Tag im Skript in '...' bzw. "..." steht...
Zum Beispiel wird > immer durch ein '>' ersetzt, egal ob dies gewünscht ist oder nicht (wenn es im geposteten Quellode notwendig ist).
Über Kritik, Bugmeldungen etc. bin ich sehr dankbar!
Viele Grüße
stay