Den Begriff "single Touch" kannte ich so noch nicht.
Ich dachte, das bedeutet, dass nur eine Taste auf einmal abgefragt werden kann (bzw. Rückmeldung der Projektion), daher mein Ansatz mit den Hotkeys, weil das halt mit einzelnen Tastendrücken funktioniert und ohne Kombinationen wie ALT-TAB auskommt...
Beiträge von Friesel
-
-
[autoit]
$save = FileSaveDialog("Save File", @DesktopDir, "Config(*.cfg)", 16, "TEST")
[/autoit]
Dir ist aber schon klar, dass die Dateiendung mit angegeben werden muss?also so:
[autoit]$save = FileSaveDialog("Save File", @DesktopDir, "Config(*.cfg)", 16, "TEST.cfg")
[/autoit]
Falls du das nur bei deinem Beispiel vergessen hast, endschuldige ich mich für meine "Erbsenzählerei"...
-
Ich gehe mal davon aus, dass du keinen Zugriff auf den Sourcecode des besagten Programmes hast, bzw. dass es kein AutoIT Programm ist.
Du könntest mal versuchen, den umgekehrten Weg deines Denkansatzes zu gehen, indem du mit AutoIT bestimmte Verzeichnisse auf Veränderung überwachen läßt.
Schau dir mal diesen Beitrag von AspirinJunkie an.Du kannst dir auch die Source des Programms ansehn, dass ich unten angehängt habe.
Damit ist es möglich, mehrere Verzeichnisse gleichzeitig zu überwachen.
Den Code habe ich aus dem englischen AutoIT Forum. Musste mal dort suchen, für nähere Infos
-
In diesem Fall wäre Switch definitiv die elegantere Lösung.
Außerdem solltest du Return benutzen um Werte zu übertragen und keine globalen Variablen ändern, oder zumindest nur in seltenen Fällen. (Das sollte bei dir eigentlich sowieso nicht funktionieren, da $satz außerhalb der Funktionen als lokal deklariert wurde, diese somit eigentlich keinen Zugriff darauf haben sollten.)
Das Skript oben ist getestet und funktioniert einwandfrei
Aber das sollte ja, wie gesagt, nur als Beispiel dienen. In meinem konreten "Problem" mit FileInstall ging es auch nicht darum, Variablen zu ändern, sondern darum, unterschiedliche Einspung- bzw. Aussprungpunkte zu erstellen.Alles anzeigenIch würde auch lieber das mit if und return nehmen. Switch ist nur bei entweder-oder Auswahlen wirklich sinnvoll, bei aufeinanderfolgenden Abfragen wird if verwendet.
Mit Switch könnte man das auch so lösen: (unübersichtlich)Spoiler anzeigen
[autoit]Func _Switch($eject)
[/autoit] [autoit][/autoit] [autoit]
Local $satz = ""
Switch $eject
Case 3
$satz = " nun doch"
ContinueCase
Case 2
$satz = " Satz, der"&$satz
ContinueCase
Case 1
$satz = " ein unvollständiger"&$satz
ContinueCase
Case 0
$satz = "Dies ist"&$satzCase Else
[/autoit]
$satz = "Dies ist ein unvollständiger Satz, der nun doch vollständig ist."
EndSwitch
Return $satz
EndFunc
Das der Code hässlich ist, sehe sogar ich
Bei den if-abfragen muss jedes Mal der Wert der Variable neu ausgelesen werden und dafür muss in der Liste aller Variablen nachgeschlagen werden, welcher Wert dazu gehört steht.
Bei Switch wird der Wert einmal bestimmt und dann nur noch verglichen.
Verstanden und verinnerlicht, danke!Local außerhalb einer Funktion -> Global.

Verstanden und verinnerlicht, danke!
Aber, ums nochmals zu betonen, bei mir gings nicht um Variablen, sondern um Aussprungspunkte... -
Erstmal danke für die rege Beteiligung

Meiner Meinung nach ist in dem konkreten Beispiel oben und auch bei meinem Programm mit FileInstall der Vorteil, dass man nach dem Return nur den Code hinzufügen muß, der neu ist und nicht wie bei Switch/Case jedesmal den gesamten Code wiederholen muß...
Also sollte man eurer Meinung nach, den Code lieber mehrmals wiederholen (pro Case Anweisung) als nur den Neuen hinzuzufügen?
Zu deiner zweiten Frage: In diesem Fall ist die zweite Variante mit "Switch" nicht nur (meiner Meinung nach) sauberer, sondern auch geringfügig schneller.
Hast du das gemessen oder weiß man sowas einfach? -
Schönen guten Tag, allerseits.
Da ich noch Anfänger bin, habe ich eine grundsätzliche Frage zur Programmierung:
Ich erinnere mich noch, daß man den GOTO-Befehl aus vielen Programmiersprache gestrichen hat, weil dessen Benutzung als äußerst unsauber galt.
Nun sehe ich aber immer wieder in diversen Skrpts, dass dort "Return" benutzt wird, um eine Funktion/Schleife vorzeitig zu verlassen. Ist das nicht auch einfach nur ein "getarnter" GOTO-Befehl?Konkret stellte sich für mich das Problem, dass ich eine Funktion in einem Programm habe, die von unterschiedlichen Stellen aufgerufen wird und je nach Aufruf "unterschiedlich weit" durchlaufen werden soll.
Noch konkreter: Wenn man das Programm per Doppelklick auf die exe startet, sollen per "FileInstall" 10 Dateien entpackt werden. Wird das programm aber mit einem Argument gestartet (Rechtsklick aus dem Kontextmenü), sollen nur die ersten 3 Dateien aus der Liste entpackt werden.Hier mal ein allgemeines Beispiel, um zu zeigen, was ich meine:
Spoiler anzeigen
[autoit];==> Benutzung von "Return"
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 to 3
Local $satz = ""
_Return($i)
MsgBox(0, "_Return(" & $i & ")", $satz)
Next
_Return(1234) ;==> Bei Aufruf mit beliebigem Argument läuft die Schleife bis zum Ende durch
MsgBox(0, "_Return(1234)", $satz);==> Das Gleiche mit "Switch"
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 to 3
Local $satz = ""
_Switch($i)
MsgBox(0, "_Switch(" & $i & ")", $satz)
Next
_Switch(1234) ;==> beliebiges Argument
MsgBox(0, "_Switch(1234)", $satz)Exit
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _Return($eject)
[/autoit] [autoit][/autoit] [autoit]
$satz = "Dies ist "
If $eject = 0 Then Return$satz &= "ein unvollständiger "
[/autoit] [autoit][/autoit] [autoit]
If $eject = 1 Then Return$satz &= "Satz, der "
[/autoit] [autoit][/autoit] [autoit]
If $eject = 2 Then Return$satz &= "nun doch "
[/autoit] [autoit][/autoit] [autoit]
If $eject = 3 Then Return$satz &= "vollständig ist."
[/autoit] [autoit][/autoit] [autoit]
EndFuncFunc _Switch($eject)
[/autoit]
Switch $eject
Case 0
$satz = "Dies ist"
Case 1
$satz = "Dies ist ein unvollständiger"
Case 2
$satz = "Dies ist ein unvollständiger Satz, der"
Case 3
$satz = "Dies ist ein unvollständiger Satz, der nun doch"
Case Else
$satz = "Dies ist ein unvollständiger Satz, der nun doch vollständig ist."
EndSwitch
EndFunc
Was ist "sauberer"? Return oder Switch/Case?P.s.: Mir ist klar, dass man diese Spezielle Aufgabe auch eleganter lösen kann, aber das soll ja nur ein Beispiel sein...
-
Wenn du Windows 7 hast und die Maus über ein geöffnetes Programm in der Taskleiste hältst, wird der Name des Fensters in einem Tooltip angezeigt und genau diesen kannst du abfragen.
Um das z.B. für den Explorer nutzen zu können, mußt du allerdings in den Ordneroptionen unter "Ansicht" die Option "Vollständigen Pfad in der Titelleiste anzeigen (Nur klassisches Design)" aktivieren.
Danach kannst du den Pfad mit WinList ermitteln.
Mit SciTE geht das z.B. auch.Es gibt viele Programme (z.B. diverse Mediaplayer) bei denen man die Anzeige des Dateipfades in den Optionen aktivieren kann.*
Ob bzw. wie das in Excel geht mußt du mal Google fragen...*das muß ich leider zurücknehmen, in den Playern, die ich installiert habe, wird nur der Dateiname und nicht der komplette Pfad angezeigt...
-
Hab mir meinen Skript-Schnipsel nochmal angesehen und eine deutlich komfortablere und kürzere Version erstellt:
Spoiler anzeigen
[autoit]HotKeySet("{ESC}", "_Exit");==> nur zum Beenden dieses Beispiels
[/autoit] [autoit][/autoit] [autoit]OnAutoItExitRegister("_KeysUP");==> um sicher zu gehen, dass keine der Tasten eingerastet bleibt, egal wie das Programm beendet wird
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{TAB}", "_TAB");==> Nach Drücken der TAB Taste wird sofort das ALT-TAB Menü aufgerufen
[/autoit] [autoit][/autoit] [autoit];HotKeySet("{RIGHT}", "_TAB");==> So gehts auch und man ist sofort auf der richtigen Taste, wenn man Links/Rechts/Oben/Unten navigieren möchte
[/autoit] [autoit][/autoit] [autoit]
;HotKeySet("{LEFT}", "_TAB");==> aber die Curser Tasten sind dauerhaft belegt
;HotKeySet("{UP}", "_TAB")
;HotKeySet("{DOWN}", "_TAB")HotKeySet("{SPACE}", "_LWIN");==> Nach Drücken der SPACE Taste wird sofort das WIN-TAB Menü aufgerufen
[/autoit] [autoit][/autoit] [autoit]
;==> Die Windows Taste selber kann man leider nicht abfangen, soweit ich weißHotKeySet("!{ENTER}", "_KeysUP");==> ENTER wählt Fenster aus und "entrastet" TAB (!{ENTER} = Alt Taste + Enter)
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("#{ENTER}", "_KeysUP");==> ENTER wählt Fenster aus und "entrastet" LWIN (#{ENTER} = Windows Taste + Enter)
HotKeySet("!{ESC}", "_KeysUP");==> Wird ESC bei eingerasteter ALT Taste nicht abgefangen, bleibt ALT aktiviert
HotKeySet("#{ESC}", "_KeysUP");==> Wird ESC bei eingerasteter LWIN Taste nicht abgefangen, bleibt LWIN aktiviertWhile 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(5000)
WEndFunc _TAB()
[/autoit] [autoit][/autoit] [autoit]
Send("{LWINUP}")
Send("{ALTDOWN}")
Send("{TAB}")
EndFuncFunc _LWIN()
[/autoit] [autoit][/autoit] [autoit]
Send("{ALTUP}")
Send("{LWINDOWN}")
Send("{TAB}")
EndFuncFunc _KeysUP()
[/autoit] [autoit][/autoit] [autoit]
Send("{ALTUP}")
Send("{LWINUP}")
;_Exit()
EndFuncFunc _Exit()
[/autoit]
Exit
EndFunc -
Also ohne mir dein Skript näher angesehen zu haben (bin selber noch Anfänger), würde ich die Verwendung von Hotkeys empfehlen:
Spoiler anzeigen
[autoit]HotKeySet("{ESC}", "_Exit");==> nur zum Beenden dieses Beispiels
[/autoit] [autoit][/autoit] [autoit]OnAutoItExitRegister("_KeysUP");==> um sicher zu gehen, dass keine der Tasten eingerastet bleibt, egal wie das Programm beendet wird
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{a}", "_Alt");==> "a" drücken, um Alt Taste permanent "einzurasten"
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("!{ENTER}", "_AltEnter");==> Enter drücken, um Fenster zu wählen (!{ENTER} = Alt Taste + Enter)
HotKeySet("#a", "_AltNachWin");==> falls zuerst die Windows Taste und dann die Alt Taste gedrückt wird
HotKeySet("!{ESC}", "_Exit");==> Programm beenden, auch wenn Alt Taste "eingerastet" ist.HotKeySet("{SPACE}", "_Win");==> Space drücken, um linke Windows Taste permanent "einzurasten"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
HotKeySet("#{ENTER}", "_WinEnter");==> Enter drücken, um Fenster zu wählen (#{ENTER} = Windows Taste + Enter)
HotKeySet("!{SPACE}", "_WinNachAlt");==> falls zuerst die Alt Taste und dann die Windows Taste gedrückt wird
HotKeySet("#{ESC}", "_Exit");==> Programm beenden, auch wenn Windows Taste "eingerastet" ist.While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(5000)
WEndFunc _Alt();==> wenn aktiviert, einfach TAB Taste drücken (ACHTUNG: ALLE anderen Tasten werden jetzt auch mit der Alt Taste kombiniert)
[/autoit] [autoit][/autoit] [autoit]
Send ("{ALTDOWN}")
EndFuncFunc _AltNachWin();==> falls vorher die Windows Taste "eingerastet" wurde
[/autoit] [autoit][/autoit] [autoit]
Send("{LWINUP}")
Send ("{ALTDOWN}")
EndFuncFunc _Win();==> wenn aktiviert, einfach TAB Taste drücken (ACHTUNG: ALLE anderen Tasten werden jetzt auch mit der linken Windows Taste kombiniert)
[/autoit] [autoit][/autoit] [autoit]
Send("{LWINDOWN}")
EndFuncFunc _WinNachAlt();==> falls vorher die Alt Taste "eingerastet" wurde
[/autoit] [autoit][/autoit] [autoit]
Send("{ALTUP}")
Send("{LWINDOWN}")
EndFuncFunc _AltEnter();==> Enter drücken, um gewähltes Fenster in den Vordergrund zu holen und gleichzeitig die Alt Taste wieder "auszurasten"
[/autoit] [autoit][/autoit] [autoit]
Send("{ALTUP}")
;_Exit()
EndFuncFunc _WinEnter();==> Enter drücken, um gewähltes Fenster in den Vordergrund zu holen und gleichzeitig die linke Windows Taste wieder "auszurasten"
[/autoit] [autoit][/autoit] [autoit]
Send("{LWINUP}")
;_Exit()
EndFuncFunc _KeysUP();==> um sicher zu gehen, dass keine der Tasten eingerastet bleibt, egal wie das Programm beendet wird
[/autoit] [autoit][/autoit] [autoit]
Send("{ALTUP}")
Send("{LWINUP}")
EndFuncFunc _Exit()
[/autoit]
Exit
EndFuncIch habe jetzt mal Alt und Windows Taste gleichzeitig eingebaut.
Aber aufpassen, wenn man vergißt, dass eine der Tasten noch "eingerastet" ist, kann VIEL Chaos passieren
Evtl. könnte man noch mit Hilfe der AdlibRegister Funktion einen Sicherheitsmechanismus einbauen, damit keine der Tasten eingerastet bleibt.
Ausserdem könnte man noch diesen Code als seperates Programm mit z.B. einer F-Taste starten, welches nach Durchlauf der _AltEnter() bzw. _WinEnter() Funktion beendet wird (siehe Zeile 41 bzw. Zeile 46)*edit*
Natürlich lässt sich das ganze auch direkt aus einem Skript mittels WinActivate und WinSetState steuern...
Daran hatte ich garnicht mehr gedacht :wacko:*edit²*
siehe unten für bessere Version... -
Wow! Das war mal ne schnelle Antwort! Tausend Dank dafür

Die Koordinaten werden im richtigen Skript zwar nicht mit einer Inputbox ermittelt, aber die Funktion, die das macht, gibt tasächlich Strings aus, ohne dass mir das bewußt war...
Dann war das mit Round ja ein echter Zufallstreffer, weil ich damit ja was Anderes erreichen wollte, als den Variablentyp zu ändern

-
Guten Morgen allerseits!
In einem etwas grösseren Script muss ich X/Y Koordinaten vergleichen und entsprechend auswerten. Leider ergeben bestimmte Werte falsche Ergebnisse.
[autoit]
Da es sich um Bildschirmkoordinaten handelt, sind Dezimalstellen nicht von Bedeutung. Es handelt sich nur um ganzahlige bzw gerundete Werte.
Hier der relevante Teil:Local $ergebnis
[/autoit][autoit][/autoit][autoit]
Do
$x = InputBox("X","Ergebnis der letzten Eingabe:" & @CR & @CR & $ergebnis)
$y = InputBox("Y","Ergebnis der letzten Eingabe:" & @CR & @CR & $ergebnis)If $y > $x Then
[/autoit]
$ergebnis = $y & " > " & $x
ElseIf $x > $y Then
$ergebnis = $x & " > " & $y
Else
$ergebnis = $x & " = " & $y
EndIf
Until @error = 1 or $y = ""Folgende Sequenz finde ich mehr als seltsam:
X=10, Y=100 -> 100 > 10
X=10, Y=101 -> 101 > 10
X=11, Y=101 -> 11 > 101 ???
...
X=11, Y=109 -> 11 > 109 ???
X=11, Y=110 -> 110 > 11Das gleiche passiert zB auch bei 10000 > 1000 und 1001 > 10000 usw...
Es scheint fast so, als würde die Kommastelle der grösseren Zahl um eins nach links versetzt werden, bzw als würde nur die gleiche Anzahl der Stellen verglichen werden.
Also 11 und 101 wird zu 11 und 10.1 bzw 11 und 101 wird zu 11 und 10.Fügt man in Zeile 5 folgenden Befehl ein, funktioniert das Script (zumindest soweit ich gestestet habe):
[autoit]$x = Round($x, StringLen($y))
[/autoit]
[autoit]
Komplett also so:Local $ergebnis
[/autoit]
Do
$x = InputBox("X", "Ergebnis der letzten Eingabe:" & @CR & @CR & $ergebnis)
$y = InputBox("Y", "Ergebnis der letzten Eingabe:" & @CR & @CR & $ergebnis)
$x = Round($x, StringLen($y)) ;==> hier bekommt $x die gleiche Anzahl an Stellen wie $y --- das kann doch nicht die Lösung sein, oder?
If $y > $x Then
$ergebnis = $y & " > " & $x
ElseIf $x > $y Then
$ergebnis = $x & " > " & $y
Else
$ergebnis = $x & " = " & $y
EndIf
Until @error = 1 Or $y = ""
Da muss es doch eine Einstellung geben, um dieses Verhalten zu umgehen...p.s.: Ich hoffe, ich blamiere mich jetzt hier nicht bis auf die Knochen, weil ich irgendwas vollkommen offensichtliches übersehen habe...

-
Vielen Dank!
Sieht ja soweit ganz gut aus, auch wenn ich eigendlich gehofft hatte, daß das irgendwie mit einem einzelnen Pattern (wie zb meinem
) funktioniert.
Den Code werde ich mir später genauer ansehn, jetzt habe ich leider nur wenig Zeit.
Ein "Fehler" ist mir allerdings schon aufgefallen, denn das Leerzeichen nach dem Backslash im dritten Beispiel wird nicht entfernt ( \ SYSTEM\ ). -
Wenn dus dir ganz einfach machen willst, kannst du dir auch mal diese UDF ansehn:
Path_UDF.au3 -
Wenn man deinen Beispieltext aus den Screenshots so ansieht sollte mir das als Mensch auch gar nicht möglich sein.
Einmal gehören dort die Wörter nach dem Leerzeichen zum Pfad, ein andermal wiederrum nicht.
Nur mit Stringregeln lassen sich diese Fälle nicht unterscheiden.
Poste mal einen Beispieltext in Textform (möchte das nicht abtippen) und sage gleichzeitig wie das gewünschte Endergebnis aussehen soll.
Dann kann man mal selbst probieren.Erstmal danke für die Antwort

Das das mit den Leerzeichen im abschließenden Verzeichnis wohl nicht möglich ist, dachte ich mir schon.
Ich hoffte nur, daß vieleicht jemand 'nen tollen "Zaubertrick" im Ärmel hat
Aber wie ich schon geschrieben hab, ist das nicht so tragisch, wenns nicht klappt...Mir geht es einfach darum, Registry Links aus einer Textdatei oder einer der zahlreichen Internetseiten, die Registry Tricks veröffentlichen, zu filtern.
Das Endergebnis soll ein kompatibler Link sein, wie er zb in exportierten Schlüsseln steht (*.reg Dateien).CodeWindows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management] "ClearPageFileAtShutdown"=dword:00000001
Die umschliessenden Klammern sind egal und auch der Wert muss nicht gelesen werden, nur der eigendliche Schlüssel (auch wenns cool wäre, wenns dafür ne Lösung gäbe).
Also z.B. von hier:
http://digitalewelt.freenet.de/softwareos/win…70_1055218.htmlHier mal ein relevanter Auszug aus der Seite (erster Link mit Zeilenumbruch, zweiter normal und dritter mit falsch gesetztem Leerzeichen):
Code
Alles anzeigenWindows XP: Brennen von CDs Unter „Hkey_Current_User\Software\Microsoft\Windows\ CurrentVersion\Policies\Explorer“ deaktivieren Sie die Brennfunktion von Windows. Setzen Sie den Standard-Wert dazu auf „1“ . Das ist beispielsweise zum Schutz firmeninterner Daten sinnvoll. Windows XP & 2003: Systemlautsprecher Wen das Piepgeräusch des Systemlautsprechers nervt, deaktiviert diesen unter „Hkey_Current_User\Control Panel\Sound“, indem er den Wert „yes“ auf „no“ setzt. Windows NT, 2000, XP, 2003, Vista: Reboot nach Absturz Unter „Hkey_Local_Machine\ SYSTEM\CurrentControlSet\Control\CrashControl“ verhindern Sie mit einer Null den automatischen Neustart bei einem Windows-Absturz. Das kann bei der Fehler-Analyse sinnvoll sein.
Hier die Links zu extrahieren, sollte kein Probem sein, da sie von Anführungszeichen umschlossen sind. Es gibt aber genügend andere Seiten, die das nicht so vorbildlich machen... -
Hallöchen erstmal, ich bin der Neue und ich will gleich mal ein bisschen rumnerven...

Wie der Titel schon sagt, habe ich ein Problem mit Regex.
Ich möchte aus einem bliebigen String evtl. enthaltene Registry Schlüssel auslesen und weiterverarbeiten.
In RegexBuddy habe ich auch ein funktionierendes Pattern erstellen können, aber wenn ich versuche, diesen mithilfe von StringRegExpReplace zu benutzen, klappts nicht.
Zur Verdeutlichung, hier mal ein Screenshot:
[Blockierte Grafik: http://i.imgur.com/ImH4s.png]
Was ich noch nicht hinbekommen habe, ist ein Leerzeichen im abschliessenden Verzeichnis zu erkennen (z.B. HKEY_CURRENT_USER\Control Panel\Microsoft Input Devices) und Links mit Zeilenumbruch (siehe letztes Beispiel im Screenshot).
Falls dafür jemand ne Lösung hat, wäre ich auch nicht abgeneigt
Das ist aber nicht so tragisch, wichtiger ist mir die Umsetzung in Autoit. Folgendes Mini-Script liefert leider nicht die erwünschten Ergebisse:
[autoit]Do
[/autoit]
$RegKey = InputBox( "Eingabe", "Hier Registry Schlüssel einfügen:", Default, Default, 400, 130)
$RegeXed_find = StringRegExpReplace( $RegKey, "((?i)(HK)(.+)(\\\w*))", "$1") ;==> Pattern 1
$RegeXed_space = StringRegExpReplace( $RegKey, "(\s{0,}\\\s{0,})", "\") ;==> Pattern 2
$RegKey = MsgBox( 5, "", "Pattern 1: " & $RegeXed_find & @CRLF & @CRLF & "Pattern 2: " & $RegeXed_space)
Until $RegKey = 2
Exit
Ich vermute, mein Fehler liegt im Backreference Wert ("$1"). Dort habe ich aber alle möglichen Kombinationen versucht, z.B.:Auch für das Löschen von Leerzeichen vor und nach dem Backslash (\) habe ich ein Pattern erstellt, daß einwandfrei in RegexBuddy funktioniert (auch der Zeilenumbruch im letzten Beispiel wird entfernt), aber in Autoit schaff ichs nicht (Pattern 2 im Script):
[Blockierte Grafik: http://i.imgur.com/aiLcw.png]
Das läßt sich natürlich auch mit StringReplace bewerkstelligen, aber Regex wäre mir schon lieber...Habe ich irgenwo Fehler in den Pattern oder bin ich einfach nur unfähig, StringRegExpReplace richtig zu "bedienen"?

Eine weitere Frage hätte ich noch:
Gibts eine Möglichkeit, Text mit Zeilenumbruch per Rechtsklick aus der Zwischenablage in ein Inputfeld zu bekommen?
Das Einlesen mit ClipGet() in eine Variable und darauf folgendes Einfügen mit GUICtrlSetData klappt, Rechtsklick nicht.