Что нового

Как заблокировать зум по ctrl колесико мыши в определенном окне?

reset86

Новичок
Сообщения
47
Репутация
0
Блокировка зума по комбинациям клавиш ctrl +- в коде, плюс обнуление до 100% при запуске. А как заблокировать зум по ctrl колесико мыши?

Это пример кода, я использую другой браузер (chromium в режиме окна) и там много чего еще, но в данном примере оно не нужно. В IE работает не очень правильно, но мне и IE и не нужен.
Код:
#Include <HotKey.au3>

Opt('WinTitleMatchMode', 3)
Opt('WinWaitDelay', 0)

Run("C:\Program Files\Internet Explorer\iexplore.exe")

$hWnd = WinWait("Яндекс", "", 5)
;;;; Яндекс домашняя, как пример

Global Const $VK_OEM_PLUS = 0xBB
_HotKey_Assign(BitOR($CK_CONTROL, $VK_OEM_PLUS), '_blockxx', '', $hWnd)

Global Const $VK_OEM_MINUS = 0xBD
_HotKey_Assign(BitOR($CK_CONTROL, $VK_OEM_MINUS), '_blockxx', '', $hWnd)

Send("^0")

While 1

WEnd

Func _blockxx()
EndFunc
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Как вариант:
Код:
#include "MouseOnEvent.au3"

HotKeySet("{ESC}", "_Quit")

_MouseSetOnEvent($MOUSE_WHEELSCROLLDOWN_EVENT, "_MouseWheel_Events")

While 1
	Sleep(100)
WEnd

Func _MouseWheel_Events($iEvent)
	Switch $iEvent
        Case $MOUSE_WHEELSCROLLDOWN_EVENT
            Send('{DOWN 3}')

	EndSwitch
	Return $MOE_BLOCKDEFPROC ;Block
EndFunc

Func _Quit()
	Exit
EndFunc

https://autoit-script.ru/index.php/topic,198.0.html
 
A

Alofa

Гость
Код:
#include <MouseOnEvent.au3>
#include <Misc.au3>

$hWnd = WinWaitActive('[REGEXPCLASS:.*Chrome.*]') ; Ждем активации окна Chrome

_MouseSetOnEvent($MOUSE_WHEELSCROLLDOWN_EVENT, '_WHEELSCROL', $hWnd, $MOE_BLOCKDEFPROC)
_MouseSetOnEvent($MOUSE_WHEELSCROLLUP_EVENT, '_WHEELSCROL', $hWnd, $MOE_BLOCKDEFPROC)

While Sleep(200)
WEnd

Func _WHEELSCROL($iEvent)
	If Not _IsPressed('11') Then
		Switch $iEvent
			Case $MOUSE_WHEELSCROLLDOWN_EVENT
				MouseWheel('DOWN')
			Case $MOUSE_WHEELSCROLLUP_EVENT
				MouseWheel('UP')
		EndSwitch
	EndIf
EndFunc   ;==>_WHEELSCROL
 
Автор
reset86

reset86

Новичок
Сообщения
47
Репутация
0
Alofa, спасибо, но твой вариант жутко лагает, мышь как в киселе. И "REGEXPCLASS:.*Chrome.*" не перехватывает Chrome. Я ловлю Chrome, по заголовку страницы (title).

От идеи использовать HotKey.au3, пришлось отказаться, работает не так хорошо как при использование BlockInputEx.

Проверил, вот так работает, мышка не тормозит, блокируется только в нужном окне, вылетов скрипта нет. Вопрос решен.

Код:
#include <BlockInputEx.au3>
#include <MouseOnEvent.au3>
Local $bDown = False, $bUp = True, $IsPressed
; $hWnd = Нужное окно, заголовок страницы в браузере, как отловить заголовок, ищите  на форуме.
Send("^0") ; Сброс окна при запуске до 100%
Sleep(30)
While 1
$IsPressed = _IsPressed("11")
If $IsPressed And Not $bDown Then
$bDown = True
$bUp = False
_BlockInputEx(3,'','{+}|{-}|{NUMPADADD}|{NUMPADSUB}', $hWnd)
_MouseSetOnEvent($MOUSE_WHEELSCROLL_EVENT, "__fake", $hWnd, 1)
ElseIf Not $IsPressed And Not $bUp Then
$bDown = False
$bUp = True
_BlockInputEx(0)
_MouseSetOnEvent($MOUSE_WHEELSCROLL_EVENT)
Sleep(10)
EndIf
WEnd
 
Верх