1 (изменено: mqz777, 2016-09-16 23:15:32)

Тема: AHK: Левая кнопка мыши в текстовых редакторах

Всем доброго предвыходного вечера.

Такой вопрос.
Стандартное поведение левой кнопки мыши в текстовых редакторах следующее:
- одиночный клик устанавливает курсор (caret),
- двойной клик выделяет слово,
- нажатая кнопка при перемещении мыши - выделение текста.
Код (результат выполнения можно посмотреть в любом текстовом редакторе):


$LButton::						; левая кнопка мыши
	KeyWait, LButton			; ждём отпускания кнопки
	KeyWait, LButton, D T0.1	; либо  нажатие кнопки (двойной клик), либо таймаут (одиночный клик)
		if ErrorLevel {			; если одиночный клик:
			Click				;	стандартно отрабатываем одиночный клик левой кнопки мыши		
			SendInput {Right 3}	; для демонстрации сдвигаем курсор вправо
		}
		else {					; если не одиночный клик:
			Click 2				;	стандартный двойной клик (выделение слова)
		}
return

Одиночный и двойной клики работают, а вот выделение текста при нажатой кнопке нет.
Можно ли как-то добавить обработчик на перемещение мыши с нажатой левой кнопкой или изменить представленный код так, чтобы клики работали также, а перемещения с нажатой кнопкой не обрабатывались, работали стандартно?

2 (изменено: stealzy, 2016-09-17 02:03:08)

Re: AHK: Левая кнопка мыши в текстовых редакторах

А вот не надо блокировать клики, пусть проходят насквозь (ставим перед ГК префикс ~, соответсвенно нужда в командах Click (а значит и в префиксе $) отпадает).
У меня в таком виде работает, как вы и хотели.

Если же вы хотите заблокировать одиночный клик, но сохранить выделение, можно поставить хук на мышь, в момент получения сообщения 0х200 (движение курсора) посылать зажатие ЛКМ.
Если надо заблокировать выделение, но сохранить одиночный клик, можно сохранять координаты курсора в момент зажатия и сравнить с координатами в момент отпускания - если совпадают, значит шлем клик.

3

Re: AHK: Левая кнопка мыши в текстовых редакторах

Большое спасибо. Помогло.