 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Heplu Gast
|
Verfasst am: Mi Jul 11, 2007 10:34 pm Titel: Geschweifte Klammern u.ä. aus der Zwischenablage einfügen |
|
|
Für das Einfügen der Zwischenablage auf der DOS-Konsole mit Ctrl-V hatte ich dieses kleine Skript geschrieben:
| Code: |
#IfWinActive ahk_class ConsoleWindowClass
^v::SendInput, %Clipboard%
#IfWinActive
|
Das funtionierte recht gut, aber wenn die Zwischenablage so etwas enthielt:
| Code: | | Text{14264454-AB47D-554388-888}Text | ..., dann fehlte beim Einfügen der Text zwischen den "Sonderzeichen" { und }. Andere Sonderzeichen wurden einfach verschluckt (#, +, !).
Die Lösung nach einigem Probieren sieht jetzt so aus:
| Code: |
#IfWinActive ahk_class ConsoleWindowClass
^v::
Zwischen= %Clipboard%
stringReplace, Zwischen, Zwischen, {, {}, All
stringReplace, Zwischen, Zwischen, }, {}}, All
stringReplace, Zwischen, Zwischen, #, {#}, All
stringReplace, Zwischen, Zwischen, !, {!}, All
stringReplace, Zwischen, Zwischen, +, {+}, All
stringReplace, Zwischen, Zwischen, ^, {^}, All
SendInput, %Zwischen%
return
#IfWinActive
|
Mein Problem war die erste Ersetzung: Ich hätte erwartet, dass es so hätte gehen müssen:
| Code: | | stringReplace, Zwischen, Zwischen, {, {{}, All |
Dann wird aber die öffnende Klammer nicht eingefügt.
Warum ist das so? |
|
| Nach oben |
|
 |
msgbox
Anmeldedatum: 05.05.2007 Beiträge: 754 Wohnort: C:\
|
Verfasst am: Do Jul 12, 2007 9:32 am Titel: |
|
|
Ich glaube mal du musst du klammer escapen. Schau mal HIER
oder benutzer das zeichen was du vor die klammer setzt
|
|
| Nach oben |
|
 |
Stefan
Anmeldedatum: 24.07.2006 Beiträge: 14
|
Verfasst am: Do Jul 12, 2007 2:49 pm Titel: |
|
|
> Für das Einfügen der Zwischenablage auf der DOS-Konsole mit Ctrl-V
> hatte ich dieses kleine Skript geschrieben
Ideen gibt's
Danke Heplu, sehr nützlich, das.  _________________ Stefan Always On The Side Of Life ... |
|
| Nach oben |
|
 |
msgbox
Anmeldedatum: 05.05.2007 Beiträge: 754 Wohnort: C:\
|
Verfasst am: Do Jul 12, 2007 7:48 pm Titel: |
|
|
| Stefan hat Folgendes geschrieben: | | > Für das Einfügen der Zwischenablage auf der DOS-Konsole mit Ctrl-V |
Dos...
| Code: | Clipboard = Dein text
msgbox, jetzt ist im clipbaord "%clipboard% |
|
|
| Nach oben |
|
 |
Heplu Gast
|
Verfasst am: Do Jul 12, 2007 10:19 pm Titel: |
|
|
Nochmal nachgedacht, mit msgbox debuggt...
Die erste Ersetzung
| Code: |
stringReplace, Zwischen, Zwischen, {, {}, All
|
macht aus {Hallo} {}Hallo}.
Die zweite Ersetzung
| Code: |
stringReplace, Zwischen, Zwischen, }, {}}, All
|
macht aus {}Hallo} {{}}Hallo{}}.
Die Ausgabe mit SendInput funktioniert zufällig, vor dem Hallo steht aber jetzt eine schließende geschweifte Klammer zuviel, die wohl einfach ignoriert wird.
Die Lösung heißt jetzt für mich: Zunächst die schließenden Klammern durch zwei Zeichen ersetzen (z.B. durch t}, dann die öffnenden durch {{}, dann die sozusagen gemerkten ursprünglichen schließenden Klammern (erkennbar an dem davorstehenden t) durch {}} .
Das komplette Skript mit den restlichen Sonderzeichen (gibt es noch mehr?), die kein Problem sind, da sie nicht ihrerseits in den Entwertungszeichen vorkommen:
| Code: |
#IfWinActive ahk_class ConsoleWindowClass
^v::
Zwischen = %Clipboard%
stringReplace, Zwischen, Zwischen, }, t}, All
stringReplace, Zwischen, Zwischen, {, {{}, All
stringReplace, Zwischen, Zwischen, t}, {}}, All
stringReplace, Zwischen, Zwischen, #, {#}, All
stringReplace, Zwischen, Zwischen, !, {!}, All
stringReplace, Zwischen, Zwischen, +, {+}, All
stringReplace, Zwischen, Zwischen, ^, {^}, All
SendInput, %Zwischen%
return
#IfWinActive
|
Das Problem wird ausgelöst durch die "Paarigkeit" der Entwertungszeichen, hätte man z.B. den Backslash als Entwertungszeichen, könnte man jedes Sonderzeichen einfach so entwerten -- auch den Backslash.
Das Fenster der neuen Windows-Kommandozeile "PowerShell" hat übrigens auch die ahk_class ConsoleWindowClass, hier hilft das Skript also auch.
Wenn jemand eine gute Idee für das Kopieren aus der DOS-Box heraus hat, so bin ich sehr interessiert. Was es so schwierig macht, ist wohl, dass AutoHotkey nicht den Inhalt der DOS-Box lesen kann. |
|
| Nach oben |
|
 |
Stefan
Anmeldedatum: 24.07.2006 Beiträge: 14
|
Verfasst am: Fr Jul 13, 2007 7:19 am Titel: |
|
|
> Wenn jemand eine gute Idee für das Kopieren aus der DOS-Box heraus hat,
Dafür gibt ein kleines Tool => cb.exe
Download über Google => cb.exe autohotkey wiki
cb.exe in einen Ordner im Suchpfad kopieren (zB %SystemRoot%)
Aufruf Beispiel:
C:\>dir /b |cb
Rot = Standard DOS Befehl
Dann ein Pipe | (Alt+124) Das Ergebnis der Aktion links der Pipe wird als Eingabe an den Befehl rechts der Pipe übergeben
....... (zumindest Standardmässig, also ohne Redirections)
Blau = cb.exe
--
Edit:
Oh das Thema gabs schon oft, schau mal:
http://www.google.de/search?hl=de&q=cb.exe+autohotkey+wiki+&btnG=Suche&meta=
--
http://www.autohotkey.com/docs/FAQ.htm
Alternatively, there is a small freeware utility cb.zip (4 KB) that captures
up to 512 KB of output from a command or program. The text is captured
to the clipboard, which a script can access via the clipboard variable.
http://www.autohotkey.com/misc/cb.zip _________________ Stefan Always On The Side Of Life ... |
|
| Nach oben |
|
 |
Heplu Gast
|
Verfasst am: Fr Jul 13, 2007 12:53 pm Titel: |
|
|
| Stefan hat Folgendes geschrieben: | > Wenn jemand eine gute Idee für das Kopieren aus der DOS-Box heraus hat,
Dafür gibt ein kleines Tool => cb.exe
|
Vielen Dank für den Hinweis. Das Tool ist sicher hilfreich, wenn man rechtzeitig weiß, dass man etwas in die Zwischenablage schieben will.
Bei der täglichen Arbeit könnte ich etwas anderes gut gebrauchen: In der DOS-Box beim täglichen interaktiven Benutzen ohne die Maus markieren und das Markierte kopieren zu können, wie z.B. in Notepad.
Das erste Problem dabei ist schon, das zu markieren, was dann kopiert werden soll.
Markieren kann man über Alt-Leertaste, dann im Menü auf Bearbeiten, dann auf Markieren.
Dann ist die "Markiermarke" allerdings oben links im Fenster, und man muss mit den Pfeiltasten an den gewünschten Ort, dann mit Umschalt+Pfeiltasten markieren.
Sinnvoll wäre in meinen Augen, dass das Markieren an der aktuellen Cursorposition beginnt, doch um das mit AutoHotkey zu machen, müsste AutoHotkey Zugriff auf die Cursorposition (welche Zeile und Spalte des Fenstertextes) und dann fürs Kopieren auch auf den Fenstertext haben. Im Windows Spy wird aber vom DOS-Fenster nichts an Inhalt erkannt. |
|
| Nach oben |
|
 |
msgbox
Anmeldedatum: 05.05.2007 Beiträge: 754 Wohnort: C:\
|
Verfasst am: Fr Jul 13, 2007 12:59 pm Titel: |
|
|
was redet ihr alle aufeinmal von dos? wir sind im einen AHK board  |
|
| Nach oben |
|
 |
Obi-Wahn
Anmeldedatum: 19.04.2006 Beiträge: 651 Wohnort: Wien
|
Verfasst am: Fr Jul 13, 2007 1:00 pm Titel: |
|
|
Y the hell verwendest du nicht den Quick edit Modus im cmd?
Gehst du auf: Eigenschaften (Alt - Space --> Eigenschaften) -> Optionen und markierst bei den Bearbeitungsoptionen den "Quick Edit Modus" und "Einfügemodus".
Markieren geht dann über die Linke maustaste (Klicken und Ziehen)
Kopieren aus der cmd per Rechte Maustaste
Einfügen in die cmd per Rechte Maustaste.
Oder meintest du was anderes als cmd.exe?!? _________________ Garten ist eine Kunstnatur
Das Leben ist nicht fair. Es ist nur fairer als der Tod, das ist alles.
Obi-Wahns Codeschnipsel @ securityvision.ch |
|
| Nach oben |
|
 |
Heplu Gast
|
Verfasst am: Fr Jul 13, 2007 4:19 pm Titel: |
|
|
| Obi-Wahn hat Folgendes geschrieben: | Y the hell verwendest du nicht den Quick edit Modus im cmd?
|
Den Quick-Edit-Modus verwende ich ja (beim Kopieren notgedrungen, beim Einfügen manchmal), aber dazu ist immer ein Griff zur Maus nötig.
Ctrl-V und Ctrl-C sind vielen in Fleisch und Blut übergegangen, die Griffe scheitern aber ohne AHK-Hilfe im Fenster der cmd.exe.
@msgbox: Auch cmd.exe ist ein Windows-Programm, und bei AHK suche ich eine Lösung, die Schwächen des Programms zu beheben. Habe ich ja auch zur Hälfte gefunden... |
|
| Nach oben |
|
 |
HePlu Gast
|
Verfasst am: Fr Okt 19, 2007 4:24 pm Titel: |
|
|
Inzwischen dazugelernt.
So geht das Einfügen auch mit Sonderzeichen ja viel leichter:
| Code: |
#IfWinActive ahk_class ConsoleWindowClass
^v::SendInput {Raw}%Clipboard%
#IfWinActive
|
|
|
| Nach oben |
|
 |
BoBo¨ Gast
|
Verfasst am: Fr Okt 19, 2007 6:09 pm Titel: |
|
|
Soweit ich mich erinnere funzt die DOSBox mit ASCII-Zeichensatz, während deine Zeichen einem erweiterten Zeichensatz angehören (ANSI, oder?)  |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|