 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Geli Gast
|
Verfasst am: Di Nov 14, 2006 9:21 am Titel: Cursor in geöffneter Datei per AHK-Script bewegen |
|
|
Hallo allerseits,
vor wenigen Wochen bin ich per Zufall auf AHK gestoßen und bin total begeistert. Mittlerweile komme ich auch ganz gut voran, habe aber für das Folgende in den vielen öffentlich zugänglichen Scripts noch keine Lösung gefunden; was aber auch daran liegen kann, dass ich erst, wie gesagt, ganz am Anfang stehe: Lässt sich der normale Cursor (also nicht der Mauszeiger) per AHK-Script in einem geöffneten Dokument zu einer bestimmten Textpassage bewegen? Ich bitte um Nachsicht, wenn ich die Experten hier mit so was langweile.
Geli |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Di Nov 14, 2006 10:45 am Titel: |
|
|
| Zitat: | | Experten hier mit so was langweile | Mitnichten. DIe grundsätzliche Frage, wie machst du dies (als User)? Vermutung:
1) du identifizierst die Textpassage (visuell)
2) du bewegst den Cursor an die gewünschte Position
eine Vorgehensweise wäre die Suchfunktion des Editors anzutriggern, oder .. Alles auswählen (Strg+A) und mit StringGetPos die Postion des gewünschten Strings im Text ermitteln, anschließend den Cursor (re)plazieren = Strg+Pos1 (am Textanfang positonieren) und jump  |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1889 Wohnort: Österreich
|
Verfasst am: Di Nov 14, 2006 11:03 am Titel: |
|
|
@BoBo
Hast du die zweite Methode schon einmal probiert? Ich halte sie für annähernd unmöglich!
Viel leichter umsetzbar wäre die erste...:
Textstelle über die Suchfunktion auswählen und Cursor an Caret-Position setzen.
Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Di Nov 14, 2006 11:32 am Titel: |
|
|
| Code: | !y:: ; Alt+y
ControlGetText, Text, Edit1, SearchWithinText.txt - Notepad
StringGetPos, Pos, Text, ganz am Anfang stehe: ; gesuchte Passage
ControlSend, Edit1, ^{Home}{Right %Pos%}, SearchWithinText.txt - Notepad
WinActivate, SearchWithinText.txt - Notepad
Return |
SearchWithinText.txt
| Zitat: | Hallo allerseits,
vor wenigen Wochen bin ich per Zufall auf AHK gestoßen und bin total begeistert. Mittlerweile komme ich auch ganz gut voran, habe aber für das Folgende in den vielen öffentlich zugänglichen Scripts noch keine Lösung gefunden; was aber auch daran liegen kann, dass ich erst, wie gesagt, ganz am Anfang stehe: Lässt sich der normale Cursor (also nicht der Mauszeiger) per AHK-Script in einem geöffneten Dokument zu einer bestimmten Textpassage bewegen? Ich bitte um Nachsicht, wenn ich die Experten hier mit so was langweile.
Geli |
Notepad = Editor !  |
|
| Nach oben |
|
 |
fredchf
Anmeldedatum: 18.09.2006 Beiträge: 716 Wohnort: Deutschland
|
Verfasst am: Di Nov 14, 2006 11:14 pm Titel: |
|
|
hallo bobo,
ich bin begeistert.sowas geht auch? ich habe es auch mal probiert,funktioniert.
allerdings wird das bei längeren texten wohl zur geduldsprobe. _________________ Mit freundlichen Grüßen
fredchf |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Di Nov 14, 2006 11:27 pm Titel: |
|
|
| Zitat: | | allerdings wird das bei längeren texten wohl zur geduldsprobe. | Dem ist so. Doch mit SetBatchLines, -1 lässt es sich wohl noch etwas kitzeln  |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1889 Wohnort: Österreich
|
|
| Nach oben |
|
 |
Geli Gast
|
Verfasst am: Mi Nov 15, 2006 7:41 am Titel: Cursor in geöffneter Datei per AHK-Script bewegen |
|
|
Hallo ihr Helfer,
Die Methode funktioniert tatsächlich, aber sehr, sehr langsam. Werde dann wohl doch den Weg über den Suchen-Dialog gehen, obwohl ich das eigentlich vermeiden wollte, da mein Script mit verschiedenen Editoren laufen soll, je nachdem, welcher in der Ini-Datei vorgegeben ist. Aber ich kriege das schon hin.
Danke und Grüße
Geli
| Zitat: | ich bin begeistert.sowas geht auch? ich habe es auch mal probiert,funktioniert.
allerdings wird das bei längeren texten wohl zur geduldsprobe. |
|
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Mi Nov 15, 2006 7:57 am Titel: |
|
|
| Zitat: | | Die Methode funktioniert tatsächlich, aber sehr, sehr langsam | Die Herausforderung war es, Thalons 'Unmöglichkeits-These' zu wiederlegen. Die Suchfunktion wäre auch mein Favorit.  |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1889 Wohnort: Österreich
|
Verfasst am: Mi Nov 15, 2006 9:53 am Titel: |
|
|
| Zitat: | Die Herausforderung war es, Thalons 'Unmöglichkeits-These' zu wiederlegen. Wink Die Suchfunktion wäre auch mein Favorit. | Was sie auch ist, außer für kurze Texte. Ich habe es an die 7627.ste Stelle fahren lassen und was sehe ich? Der hat sich doch glatt um 180 Zeichen verhaut
Nämlich ca 1 pro Zeile.
Der Grund ist folgender:
Der Editor speichert jeden Zeilenumbruch als 2 Zeichen, welche auch mitgezählt werden. Ein Druck nach Rechts "überspringt" quasi ein Zeichen, damit entsteht pro Zeile ein "Offset" von einem Zeichen...
Folgende Methode funktioniert schneller, Voraussetzung ist ausgeschalteter Zeilenumbruch (kann man automatisieren, müsste nur den aktuellen Check-Status auslesen...) | Code: | !y:: ; Alt+y
Zeile =
Pos =
ControlGetText, Text, Edit1, SearchWithinText.txt - Editor
Loop, Parse, Text, `n, `r
{
Pos := InStr(A_LoopField, "HexeditMX.exe") ;HexeditMX.exe war der Suchtext
if Pos > 0
{
Zeile := A_Index - 1
Pos --
break
}
}
if Zeile !=
{
ControlSend, Edit1, ^{Home}{Down %Zeile%}{Right %Pos%}, SearchWithinText.txt - Editor
}
Return | Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Mi Nov 15, 2006 10:17 am Titel: |
|
|
| Zitat: | | Der Editor speichert jeden Zeilenumbruch als 2 Zeichen, welche auch mitgezählt werden. | Was mir zwar aufgefallen ist (hatte ursprünglich ne MsgBox 'zwischengeschaltet'), aber sich beim Zwergtext nicht ausgewirkt hatte (weil A_LoopReadLine den EOL anders interpretiert?). Danke für die Klärung. |
|
| Nach oben |
|
 |
halweg
Anmeldedatum: 05.01.2006 Beiträge: 872 Wohnort: Dresden
|
Verfasst am: Mi Nov 15, 2006 10:17 pm Titel: |
|
|
Falls noch an der Suchfunktion Interesse besteht: so würde die Zeile dazu für Notepad aussehen: | Code: | | SEND, ^{HOME}^f%label%{ENTER}{ESC} |
|
|
| Nach oben |
|
 |
lamer
Anmeldedatum: 15.10.2006 Beiträge: 64
|
Verfasst am: Mi Nov 15, 2006 11:09 pm Titel: |
|
|
hi,
ich habe mal versucht damit zu markieren,
| Code: | !y:: ; Alt+y
Run, SearchWithinText.txt
WinWait, SearchWithinText.txt - Editor,
IfWinNotActive, SearchWithinText.txt - Editor, , WinActivate, SearchWithinText.txt - Editor,
WinWaitActive, SearchWithinText.txt - Editor,
Zeile1 =
Pos1 =
Zeile2 =
Pos2 =
ControlGetText, Text, Edit1, SearchWithinText.txt - Editor
Loop, Parse, Text, `n, `r
{
Pos1 := InStr(A_LoopField, "ab hier")
if Pos1 > 0
{
Zeile1 := A_Index - 1
Pos1 --
break
}
}
ControlGetText, Text, Edit1, SearchWithinText.txt - Editor
Loop, Parse, Text, `n, `r
{
Pos2 := InStr(A_LoopField, "markieren")
if Pos2 > 0
{
Zeile2 := A_Index - 1
Pos2 --
break
}
}
; if Zeile1 !=
{
ControlSend, Edit1, ^{Home}{Down %Zeile1%}{Right %Pos1%}{SHIFTDOWN}{Home}{Down %Zeile2%}{Right %Pos2%}{SHIFTUP}, SearchWithinText.txt - Editor
}
Msgbox, Zeile 1:%Zeile1%`nPosition 1: %Pos1%`nZeile 2: %Zeile2%`n Position 2: %Pos2%
Return | SearchWithinText.txt | Zitat: | | diesen text ab hier das auch bis hier markieren |
|
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1889 Wohnort: Österreich
|
Verfasst am: Do Nov 16, 2006 9:20 am Titel: |
|
|
Weiß zufällig jemand, wie man die GOTO-Funktion vom Notepad freischaltet?
Die ist bei mir immer ausgegraut, weiß allerdings dass ich sie auch schon einmal genutzt habe...
@Geli
Wofür willst du die Maus dort eigentlich haben??
Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
haichen Gast
|
Verfasst am: Do Nov 16, 2006 11:58 am Titel: |
|
|
@Thalon
Gehe zu... ist möglich wenn der Zeilenumbruch ausgeschaltet ist.
 |
|
| 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
|