Markieren durch Doppelklick zwischen zwei Leerzeichen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Johnny R
Posts: 348
Joined: 03 Oct 2013, 02:07

Markieren durch Doppelklick zwischen zwei Leerzeichen

02 Apr 2014, 08:26

Jedes Windows-Programm reagiert offenbar anders auf den Doppelklick mit der Maus. Ich hätte gerne, daß systemübergreifend jedes (textorientierte) Programm auf den Doppelklick gleich reagiert und das Wort zwischen zwei Leerzeichen (bzw. Textbeginn und Textende) markiert, also alles andere wie Bindestriche, Schrägstriche, Satzzeichen etc. pp. als Trennzeichen unberücksichtigt läßt, bzw. diese als Wortbestandteil interpretiert.

Hat jemand eine grundsätzliche Idee, wie man das ggf. bewerkstelligen könnte?
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

02 Apr 2014, 10:54

Ja Klicks per Hotkey abfangen, wenn das aktive Fenster eine bestimmte Bedingung erfüllt.
In dem Hotkey schauen ob es sich um einen Doppelklick handelt, wenn nicht dann einen normalen Klick senden.
Wenn doch dann per MouseGetPos das HWND des Controls unter der Maus bestimmen, von diesem dann per ControlGetText den Text erhalten und Irgendwie über Messages die Position des Cursors erhalten.
Mit RegExMatch bestimmst du dann was markiert werden muss und markierst es dann per Message.
Recommends AHK Studio
Johnny R
Posts: 348
Joined: 03 Oct 2013, 02:07

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

02 Apr 2014, 22:20

und markierst es dann per Message
Wie kann ich "per Message markieren"?
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

02 Apr 2014, 23:30

Die Message 0xB1 wird gesendet um Text zu markieren.
http://ahkscript.org/boards/viewtopic.php?f=9&t=3052
Recommends AHK Studio
just me
Posts: 9458
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

03 Apr 2014, 01:30

nnnik wrote:Die Message 0xB1 wird gesendet um Text zu markieren. ...
... wenn es sich um ein Windows konformes Edit-Control handelt.
Johnny R
Posts: 348
Joined: 03 Oct 2013, 02:07

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

03 Apr 2014, 01:38

Vielen Dank! Aber meine Befehle

Code: Select all

SendMessage, 0xB1, 2, 10,,,Unbenannt - Editor
SendMessage, 0xB1, 2, 10,,,ahk_class Notepad
scheitern leider und markieren z. B. keinerlei in geöffnetem Notepad vorhandenen Text...
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

03 Apr 2014, 06:33

Das ist dann ein Fehler vom Control.
Da bleibt dir dann nichts anderes übrig, als mit Mausclicks, Tastendrücken zu arbeiten.
Recommends AHK Studio
just me
Posts: 9458
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

03 Apr 2014, 09:46

Das ist eine recht eigenwillige Syntax:

SendMessage, 0xB1, 2, 10,,,Unbenannt - Editor

SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]
Johnny R
Posts: 348
Joined: 03 Oct 2013, 02:07

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

03 Apr 2014, 11:10

Ernüchternd. Ich habe syntaktisch alles durchexerziert. Leider ohne Erfolg...
just me
Posts: 9458
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

03 Apr 2014, 11:47

Notepad möchte wohl wissen, für welches Control die Nachricht bestimmt ist:

Code: Select all

#NoEnv
SetBatchLines, -1

NED := "Edit1" ; Notepad Edit ClassNN - bekommst Du mit dem mitinstallierten 'Window Spy'

Run, Notepad.exe, , , PID
WinWaitActive, ahk_pid %PID%
SendInput, 12345678901234567890
Sleep, 200 ; lassen wir Notpad etwas Zeit, um das zu verdauen
; Die Nachricht arbeitet mit 0-basierten Zeichenpositionen, d.h. das erste Zeichen hat die Position 0
SendMessage, 0xB1, 2, 10, %NED% ; geht an das aktive Fenster
WinWaitClose
ExitApp
Johnny R
Posts: 348
Joined: 03 Oct 2013, 02:07

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

03 Apr 2014, 13:13

@just me, vielen Dank! Dein Script funktioniert. Mein etwas abgewandeltes Script funktioniert aber bei geöffneten und aktivierten Notepad immer noch nicht:

Code: Select all

^!z::
NED := "Edit1" ; Notepad Edit ClassNN - bekommst Du mit dem mitinstallierten 'Window Spy'
;Run, Notepad.exe, , , PID
;WinWaitActive, ahk_pid %PID%
SendInput, 12345678901234567890
Sleep, 200 ; lassen wir Notpad etwas Zeit, um das zu verdauen
; Die Nachricht arbeitet mit 0-basierten Zeichenpositionen, d.h. das erste Zeichen hat die Position 0
SendMessage, 0xB1, 2, 10, %NED% ; geht an das aktive Fenster
;WinWaitClose
;ExitApp
Return
Aber ich will Euch wirklich nicht nerven. Liegt sicher an mir. Laßt gut sein...
just me
Posts: 9458
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

04 Apr 2014, 00:40

...Liegt sicher an mir...
Nö, liegt sicher an mir! Ich habe AHK kaum einmal benutzt, um Fremdprogramme zu steuern. Die Aussage SendMessage, 0xB1, 2, 10, %NED% ; geht an das aktive Fenster ist einfach falsch. In meiner Version geht die Nachricht an das LastFoundWindow, und das ist wegen WinWaitActive eben Notepad.

Ändere Deine Version einfach in SendMessage, 0xB1, 2, 10, %NED%, A, wenn Du an ein aktives Notepad-Fenster sendest.
Johnny R
Posts: 348
Joined: 03 Oct 2013, 02:07

Re: Markieren durch Doppelklick zwischen zwei Leerzeichen

04 Apr 2014, 05:36

@just me, jetzt klappt das. Vielen Dank! Jetzt weiß ich wenigstens, wie ich das sonnige Wochenende mit dem Rest vertrödle...

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 61 guests