Der Link ist bei mir 404…
Beiträge von peethebee
-
-
Cool vermutlich schon, nur funktioniert es halt überhaupt nicht, weil ich nicht weiß, wo ich SciTE anweisen kann, das Tool anzubieten während ein Skript läuft :(.
Weiß ja jemand was?
Johannes
-
http://docs.oasis-open.org/office/v1.1/OS…cument-v1.1.pdf
Hier gibt es Material, Achtung der Download ist extrem langsam und die Datei groß…Johannes
-
Yiha! Danke für den Test und die Bilder (die ich vergessen hatte zu posten). Zu einer guten UDF gehören immer Screenshots :).
Johannes
-
Hast du dich nch um das Navigieren gekümmert?

Das würde es richtig cool machen, allerdings hätte ich aus dem Stand keine Idee, wie man im Scintilla-Control sauber navigieren kann...Überrasch mich!

Johannes -
Hallo,
Der Anfang einer UDF für das ODT-Format, das LibreOffice/OpenOffice nutzen. Angenehmerweise ist das Format nicht nur dokumentiert, sondern auch auf den Schultern von Giganten gebaut: XML für die Daten und Styles, beide möglichst sauber getrennt, alle relevanten Daten dann gemeinsam in ein Zip-Archiv gepackt.
Meine UDF nutzt 7-zip in der Kommandozeilenversion, weil alle Zip-UDFs, die mir untergekommen sind, nicht ordentlich funktioniert haben.Funktionen:
CodeFunc _ODTUnpack($sFile, $sTarget = "default") Func _ODTGetContent($sTarget) Func _ODTSetContent($sHandle, $sContent) Func _ODTGetStyles($_handle) Func _ODTSetStyles($_handle, $_styles) Func _ODTRepack($sTarget, $sBasefile, $sNewfile = "same")Die UDF im Ganzen:
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
AutoIt Version: 3.3.6.1
Author: Johannes Mitlmeier
Script Function:
OpenDocument (LibreOffice/OpenOffice) function library.
Version 0.1
#ce ----------------------------------------------------------------------------#include-once
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <File.au3>; #FUNCTION# ====================================================================================================
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; Name...........: _ODTUnpack
; Description....: Unpacks a odt file (which is essentially zipped) into the given folder
; Syntax.........: _ODTUnpack($sFile, $sTarget)
; Parameters.....: $sFile - Full filename of the odt file you want to unpack
; $sTarget - [Optional] Name of the directory to unpack to (default: in Tempdir)
;
; Return values..: Success - returns name of the directory the data have been unpacked to
; Failure - returns 0 and sets @error to 1
; Author.........: Johannes Mitlmeier
; Modified.......: 2011-03-25
; Remarks........:
; Related........:
; Link...........:
; Example........:
; ===============================================================================================================
Func _ODTUnpack($sFile, $sTarget = "default")
If $sTarget == "default" Then $sTarget = @TempDir & "\odt"
DirRemove($sTarget, 1)
RunWait('"' & @ScriptDir & '\7za.exe" x "' & $sFile & '" "-o' & $sTarget & '" -y')
If FileExists($sTarget) Then Return $sTarget
SetError(1, 0, 0)
EndFunc ;==>_ODTUnpack; #FUNCTION# ====================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name...........: _ODTGetContent
; Description....: returns content of the content.xml file inside the given directory
; Syntax.........: _ODTGetContent($sTarget)
; Parameters.....: $sTarget - name of the directory to search in (return value of _ODTUnpack)
;
; Return values..: Success - returns content.xml as a string
; Failure - returns return value of FileRead
; Author.........: Johannes Mitlmeier
; Modified.......: 2011-03-25
; Remarks........:
; Related........:
; Link...........:
; Example........:
; ===============================================================================================================
Func _ODTGetContent($sTarget)
Return FileRead($sTarget & "\content.xml")
EndFunc ;==>_ODTGetContent; #FUNCTION# ====================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name...........: _ODTSetContent
; Description....: Sets the content of the content.xml file inside the given directory
; Syntax.........: _ODTSetContent($sTarget, $sContent)
; Parameters.....: $sTarget - name of the directory to search in (return value of _ODTUnpack)
; $sContent - new content of the file, previous content will be erased
;
; Return values..: Success - returns 0
; Failure - returns -1 and sets @error as failed FileOpen
; Author.........: Johannes Mitlmeier
; Modified.......: 2011-03-25
; Remarks........:
; Related........:
; Link...........:
; Example........:
; ===============================================================================================================
Func _ODTSetContent($sHandle, $sContent)
Return _ODTWriteToFile($sHandle, "content.xml", $sContent)
EndFunc ;==>_ODTSetContentFunc _ODTGetStyles($_handle)
[/autoit] [autoit][/autoit] [autoit]
Return FileRead($_handle & "\styles.xml")
EndFunc ;==>_ODTGetStylesFunc _ODTSetStyles($_handle, $_styles)
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_ODTSetStyles; #FUNCTION# ====================================================================================================
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; Name...........: _ODTRepack
; Description....: Repack the changed files in the ODT folder into a new odt file.
; Syntax.........: _ODTRepack($sTarget, $sBasefile, $sNewfile)
; Parameters.....: $sTarget - Folder of operation
; $sBasefile - original ODT file for keeping compression
; $sNewfile - [optional] filename of the new ODT file. Default: $sBasefile
;
; Return values..: Success - 0
; Failure - -1 if something went wrong
; Author.........: Johannes Mitlmeier
; Modified.......: 2011-03-25
; Remarks........:
; Related........:
; Link...........:
; Example........:
; ===============================================================================================================
Func _ODTRepack($sTarget, $sBasefile, $sNewfile = "same")
If $sNewfile = "same" Then $sNewfile = $sBasefile
Local $command = '"' & @ScriptDir & '\7za.exe" a "' & $sNewfile & '" "' & $sTarget & '\*" -tzip -mx0 -r -y'
$command = '"' & @ScriptDir & '\7za.exe" u "' & $sNewfile & '" "' & $sTarget & '\*" "-xr@' & $sTarget & '\mimetype" -tzip -mx0 -r -y'
If $sNewfile <> $sBasefile Then FileCopy($sBasefile, $sNewfile)
RunWait($command)
If FileExists($sNewfile) Then Return 0
Return -1
EndFunc ;==>_ODTRepack;### internal functions
[/autoit] [autoit][/autoit] [autoit]Func _ODTWriteToFile($sHandle, $sFilename, $sContent)
[/autoit] [autoit][/autoit] [autoit]
Local $hFile = FileOpen($sHandle & "\" & $sFilename, 2 + 128); Check if file opened for writing OK
[/autoit] [autoit][/autoit] [autoit]
If $hFile = -1 Then
SetError(@error, 0, -1)
EndIf
FileWrite($hFile, $sContent)
FileClose($hFile)Return 0
[/autoit]
EndFunc ;==>_ODTWriteToFileBeispielskript:
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.6.1
[/autoit] [autoit][/autoit] [autoit]
Author: Johannes MitlmeierScript Function:
[/autoit] [autoit][/autoit] [autoit]
Demonstrate ODT UDF functions.#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#include "odt.au3"
[/autoit] [autoit][/autoit] [autoit]; Laden
[/autoit] [autoit][/autoit] [autoit]
$odt = _ODTUnpack(@ScriptDir & "\testfile.odt", @ScriptDir & "\testdir")
$content = _ODTGetContent($odt); Ändern
[/autoit] [autoit][/autoit] [autoit]
$content = StringReplace($content, "mir", @UserName)
$content = StringReplace($content, '<style:style style:name="T1" style:family="text"><style:text-properties fo:font-weight="bold" ', '<style:style style:name="T1" style:family="text"><style:text-properties fo:font-weight="normal" '); Speichern
[/autoit] [autoit][/autoit] [autoit]
_ODTSetContent($odt, $content)
_ODTRepack(@ScriptDir & "\testdir", @ScriptDir & "\testfile.odt", @ScriptDir & "\testfile2.odt"); Starten
[/autoit]
ShellExecute(@ScriptDir & "\testfile2.odt")Alle Daten als Paket zum Download im Anhang.
Möglicherweise ist die XML-UDF nützlich, um die ausgepackten XML-Dateien bequem zu bearbeiten:
http://code.google.com/p/my-autoit/do…LDomWrapper.au3Über Testberichte und Anregungen freue ich mich :).
Viel Spaß damit,
Johannes -
TinyMCE in einem IE-Objekt eventuell?
Johannes
-
Hi,
Ich wollte eine Funktion schreiben, um ein Skript in SciTE mit einer Tastenkombination neuzustarten, also abzuschießen und dann neu zu starten.
Code# 44 Restart command.44.*="$(SciteDefaultHome)\Restart\Restart.exe" "$(FilePath)" command.name.44.*=Restart this script command.shortcut.44.*=Ctrl+RRestart.au3, kompilieren in C:\Program Files (x86)\AutoIt\SciTE\Restart (oder äquivalent):
Spoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]Global $szDrive, $szDir, $szFName, $szExt
[/autoit] [autoit][/autoit] [autoit]
if $cmdline[0] == 0 Then Exit
_killScript($szFName)
Run('"..\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "' & $CmdLineRaw & '"')Func _killScript($name)
[/autoit] [autoit][/autoit] [autoit]
; kill exe
Run(@ComSpec & "/c taskkill /t /im " & $szFName & ".exe", ""); kill au3 run under autoit3.exe
[/autoit] [autoit][/autoit] [autoit]
; Generated by AutoIt Scriptomatic$wbemFlagReturnImmediately = 0x10
[/autoit] [autoit][/autoit] [autoit]
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"$Output = ""
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Output = $Output & "Computer: " & $strComputer & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\ROOT\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
ConsoleWrite("1")
If IsObj($colItems) Then
For $objItem In $colItems
if ($objItem.Name == "autoi3.exe") and (StringRight($objItem.CommandLine, StringLen($name)) == $name) then
MsgBox(0, "", $objItem.ProcessId & @CRLF & $objItem.Name & @CRLF & $objItem.CommandLine)
Run(@ComSpec & "/c taskkill /t /im " & $objItem.ProcessId, "")
EndIf
Next
EndIf
EndFunc ;==>_killScriptFunc WMIDateStringToDate($dtmDate)
[/autoit]
Return (StringMid($dtmDate, 5, 2) & "/" & _
StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
& " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
EndFunc ;==>WMIDateStringToDateDer Eintrag in der SciTEUser.properties funktioniert auch. Leider wird er wie die anderen Tools ausgegraut, wenn ein Skript läuft und damit habe ich so nichts davon. Weiß jemand, wie ich das verhindern kann?
Und dann wäre es wohl noch gut, den gefundenen Prozess direkt neuzustarten anstatt ihn zu schließen und dann wieder zu öffnen. Hat da jemand ein Stückchen Code für mich eventuell?Danke!
Johannes -
BugFix, der glühendste K-Meleon-Verfechter ohne seinen Lieblingsbrowser
. Erstaunlich :D. -
Hi LiMing1956,
Das AutoIt-Buch habe ich begonnen, weil es damals kein deutschsprachiges Buch zum Thema gab. Das ist glaube ich bis heute noch so und mein Buch ist aber ja auch noch nicht fertig und es ist unklar, ob es das jemals wird. Es gibt auch sonst reichlich zu tun ;-).
Wenn du selbst schreiben willst, leg einfach los. Erst mal tut es vielleicht Word, später solltest du meiner Meinung nach dann auf LaTeX umsteigen (googlen dazu).
Bis man C++ so beherrscht, dass man damit ein Spiel bauen kann, dauert das eine ganz Weile. Auf dem Weg dahin solltest du einige kleinere und graphisch weniger anspruchsvolle Projekte in Angriff nehmen. Um erst einmal Programmieren zu lernen, ist AutoIt eine gute Sache.Viel Erfolg,
Johannes -
http://openbook.galileocomputing.de/javainsel/
Und ja, Java ist auch schnell -- wenn man gut programmiert (was aber auch bei C++ das Haupthindernis für schnellen Code ist ;)).Johannes
-
Java wäre meine Empfehlung. Es ist einfachER plattformunabhängig als C++ (da sind oft Anpassungen nötig, v.a. bei graphischen Programmen). Außerdem bringt es viel (!) mehr von Haus aus mit an Funktionen. Die Standardbibliothek von Java ist klasse (kleiner Insiderwitz obendrein :D). Es gibt für C++ mindestens genauso viele Bibliotheken für nahezu jeden Zweck, aber die Einbindung und Suche nach der richtigen Bib überfordert anfangs vermutlich.
Eclipse ist eine wunderbare IDE für Java, für C++ am ehesten noch VisualStudio von Microsoft.
Zu bedenken ist aber, dass Java inzwischen in der Hand des Teufels ist (Oracle).
Viel Spaß!
Johannes -
Ich lösche dann mal AutoBot, der hatte ja noch nichts Relevantes gepostet.
Viel Spaß hier Autimus :).Johannes
-
Wer kontrolliert denn den Server? Du selbst? Vermutlich ja, sonst könntest du ja kaum hashen, vermute ich. Dann würde ich einfach rsync über ssh nutzen, das funktioniert mit Putty vielleicht sogar unter Windows…
Johannes
-
*schubs*

Okay, Spaß. Vermutlich hast du Recht, dass man die Makros eher mit Variablen als Konstanten vergleichen sollte, auch wenn sie typischerweise sehr wertstabil sind.
Ich wollte oben sagen, dass die Tatsache, dass man keine eigenen Makros anlegen kann, deshalb kein Problem ist, weil man sie eben durch Konstanten/Variablen ersetzen kann. Natürlich hat man dann kein @ vorne, sondern ein $ :).*weiter unten auffang* :D.
Johannes
-
Die Makros sind gleichbedeutend zu Konstanten, von daher ist das kein Problem :).
Johannes
-
Hi,
Wie behaltet ihr die Übersicht in größeren Dateien mit vielen Funktionen? Alt+L in SciTE bietet mir eine Liste, die allerdings klein ist und nicht suchbar (getippte Zeichen erscheinen auch im Textfenster).
Gibt es also etwas Schöneres, Nützlicheres?Danke für Input!
Johannes -
Hi,
In Erinnerung an die goldenen Zeiten des WM-Tippspiels habe ich für die verbleibenden Bundesligapartien noch mal ein Tippspiel aufgesetzt:
http://www.kicktipp.de/autoitDie Runde beginnt mit dem 28. Spieltag, also erst nächstes Wochenende.
Freue mich über Gegner!

Viel Spaß allerseits,
Johannes -
Wieder was gelernt, danke :D.
Johannes
-
Ich will doch niemanden verjagen :). War nur ein Angebot, falls die Namenswahl etwas voreilig gewesen sein sollte.
Johannes