Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
Суть проблемы: мышка начала делать двойные-тройные клики левой кнопкой и средней при однократном нажатии. Вот думаю как бы эти клики отфильтровать и убрать лишние клики. Как это можно решить с помощью autoit ?
А если захотите сделать двойной клик, то чего будете делать?
Может не стоит мучаться и поменять мышку?
Хотя в инете полно рецептов как можно мышку вылечить.
Вообще, есть уже готовая утилита, ищите как "Mouse Double Click Fix". Можно написать и на AutoIt, что-то типа этого
Код:
#Include <WinAPI.au3>
#NoTrayIcon
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 3)
Global $Timer = 0
$hDll = DllCallbackRegister('_MouseProc', 'lresult', 'int;wparam;lparam')
$pDll = DllCallbackGetPtr($hDll)
$hMouseProc = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, $pDll, _WinAPI_GetModuleHandle(0), 0)
If Not $hMouseProc Then
Exit 1
EndIf
OnAutoItExitRegister('_AutoItExit')
TrayItemSetOnEvent(TrayCreateItem('Exit'), '_Exit')
TraySetClick(8)
If Not @compiled Then
TraySetIcon(@ScriptDir & '\Mouse.ico')
Else
TraySetIcon(@ScriptFullPath)
EndIf
TraySetToolTip('LBMouseFix')
While 1
Sleep(1000)
WEnd
Func _Exit()
Exit 0
EndFunc ;==>_Exit
Func _MouseProc($iCode, $wParam, $lParam)
If $iCode > -1 Then
Switch $wParam
Case 0x0201 ; $WM_LBUTTONDOWN
If ($Timer) And (TimerDiff($Timer) < 20) Then
$Timer = 0
Return -1
EndIf
Case 0x0202 ; $WM_LBUTTONUP
$Timer = TimerInit()
Case Else
EndSwitch
EndIf
Return _WinAPI_CallNextHookEx(0, $iCode, $wParam, $lParam)
EndFunc ;==>_MouseProc
Func _AutoItExit()
_WinAPI_UnhookWindowsHookEx($hMouseProc)
EndFunc ;==>_AutoItExit
Проблема только в том, что AutoIt будет подтормаживать работу мыши, что чревато выгрузкой хука из системы. В любом случае, скрипт нужно подстраивать под индивидуальное поведение мыши. Повторные клики могут быть как при нажатии кнопок, так и при их отпускании.
Но несмотря на все эти грабли, я рекомендую первым делом разобрать мышь и капнуть капельку медицинского спирта на лапку нерабочего микроконтакта (белая выпуклая полоска, расположенная на черном корпусе элемента), а затем многократно пощелкать, чтобы спирт проник внутрь и, возможно, прочистил контакты. Если это не поможет (50%), то можно заменить микроконтакт на аналогичный, взятый из другой мыши, или, например, с боковой или средней кнопки, т.к. они мало используются. Только нужно учесть, что в зависимости от особенностей конструкции мыши, микроконтакты могут иметь разное усилие нажатия. Если руки растут из очень правильного места, то есть вариант разобрать микроконтакт и прочистить медные контакты вручную. Ну а так, покупайте новую мышь.
Добавлено:
Сообщение автоматически объединено:
edyapd сказал(а):
А если захотите сделать двойной клик, то чего будете делать?
Двойной клик от повторного нажатия фильтруется временем повтора. Например, за 20 мс вы как бы не старались, но все равно не сможете сделать двойной клик. Если мне память не изменяет, то у меня получалось делать двойной клик примерно за 50 мс (время между нажатиями). При механической неисправности микроконтакта это время как правило составляет 5-10 мс.
Спасибо за содержательный ответ. Механику можно лечить но это на короткий промежуток времени хватает и все равно иногда будут проскакивать двойные клики, у меня даже на новых мышах такая проблема наблюдалась.
Делать программу на autoit наверное не лучшее решение я так понял...
Поискал что можно сделать на C# и нашел интересную библиотеку _http://globalmousekeyhook.codeplex.com/
Да перепаяйте вы микрики и нет проблем. Кстати, часто двойной клик лечится ограничением глубины нажатия контакта. Другими словами нужно наклеить небольшие кусоки бумаги вокруг белого контакта, чтобы он не утапливался глубоко в корпус. В любом случае, двойной клик - это 99% грязь на контактах. А вот случайно это сделано или преднамеренно, это другой вопрос. Если рассматривать мышки 10-летней давности (времен MX-300), то подобные поломки возникали на порядок реже.