ich möchte das mein Skript beim Klick in die Editierzeile den Inhalt an die letzte Cursorposition einfügt.
Jetzt sind mir aber 2 Besonderheiten beim erstellen des Skriptes aufgefallen.
1. wenn ich nach klick ein SEND ausführen lassen , behält diese Zeile den Zustand gedrückte Linke Maustaste und ich kann auch wenn ich in einem anderen Fenster gearbeitet habe, wieder ins Editfeld gehen und je nach Mausposition werden mehr oder weniger Zeichen markiert.
2. wenn ich TOOLTIP nutze tritt das gleiche Phänomen auf.
Liegt es vielleicht an der Methode?
Code: Select all
OnMessage(0x201, "WM_LBUTTONDOWN")
Ich habe das jeweils für Zeile 3 SENDund Zeile 4 TOOLTIP zum testen hinterlegt.
Jemand eine Idee oder Anregung?
Hier jetzt der Code:
Code: Select all
;noch im werden
; zu tun:
; - doku des codes
; - gebrauchanweisung
; - klick auf (edit) zeile soll inhalt in letzter Anwendung an Cursor stelle einfügen
#SingleInstance
Gui, +AlwaysOnTop
Gui, Add, Edit, vclip1 ReadOnly HWNDhedit1 W180, Placeholder1
Gui, Add, Edit, vclip2 ReadOnly HWNDhedit2 W180, Placeholder2
Gui, Add, Edit, vclip3 W180 HWNDhedit3, 012345678901234567890
Gui, Add, Edit, vclip4 ReadOnly W180 HWNDhedit4, Placeholder4
Gui, Add, Button, gButtonOk , ok ; für testzwecke
Gui, Show, X1600 Y0
OnMessage(0x201, "WM_LBUTTONDOWN") ; 0x201 = lbuttondown
;OnMessage(0x1C, "WM_first") ; nur zum testen 0x200 = mousemove first
;WM_MOUSELEAVE = 0x2A3
;OnMessage(WM_ACTIVATEAPP := 0x1C, "OnActivate")
OnClipboardChange("ClipChanged")
return
~LButton::
MouseGetPos, xpos1, ypos1
return
; und automatisch kopieren
~LButton Up::
MouseGetPos, xpos2, ypos2
if ( (xpos1 - xpos2 <> 0) or (ypos1-ypos2 <> 0))
{
Send ^c
}
return
ButtonOk: ; nur zu testzwecken
WinGetActiveTitle, Title
WinHide %Title%
send hello
WinShow %Title%
return
ClipChanged(Type) {
GuiControlGet,zwischen,, clip3
guicontrol,, clip4, %zwischen%
GuiControlGet,zwischen,, clip2
guicontrol,, clip3, %zwischen%
GuiControlGet,zwischen,, clip1
guicontrol,, clip2, %zwischen%
guicontrol,, clip1, %clipboard%
;ToolTip Clipboard data type: %Type%
; Sleep 1000
; ToolTip ; Turn off the tip.
}
WM_first(wParam, lParam,msg, hwnd) ; testzwecken
{
; WinGet Last, ID
; WinActivate ahk_id %Last%
;msgbox % DllCall("GetForegroundWindow")
ToolTip Clipboard data type: %Type%
Sleep 1000
ToolTip ; Turn off the tip.
}
WM_LBUTTONDOWN(wParam, lParam,msg, hwnd )
{
global
if (hwnd = hedit2) {
;PostMessage, 0xB1, 0, -1,, ahk_id %hedit2% ; 0xB1 = EM_SEL < -- woher?
GuiControlGet,zwischen,, clip2
clipboard = %zwischen%
;send ^v
}
if (hwnd = hedit3) {
;PostMessage, 0xB1, 0, -1,, ahk_id %hedit3% ; 0xB1 = EM_SEL < -- woher?
GuiControlGet,zwischen,, clip3
WinGetActiveTitle, Title
; WinHide %Title%
send %zwischen%
; WinShow %Title%
; PostMessage, 0xB1, 0, -1,, ahk_id %hedit3% ; 0xB1 = EM_SEL < -- woher?
}
if (hwnd = hedit4) {
ToolTip hallo %hwnd%
Sleep 100
ToolTip ; Turn off the tip.
;PostMessage, 0xB1, 0, -1,, ahk_id %hedit4% ; 0xB1 = EM_SEL < -- woher?
;WinActivate
}
;ToolTip hallo %hwnd%
;Sleep 100
;ToolTip ; Turn off the tip.
}
GuiClose:
ExitApp