Что нового

Зажатие ПКМ

Resolute

Новичок
Сообщения
3
Репутация
0
Добрый вечер! Перешел на AutoIt после AHK, и сейчас пока ничего непонятно, непривычно. Напишите, пожалуйста, скрипт, чтобы при нажатии на ПКМ, эта кнопка зажималась, а при повторном нажатии - отжималась. Спасибо!
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
тебе нужен срипт, чтоб при нажатии на ПКМ нажималась ПКМ?
 
Автор
Resolute

Resolute

Новичок
Сообщения
3
Репутация
0
mr.Gbabak сказал(а):
тебе нужен срипт, чтоб при нажатии на ПКМ нажималась ПКМ?
Так точно. В ahk это выглядит самым примитивным образом:
Rbutton::send, ''скрипт''

Но ahk не работает в нужной мне программе - пробую autoit. Мне надо, чтобы при нажатии на ПКМ эта кнопка зажималась, при следующем нажатии - отжималась
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
Код:
#include <Misc.au3>
Global $pkm
Local $hDLL = DllOpen("user32.dll")

While 1
	If _IsPressed("02", $hDLL) Then _mouse()
	Sleep(100)
WEnd

DllClose($hDLL)

Func _mouse()

	If $pkm = 1 Then
		MouseUp('right')
		$pkm = 0
		ConsoleWrite("_IsPressed - Отжата клавиша ПКМ." & @CRLF)
	Else
		$pkm = MouseDown('right')
		ConsoleWrite("_IsPressed - Нажата клавиша ПКМ" & @CRLF)
	EndIf

EndFunc   ;==>_mouse
 
Автор
Resolute

Resolute

Новичок
Сообщения
3
Репутация
0
к сожалению у меня этот скрипт просто нажимает на ПКМ, не зажимая ее
 

key_on

Новичок
Сообщения
1
Репутация
0
Если еще актуально.

Скрипт зажимает клавишу "n" при клике по ПКМ и отжимает при следующем клике по ПКМ.

Код:
#include <Misc.au3>

$status = 0
Local $hDLL = DllOpen("user32.dll")

Func status () 																							;Функция счетчика нажатий на правую кнопку мыши
	if _IsPressed("02",$hDLL) = true then 																;Если правая кнопка нажата
		$status = $status-1 																			;Присваиваем значение статусу (-1)
		do 																								;Цыкл ожидания отжатия правой кнопки мыши - определяет завершение клика
			_IsPressed("02",$hDLL)
		until _IsPressed("02",$hDLL) = false
		$status = $status+2																				;Присваиваем значение переменной статуса (Результат будет менятся от кликак к клику в диапазоне от 1 до 2)
		If $status = 3 Then 																			;Возвращаем к исходному значениею чтобы счетчик не выходил за пределы двух значений
		$status = 1
		EndIf
		EndIf
		EndFunc


while 1
	status ()
if $status = 1 Then
	;ConsoleWrite("_IsPressed - Click_1." & @CRLF) ;Для отладки
	Send("{n down}")
	Do																									;Ждем пока произойдет следущее нажатие правой кнопки мыши в пределах одного цикла.
		status ()
		until $status = 2
ElseIf $status = 2 Then
	;ConsoleWrite("_IsPressed - Click_2." & @CRLF) ;Для отладки
	Send("{n up}")
	Do																								 	;Ждем пока произойдет следущее нажатие правой кнопки мыши в пределах одного цикла.
		status ()
		until $status = 1
EndIf

sleep(30)
WEnd
DllClose($hDLL)
 
Верх