Что нового

Как узнать, что в течение последней секунды был двойной щелчок мышкой?

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

В программе имеется основной цикл:

While True
if WinActive("Тратата") And ...... Then func()
Sleep(50)
Wend


Как на месте ....... сделать проверку, что пользователем в течение последней секунды выполнялся двойной щелчок основной кнопки мышки?

Дело в том, что func нужно выполнять не во время двойного щелчка, а только если будет активно окно "Тратата" и при этом точно известно, что юзер недавно щелкал мышкой.


Добавлено:
Сообщение автоматически объединено:

в _IsPressed нет двойного щелчка.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Suppir
По идее, надо бы делать с помощью MouseSetOnEvent - Обработка событии мышки, но на двойной клик повесить функцию у меня не получилось.
Так, вроде, работает:
Код:
#include <Misc.au3>

HotKeySet('{Esc}', '_Exit')

$iCount = 0
$fClick = True
$iPause = 200 ;пауза между двумя кликами.
$iStart = TimerInit()

While 1
	If WinActive('[Class:Notepad]') Then
		If _IsPressed('01') Then
			If $fClick Then
				$iStart = TimerInit()
				$iCount += 1
				$fClick = False
			EndIf
		Else
			$fClick = True
		EndIf
		If TimerDiff($iStart) >= $iPause Then
			$iCount = 0
		EndIf
		If $iCount = 2 Then
			_MyFunc($iCount)
		EndIf
	EndIf
	Sleep(20)
WEnd

Func _MyFunc($sTitle)
	MsgBox(64, $sTitle, '2 click')
EndFunc   ;==>_MyFunc

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Верх