So, ich würde gerne ein kleines Script schreiben, das den AutoIt-Source im Clipboard in einem geöffneten Scite Fenster einfügt, dann in Scite unter "File/Export/As Html" den Code ins Html umwandelt und die gespeicherte Datei wieder in die Clipboard-Ablage kopiert. Dies hat alles den Sinn, das ich nicht immer das per Hand machen muss (logisch ). Die Clipboard-Sache ist kein Problem, jedoch habe ich es noch nicht mal geschafft mit Run/bzw. ShellExecute Scite zu öffnen, ein neues Projekt anzulegen und einen Text einzufügen. Vielleicht hat von euch noch jemand eine Lösung. Ich würde mich sehr darübr freuen.
Scite Automatisierung!
-
- [ gelöst ]
-
Faweyr -
22. Juni 2010 um 16:52 -
Geschlossen -
Erledigt
-
-
Lösung:
Spoiler anzeigen
[autoit]#include <ClipBoard.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <String.au3>
#Include <File.au3>
Opt("WinSearchChildren", 1)
Local $state
;Laden
$ScriptFile = _TempFile(Default, Default, ".au3", 7)
$HTMLFile = _TempFile(Default, Default, ".htm", 7)$sData = _ClipBoard_GetData()
[/autoit] [autoit][/autoit] [autoit]
FileWrite($ScriptFile,$sData);Bearbeiten:
[/autoit] [autoit][/autoit] [autoit]$Scite_hwnd = WinGetHandle("DirectorExtension")
[/autoit] [autoit][/autoit] [autoit]SendSciTE_Command(0, $Scite_hwnd, 'open:' & StringReplace($ScriptFile, "\", "\\"))
[/autoit] [autoit][/autoit] [autoit]
SendSciTE_Command(0, $Scite_hwnd, 'exportashtml:' & StringReplace($HTMLFile, "\", "\\"))
SendSciTE_Command(0, $Scite_hwnd, 'close:');Speichern:
[/autoit] [autoit][/autoit] [autoit]
$sData = FileRead($HTMLFile)
$sSource = _StringBetween($sData,'<body bgcolor="#F0F4F9">','</body>')
If not @error then _ClipBoard_SetData($sSource[0]);Löschen
[/autoit] [autoit][/autoit] [autoit]
FileDelete($ScriptFile)
FileDelete($HTMLFile); Send command to SciTE
[/autoit]
Func SendSciTE_Command($My_Hwnd, $Scite_hwnd, $sCmd)
ConsoleWrite('-->' & $sCmd & @lf )
Local $CmdStruct = DllStructCreate('Char[' & StringLen($sCmd) + 1 & ']'),$WM_COPYDATA = 74
DllStructSetData($CmdStruct, 1, $sCmd)
Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr')
DllStructSetData($COPYDATA, 1, 1)
DllStructSetData($COPYDATA, 2, StringLen($sCmd) + 1)
DllStructSetData($COPYDATA, 3, DllStructGetPtr($CmdStruct))
DllCall('User32.dll', 'None', 'SendMessage', 'HWnd', $Scite_hwnd, _
'Int', $WM_COPYDATA, 'HWnd', $My_Hwnd, _
'Ptr', DllStructGetPtr($COPYDATA))
EndFunc;==>SendSciTE_Command
Und das Programm mit mit eigenem Source ausgeführt sieht es so aus:Spoiler anzeigen
<span><span class="S11">#include</span><span class="S0"> </span><span class="S7"><String.au3></span><br />
<span class="S11">#Include</span><span class="S0"> </span><span class="S7"><File.au3></span><br />
<span class="S4">Opt</span><span class="S8">(</span><span class="S7">"WinSearchChildren"</span><span class="S8">,</span><span class="S0"> </span><span class="S3">1</span><span class="S8">)</span><br />
<span class="S5">Local</span><span class="S0"> </span><span class="S9">$state</span><br />
<span class="S1">;Laden</span><br />
<span class="S9">$ScriptFile</span><span class="S0"> </span><span class="S8">=</span><span class="S0"> </span><span class="S15">_TempFile</span><span class="S8">(</span><span class="S5">Default</span><span class="S8">,</span><span class="S0"> </span><span class="S5">Default</span><span class="S8">,</span><span class="S0"> </span><span class="S7">".au3"</span><span class="S8">,</span><span class="S0"> </span><span class="S3">7</span><span class="S8">)</span><br />
<span class="S9">$HTMLFile</span><span class="S0"> </span><span class="S8">=</span><span class="S0"> </span><span class="S15">_TempFile</span><span class="S8">(</span><span class="S5">Default</span><span class="S8">,</span><span class="S0"> </span><span class="S5">Default</span><span class="S8">,</span><span class="S0"> </span><span class="S7">".htm"</span><span class="S8">,</span><span class="S0"> </span><span class="S3">7</span><span class="S8">)</span><br />
<br />
<span class="S9">$sData</span><span class="S0"> </span><span class="S8">=</span><span class="S0"> </span><span class="S15">_ClipBoard_GetData</span><span class="S8">()</span><br />
<span class="S4">FileWrite</span><span class="S8">(</span><span class="S9">$ScriptFile</span><span class="S8">,</span><span class="S9">$sData</span><span class="S8">)</span><br />
<br />
<span class="S1">;Bearbeiten:</span><br />
<br />
<span class="S9">$Scite_hwnd</span><span class="S0"> </span><span class="S8">=</span><span class="S0"> </span><span class="S4">WinGetHandle</span><span class="S8">(</span><span class="S7">"DirectorExtension"</span><span class="S8">)</span><br />
<br />
<span class="S0">SendSciTE_Command</span><span class="S8">(</span><span class="S3">0</span><span class="S8">,</span><span class="S0"> </span><span class="S9">$Scite_hwnd</span><span class="S8">,</span><span class="S0"> </span><span class="S7">'open:'</span><span class="S0"> </span><span class="S8">&</span><span class="S0"> </span><span class="S4">StringReplace</span><span class="S8">(</span><span class="S9">$ScriptFile</span><span class="S8">,</span><span class="S0"> </span><span class="S7">"\"</span><span class="S8">,</span><span class="S0"> </span><span class="S7">"\\"</span><span class="S8">))</span><br />
<span class="S0">SendSciTE_Command</span><span class="S8">(</span><span class="S3">0</span><span class="S8">,</span><span class="S0"> </span><span class="S9">$Scite_hwnd</span><span class="S8">,</span><span class="S0"> </span><span class="S7">'exportashtml:'</span><span class="S0"> </span><span class="S8">&</span><span class="S0"> </span><span class="S4">StringReplace</span><span class="S8">(</span><span class="S9">$HTMLFile</span><span class="S8">,</span><span class="S0"> </span><span class="S7">"\"</span><span class="S8">,</span><span class="S0"> </span><span class="S7">"\\"</span><span class="S8">))</span><br />
<span class="S0">SendSciTE_Command</span><span class="S8">(</span><span class="S3">0</span><span class="S8">,</span><span class="S0"> </span><span class="S9">$Scite_hwnd</span><span class="S8">,</span><span class="S0"> </span><span class="S7">'close:'</span><span class="S8">)</span><br />
<br />
<span class="S1">;Speichern:</span><br />
<span class="S9">$sData</span><span class="S0"> </span><span class="S8">=</span><span class="S0"> </span><span class="S4">FileRead</span><span class="S8">(</span><span class="S9">$HTMLFile</span><span class="S8">)</span><br />
<span class="S9">$sSource</span><span class="S0"> </span><span class="S8">=</span><span class="S0"> </span><span class="S15">_StringBetween</span><span class="S8">(</span><span class="S9">$sData</span><span class="S8">,</span><span class="S7">'<body bgcolor="#F0F4F9">'</span><span class="S8">,</span><span class="S7">'</body>'</span><span class="S8">)</span><br />
<span class="S5">If</span><span class="S0"> </span><span class="S5">not</span><span class="S0"> </span><span class="S6">@error</span><span class="S0"> </span><span class="S5">then</span><span class="S0"> </span><span class="S15">_ClipBoard_SetData</span><span class="S8">(</span><span class="S9">$sSource</span><span class="S8">[</span><span class="S3">0</span><span class="S8">])</span><br />
<br />
<span class="S1">;Löschen</span><br />
<span class="S4">FileDelete</span><span class="S8">(</span><span class="S9">$ScriptFile</span><span class="S8">)</span><br />
<span class="S4">FileDelete</span><span class="S8">(</span><span class="S9">$HTMLFile</span><span class="S8">)</span><br />
<br />
<span class="S1">; Send command to SciTE</span><br />
<span class="S5">Func</span><span class="S0"> SendSciTE_Command</span><span class="S8">(</span><span class="S9">$My_Hwnd</span><span class="S8">,</span><span class="S0"> </span><span class="S9">$Scite_hwnd</span><span class="S8">,</span><span class="S0"> </span><span class="S9">$sCmd</span><span class="S8">)</span><span class="S0"> </span><br />
<span class="S0"> </span><span class="S4">ConsoleWrite</span><span class="S8">(</span><span class="S7">'-->'</span><span class="S0"> </span><span class="S8">&</span><span class="S0"> </span><span class="S9">$sCmd</span><span class="S0"> </span><span class="S8">&</span><span class="S0"> </span><span class="S6">@lf</span><span class="S0"> </span><span class="S8">)</span><br />
<span class="S0"> </span><span class="S5">Local</span><span class="S0"> </span><span class="S9">$CmdStruct</span><span class="S0"> </span><span class="S8">=</span><span class="S0"> </span><span class="S4">DllStructCreate</span><span class="S8">(</span><span class="S7">'Char['</span><span class="S0"> </span><span class="S8">&</span><span class="S0"> </span><span class="S4">StringLen</span><span class="S8">(</span><span class="S9">$sCmd</span><span class="S8">)</span><span class="S0"> </span><span class="S8">+</span><span class="S0"> </span><span class="S3">1</span><span class="S0"> </span><span class="S8">&</span><span class="S0"> </span><span class="S7">']'</span><span class="S8">),</span><span class="S9">$WM_COPYDATA</span><span class="S0"> </span><span class="S8">=</span><span class="S0"> </span><span class="S3">74</span><br />
<span class="S0"> </span><span class="S4">DllStructSetData</span><span class="S8">(</span><span class="S9">$CmdStruct</span><span class="S8">,</span><span class="S0"> </span><span class="S3">1</span><span class="S8">,</span><span class="S0"> </span><span class="S9">$sCmd</span><span class="S8">)</span><br />
<span class="S0"> </span><span class="S5">Local</span><span class="S0"> </span><span class="S9">$COPYDATA</span><span class="S0"> </span><span class="S8">=</span><span class="S0"> </span><span class="S4">DllStructCreate</span><span class="S8">(</span><span class="S7">'Ptr;DWord;Ptr'</span><span class="S8">)</span><br />
<span class="S0"> </span><span class="S4">DllStructSetData</span><span class="S8">(</span><span class="S9">$COPYDATA</span><span class="S8">,</span><span class="S0"> </span><span class="S3">1</span><span class="S8">,</span><span class="S0"> </span><span class="S3">1</span><span class="S8">)</span><br />
<span class="S0"> </span><span class="S4">DllStructSetData</span><span class="S8">(</span><span class="S9">$COPYDATA</span><span class="S8">,</span><span class="S0"> </span><span class="S3">2</span><span class="S8">,</span><span class="S0"> </span><span class="S4">StringLen</span><span class="S8">(</span><span class="S9">$sCmd</span><span class="S8">)</span><span class="S0"> </span><span class="S8">+</span><span class="S0"> </span><span class="S3">1</span><span class="S8">)</span><br />
<span class="S0"> </span><span class="S4">DllStructSetData</span><span class="S8">(</span><span class="S9">$COPYDATA</span><span class="S8">,</span><span class="S0"> </span><span class="S3">3</span><span class="S8">,</span><span class="S0"> </span><span class="S4">DllStructGetPtr</span><span class="S8">(</span><span class="S9">$CmdStruct</span><span class="S8">))</span><br />
<span class="S0"> </span><span class="S4">DllCall</span><span class="S8">(</span><span class="S7">'User32.dll'</span><span class="S8">,</span><span class="S0"> </span><span class="S7">'None'</span><span class="S8">,</span><span class="S0"> </span><span class="S7">'SendMessage'</span><span class="S8">,</span><span class="S0"> </span><span class="S7">'HWnd'</span><span class="S8">,</span><span class="S0"> </span><span class="S9">$Scite_hwnd</span><span class="S8">,</span><span class="S0"> </span><span class="S8">_</span><br />
<span class="S0"> </span><span class="S7">'Int'</span><span class="S8">,</span><span class="S0"> </span><span class="S9">$WM_COPYDATA</span><span class="S8">,</span><span class="S0"> </span><span class="S7">'HWnd'</span><span class="S8">,</span><span class="S0"> </span><span class="S9">$My_Hwnd</span><span class="S8">,</span><span class="S0"> </span><span class="S8">_</span><br />
<span class="S0"> </span><span class="S7">'Ptr'</span><span class="S8">,</span><span class="S0"> </span><span class="S4">DllStructGetPtr</span><span class="S8">(</span><span class="S9">$COPYDATA</span><span class="S8">))</span><br />
<span class="S5">EndFunc</span><span class="S1">;==>SendSciTE_Command</span></span> -
schönes Script, hatte nur Probleme mit der Hintergrundfarbe, deshalb bei mir jetzt so geändert ....
Spoiler anzeigen
[autoit]$sSource = _StringBetween($sData,'</head>','</body>')
[/autoit]