Попробовал с таймером, как сказано, тоже не помогает.
Решил заблокировать мышь путем создания неактивного полупрозрачного окна поверх окна Автокада (созданное окно захватывает мышь, Автокад не получает координаты курсора, а для работы колесика они нужны). Но, оказалось, что Автокад перехватывает курсор при вращении колесика. Так заблокировать колесико в окне Автокада тоже не получилось (хотя в других окнах блокируется, правда только в некоторых).
Но за-то так точно можно заблокировать движение мыши в активном окне (то есть курсор будет двигаться (в отличие от blockinput, если я правильно понял), но активное окно не будет получать координаты курсора). Тема уже другая, но близкая, поэтому решил здесь продолжить, чтобы не создавать новую. Блокировать таким образом мышь может быть нужно, например, при настройке чего-либо по положению курсора. Значение изменяемого при такой настройке параметра можно рассчитать как произведение максимального значения на a/b, где a - текущая координата курсора, b - соответствующий размер экрана (можно менять сразу два параметра по двум координатам). Сделал такую настройку для одного инструмента в Автокаде, но при настройке курсор вместе с изображением инструмента двигается, что плохо, и это как раз исправляется особой блокировкой мыши.
Если есть стандартное решение или просто другое решение для такой блокировки, напишите пожалуйста об этом. Ну, а если нет, может быть мои функции пригодятся другим участникам.
Вот сами функции блокировки и вариант их использования:
; блокировка мыши в заданной области
; (положение и размеры, цвет, прозрачность области блокировки)
mouseoff(x, y, w, h, color, transparent)
{
if !transparent
transparent=1
Gui, +Hwnd_mouseblock +LastFound +AlwaysOnTop -Caption +ToolWindow
Gui, Color, %color%
WinSet, Transparent, %transparent%,
Gui, Show, NoActivate x%x% y%y% w%w% h%h%
}
; включение мыши
mouseon()
{
global
if _mouseblock
{
Gui %_mouseblock%:Destroy
_mouseblock=
}
}
; горячие клавиши
f11:: ; включение / выключение блокировки для всего экрана
if _mouseblock
mouseon()
else
mouseoff(0, 0, a_screenwidth, a_screenheight, 0, 0)
return
#if _mouseblock
lbutton:: ; блокировка кнопок мыши
rbutton::
mbutton::
return