Schnelles Kopieren/Markieren des gesamten Strings mit Sonderzeichen über Doppelklick

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Jakobus
Posts: 29
Joined: 01 Jul 2019, 13:26

Schnelles Kopieren/Markieren des gesamten Strings mit Sonderzeichen über Doppelklick

30 Jul 2019, 09:02

An die Freude von AutoHotKey,

gibt es eine Möglichkeit,
mit Doppelklick (oder wahlweise Einfach-Klick) auf linke Maustaste den gesamten String, zu markieren?

Leider reichen meine AHK Kenntnisse für eine Lösung nicht.

Oft steht der String in einer Email, in Excel oder im Programm-Code.

- Mal am Textanfang (eingerahmt zwischen Bildschirmrand bzw. einem Punkt bis zum Leerzeichen),
- im Text selbst (eingerahmt von Leerzeichen bis Leerzeichen),
- am Textende (eingerahmt von Leerzeichen bis Punkt) oder
- für sich alleine (eingerahmt von Leerzeichen bis Leerzeichen)

Gebraucht wird es für Artikel-Nummern, Variablen, Wörter mit Bindestrich,…

Microsoft/Office 2016 markiert leider nur die Buchstaben eines Wortes
und stoppt z.B. am Bindestrich, Komma oder Klammer.

Hier verschiedene Beispiele:

BZ45GAR2IHJK(AK
%Var2%
E-Mail
ABC54STR7IXYZ(BC,36
STRG+V

Mit Doppelklick werden nur die roten Zeichen markiert

Besonderheit - mit Feinmotorik in der Hand für kleine Textstellen

WENN der Cursor am String-Anfang steht,
UND die Shift-Taste gedrückt wird
UND am Textende die linke Maustaste per Doppelklick klickt,
DANN wird der gesamte String markiert.

Doch das ist nicht die gewünschte Lösung.

Gewünscht ist das "simple" Anklicken, welches die Zeichenkette komplett markiert,
um diese über STRG+C zu kopieren.

Danke für die Unterstützung im Voraus.
Last edited by Jakobus on 31 Jul 2019, 10:01, edited 1 time in total.
Nussbeisser
Posts: 45
Joined: 17 Jul 2019, 08:49

Re: Schnelle Markierung des gesamten Strings mit Sonderzeichen über Doppelklick

30 Jul 2019, 17:09

Schau mal, ob es dir das weiter hilft, markiert komplette Zeile und speichert es in die Zwischenablage, mit Word2010 getestet.

Code: Select all

#IfWinActive ahk_class OpusApp
~LButton::

MouseGetPos , Px, Py
ControlClick, x%Px% y%Py%, ahk_class OpusApp,,,, Pos
ControlSend , _WwG1, {Home}, ahk_class OpusApp
ControlSend , _WwG1, {Shift Down}{End}{Shift Up}, ahk_class OpusApp
ControlSend , _WwG1, {Ctrl Down}c{Ctrl  Up}, ahk_class OpusApp

#IfWinActive
Jakobus
Posts: 29
Joined: 01 Jul 2019, 13:26

Re: Schnelle Markierung des gesamten Strings mit Sonderzeichen über Doppelklick

31 Jul 2019, 09:58

Hallo Nussbeisser,

vielen Dank für den Code.
Der Code ist gut.
Staune sehr - als Neueinsteiger.

Doch weil der Code das Problem umgeht würde ich meine Anfrage gerne weiter stehen lassen.

Gewünscht ist das schnelle Kopieren bzw. Markieren eines komplexen Strings mit Sonderzeichen.
just me
Posts: 7404
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Schnelles Kopieren/Markieren des gesamten Strings mit Sonderzeichen über Doppelklick

01 Aug 2019, 04:34

Moin,

da gibt zumindest zwei große Probleme:

1. Du musst den "String" auf das Auftreten bestimmter Zeichen (Leerzeichen, Satzzeichen, etc.) untersuchen. Dafür muss ihn AHK zunächst einmal einlesen können.
2. Um den "String" einlesen zu können, muss AHK feststellen, in welcher Art von Steuerelement/Control sich der "String" befindet und evtl. auch wissen, von welchem Programm dieses angezeigt wird.

Je nach Konstellation braucht es evtl. unterschiedliche Vorgehensweisen, um den "String" in den Griff zu bekommen. Das mag mit einem erheblichen Programmieraufwand verbunden sein.
GEV
Posts: 844
Joined: 25 Feb 2014, 00:50

Re: Schnelles Kopieren/Markieren des gesamten Strings mit Sonderzeichen über Doppelklick

01 Aug 2019, 10:04

Probier dies:

Code: Select all

#If (A_Cursor = "IBeam") ; Der Mauszeiger steht über auswählbarem Text

	~LButton::
	If (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey <= DllCall("GetDoubleClickTime")) ; Doppelklick
	{
		Text_L := ""
		Text_R := ""
		clipboard := ""
		Send {Esc}{Shift Down}{Home}{Shift Up} ; Zeilen-Text links von Mauszeiger auswählen. Esc schließt das Kontextmenü in MS office
		Send {Ctrl Down}c{Ctrl  Up} ; ausgewählten Text kopieren
		Text_L := StrSplit(clipboard, A_Space , ".,")  ; Die Zwischenanlage in mehrere Teilzeichenketten aufteilen anhand der vorhandenen Leerzeichen. Punkte und Perioden weglassen.
		Text_L := Text_L[Text_L.Length()]  ; Die erste Teilzeichenkette VOR dem Cursor in die Variable Text_L speichern.
		Sleep, 300
		clipboard := ""
		Send {Shift Down}{End}{Shift Up} ; Zeilen-Text rechts vom Mauszeiger auswählen
		Send {Ctrl Down}c{Ctrl  Up}
		Text_R := StrSplit(clipboard, A_Space , ".,").1  ; Die erste Teilzeichenkette NACH dem Cursor in die Variable Text_R speichern.
		clipboard = %Text_L%%Text_R%
		ToolTip, %clipboard%
		click 2
		KeyWait, LButton
		Sleep, 1000
		If (A_Cursor = "IBeam") 
		click
		ToolTip
	}
	return

#If
Ich würde so etwas bevorzugen:

Code: Select all


; Rechtsclick mit gedrückter linken Maustaste nachdem Text mit der linken Maustaste ausgewählt wurde:
~LButton & RButton::
	Send {Esc}{Ctrl Down}c{Ctrl  Up} ; Esc schließt das Kontextmenü in MS office
	ToolTip, %clipboard%
	KeyWait, RButton
	Sleep, 1000
	ToolTip
return
Jakobus
Posts: 29
Joined: 01 Jul 2019, 13:26

Re: Schnelles Kopieren/Markieren des gesamten Strings mit Sonderzeichen über Doppelklick

01 Aug 2019, 12:17

Hallo GEV,

vielen Dank. Deine Lösung ist dicht dran.
Kurzes Feedback vorab.

Hatte erst mit dem Doppelklick gearbeitet - ohne die bevorzugte Variante drunter.

Meine Annahme war, nach dem Doppelklick wird der zu kopierende String komplett grau markiert.
Anstelle dessen erscheint das Popup-Fenster kurz.
Legt man mit STRG+V den Speicherinhalt ab, ist alles da.

Es gibt unterschiedliche Konflikte beim Kopieren von Inhalten aus Emails in Outlook 2016.

Sei es, dass man eine String aus der Betreff Zeile kopiert,
dann fehlt ein Teil oder der Text ergänzt sich mit weiteren Zeichen - aus Donnerstag wird DonnerDonnerstag
- oder -
wenn man die Email öffnet und aus dem Inhalt der Email selbst etwas mit Doppelklick markiert/kopiert,
dann schließt sich automatisch die bestehende Mail und es öffnet sich eine ganz andere Email.

Seltsam - den Effekt kann ich nicht erklären.
Kannst Du den Effekt nachstellen?

Es sieht aus,
als würde der Code bei Strings gefolgt von Tab-Zeichen oder bei HTML formatierten Text aus dem Tritt geraten?

Hingegen beim Kopieren/Markieren von Strings in Notepad hat der Code keine Probleme.

Mit der bevorzugten Variante braucht es eine Eingewöhnungszeit.
Linke Maustaste festhalten und dann die rechte drücken ist auf einer orthopädisch geformten Maus ungewohnt.
Ich selbst bevorzuge Doppelklick auf die linke Maustaste.

Hatte nicht die Zeit, mehr zu Testen.
Hoffe, die Beschreibung hilft Dir.
GEV
Posts: 844
Joined: 25 Feb 2014, 00:50

Re: Schnelles Kopieren/Markieren des gesamten Strings mit Sonderzeichen über Doppelklick

01 Aug 2019, 12:55

Jakobus wrote:
01 Aug 2019, 12:17
Es gibt unterschiedliche Konflikte beim Kopieren von Inhalten aus Emails in Outlook 2016.

Sei es, dass man eine String aus der Betreff Zeile kopiert,
dann fehlt ein Teil oder der Text ergänzt sich mit weiteren Zeichen - aus Donnerstag wird DonnerDonnerstag
- oder -
wenn man die Email öffnet und aus dem Inhalt der Email selbst etwas mit Doppelklick markiert/kopiert,
dann schließt sich automatisch die bestehende Mail und es öffnet sich eine ganz andere Email.

Seltsam - den Effekt kann ich nicht erklären.
Kannst Du den Effekt nachstellen?
Leider nicht, Ich habe Office 2010 und der Code funktioniert in allen Programmen außer in Excel (da muss ich zweimal nacheinander doppelklicken).
Wie verhält es sich wenn du das {Esc} oder die click Kommandos entfernst?

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: Bing [Bot] and 2 guests