1 (изменено: Botsy, 2021-01-10 01:56:52)

Тема: AHK: Отключение ПКМ во всех GUI ActiveX

Привет, подскажите как можно отключить пкм во всех gui activex ?

Пробовал следующее:
1) Отключал пкм, когда процесс этого окна был активен. В худшем случае так и оставлю, но лучше, чтобы в окне пкм не работал, а в других местах работал.


Gui, Parent: New, ,LB
Gui, Parent: -DPIScale
Gui, Parent: Margin, 0, 0
Gui, Parent: Add, ActiveX, w1080 h854 vWB, about:<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
WB.document.write(html)
....
Gui, Parent: Show

AHKPID := DllCall("GetCurrentProcessId")
Hotkey, IfWinActive, % AHKPID
Hotkey, RButton, Rbt_disabled, on

Rbt_disabled:
return

2) Отключал пкм только в родительском окне, вне окна пкм работал. Во всех дочерних окнах, пкм работает, а надо, чтобы тоже не работал.
Род. окно:


Gui, Parent: New, ,LB
Gui, Parent: -DPIScale +hwndID
Gui, Parent: Margin, 0, 0
Gui, Parent: Add, ActiveX, w1080 h854 vWB, about:<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
WB.document.write(html)
....
Gui, Parent: Show

global AHKID := ID

#If OverScreen(AHKID)
RButton::
return
#If

OverScreen(hwndID) {
    MouseGetPos,,, wID
return (wID == AHKID)
}

Доч. окно:


Gui, B: New, , Д
Gui, B: Margin, 0, 0
Gui, B: Add, ActiveX, w550 h350 vWBB, about:<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
WBB.document.write(html)
WBB.document.getElementById("ex").addEventListener("mouseup", Func("OnClose"))
Gui, Buy: Show

Не хотелось бы дублировать функцию и #if для каждого род. окна, т.к. их может быть много. Может есть какой-нибудь вариант ?
Буду благодарен за помощь или совет.

GD

2

Re: AHK: Отключение ПКМ во всех GUI ActiveX

#If IsCurrentProcess()
RButton::Return
#If
 
IsCurrentProcess() {
	Static AHKPID := DllCall("GetCurrentProcessId")
    MouseGetPos,,, WinID
	WinGet, WinPID, PID, ahk_id %WinID%
	Return (WinPID == AHKPID)
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Отключение ПКМ во всех GUI ActiveX

serzh82saratov Идеально, прям сочетание первого и второго способа. Спасибо!

GD