Тема: AHK: Контекстное меню Gui Edit
Скрипт после запуска меняет контекстное меню для Edit, но при переключении окон и возвращении на окно Gui - возвращается контекстное меню по умолчанию. В чем причина?
Gui, +AlwaysOnTop +ToolWindow hwndMainWin -dpiscale
Gui, Color, F5F5F5
Gui, Font, S11, Tahoma
Gui, Add, Edit, Limit23 w250 vn hwndhEdit
obj := {h: hEdit}
obj.f := fn := Func("SetDots").Bind(obj)
GuiControl, +g, %hEdit%, % fn
Gui, Show,,
Gosub, LOAD_MENUS ;!!
Gosub, LOADHOTKEYS ;!!
Return
LOADHOTKEYS:
hotkey, IfWinActive, ahk_id %MainWin%
hotkey, RButton, RButton_Down
RETURN
RButton_Down:
KeyWait, RButton
MouseGetPos,,,, hCtrl, 2
If (hCtrl = HEdit)
Menu, EditMenu, Show
Return
LOAD_MENUS:
Menu, EditMenu, Add, Вырезать, ContextCut
Menu, EditMenu, Add, Копировать, ContextCopy
Menu, EditMenu, Add, Вставить, ContextPaste
Menu, EditMenu, Add, Удалить, ContextDelete
Menu, EditMenu, Add
Menu, EditMenu, Add, Выделить всё, ContextSelectAll
Return
ContextCut:
ControlSend, Edit1, ^{sc2D}, ahk_id %MainWin%
return
ContextCopy:
ControlSend, Edit1, ^{sc2E}, ahk_id %MainWin%
return
ContextPaste:
ControlSend, Edit1, ^{sc2F}, ahk_id %MainWin%
return
ContextDelete:
ControlSend, Edit1, {sc153}, ahk_id %MainWin%
return
ContextSelectAll:
ControlSend, Edit1, ^{sc1E}, ahk_id %MainWin%
return
GuiClose:
ExitApp
ButtonCopy:
Clipboard := RegExReplace(ok,"`n", " ")
Return
SetDots(obj) {
global
GuiControl, -g, % obj.h
GuiControlGet, num,, % obj.h
num := StrReplace(num, " ")
GuiControl,, % obj.h, % RegExReplace(num, "\d(?=(\d{3})+$)", "$0 ")
Send {End}
fn := obj.f
GuiControl, +g, % obj.h, % fn
}
return