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?
Markieren durch Doppelklick zwischen zwei Leerzeichen
Moderator: jNizM
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
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.
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
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
Wie kann ich "per Message markieren"?und markierst es dann per Message
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
Die Message 0xB1 wird gesendet um Text zu markieren.
http://ahkscript.org/boards/viewtopic.php?f=9&t=3052
http://ahkscript.org/boards/viewtopic.php?f=9&t=3052
Recommends AHK Studio
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
... wenn es sich um ein Windows konformes Edit-Control handelt.nnnik wrote:Die Message 0xB1 wird gesendet um Text zu markieren. ...
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
Vielen Dank! Aber meine Befehle
scheitern leider und markieren z. B. keinerlei in geöffnetem Notepad vorhandenen Text...
Code: Select all
SendMessage, 0xB1, 2, 10,,,Unbenannt - Editor
SendMessage, 0xB1, 2, 10,,,ahk_class Notepad
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
Das ist dann ein Fehler vom Control.
Da bleibt dir dann nichts anderes übrig, als mit Mausclicks, Tastendrücken zu arbeiten.
Da bleibt dir dann nichts anderes übrig, als mit Mausclicks, Tastendrücken zu arbeiten.
Recommends AHK Studio
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
Das ist eine recht eigenwillige Syntax:
SendMessage, 0xB1, 2, 10,,,Unbenannt - Editor
SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]
SendMessage, 0xB1, 2, 10,,,Unbenannt - Editor
SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
Ernüchternd. Ich habe syntaktisch alles durchexerziert. Leider ohne Erfolg...
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
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
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
@just me, vielen Dank! Dein Script funktioniert. Mein etwas abgewandeltes Script funktioniert aber bei geöffneten und aktivierten Notepad immer noch nicht:
Aber ich will Euch wirklich nicht nerven. Liegt sicher an mir. Laßt gut sein...
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
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
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....Liegt sicher an mir...
Ändere Deine Version einfach in SendMessage, 0xB1, 2, 10, %NED%, A, wenn Du an ein aktives Notepad-Fenster sendest.
Re: Markieren durch Doppelklick zwischen zwei Leerzeichen
@just me, jetzt klappt das. Vielen Dank! Jetzt weiß ich wenigstens, wie ich das sonnige Wochenende mit dem Rest vertrödle...
Who is online
Users browsing this forum: No registered users and 61 guests