Что нового

Зажимание кнопки мыши или клавиатуры через ControlSend ?

protonix

Новичок
Сообщения
9
Репутация
0
Поиск юзал, ответа не нашел ...
Может ктото знает как зажать кнопку при помощи ControlSend ?

Код типа :
ControlSend( $hwnd , "", $hCtrl, "{C DOWN}")
не прокатывает :( Происходит просто нажимание кнопки но не удержание ее
 

Garik88

Новичок
Сообщения
8
Репутация
3
Send("{CTRLDOWN}") Зажать
Send("{CTRLUP}") Отжать. иногда два раза ибо глючит.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Garik88
....) У автора все правильно сделано. Но действительно касяк - кнопко нажимается и тут же опускается.

protonix
Попробуйте увеличить опции: SendKeyDelay и SendKeyDownDelay.
 
Автор
P

protonix

Новичок
Сообщения
9
Репутация
0
> Garik88
Про команду Send вопрос не стоял )) это я в курсе, но эта штука работает только с активным окном. А мне надо слать в неактивное, поэтому юзаю ControlSend

А насчет SendKeyDownDelay пробовал но получается полная херня, дело в том что эта опция действет глобально для всех клавиш. Допустим мне надо зажать кнопку "С" на 10 сек, так вот если я сделаю SendKeyDownDelay = 10, то в течении этого времени абсолютно все нажатия клавиш в этом окне будут по 10 сек, что не есть гуд вобще...

Кстати еще вопрос, может ктото знает как изменить положение курсора мыши в неактивном окне ?
 

sss

Продвинутый
Сообщения
332
Репутация
96
protonix сказал(а):
Кстати еще вопрос, может ктото знает как изменить положение курсора мыши в неактивном окне ?
Не уверен что то, но может быть...
Код:
MouseMove($x,$y,0)
?
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Удерживать кнопку можно попробовать так:

Код:
#include <SendMessage.au3>
#include <WindowsConstants.au3>

Run('Calc.Exe')
$hWnd = WinWait('[REGEXPCLASS:(?i)Calc]', '', 4)
If $hWnd Then
	$hCtrl = ControlGetHandle($hWnd, "", "[CLASSNN:Button5]")
	If $hCtrl Then
		Sleep(1000)
		_SendMessage($hCtrl, $WM_LBUTTONDOWN)
		Sleep(5000)
		_SendMessage($hCtrl, $WM_LBUTTONUP)
	EndIf
EndIf
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Ты можешь указывать SenKeyDeley перед каждой командой требующей какого-то определенного времени зажимания клавиши или же использовать DOWN и UP опции в send ctrlsend
 
Автор
P

protonix

Новичок
Сообщения
9
Репутация
0
asdf8 - Спасибо. Буду пробовать.

Belfigor сказал(а):
Ты можешь указывать SenKeyDeley перед каждой командой требующей какого-то определенного времени зажимания клавиши или же использовать DOWN и UP опции в send ctrlsend
В Controlsend не действуют опции DOWN и UP , он просто нажимает клавишу но не зажимает ее. (Send зажимает и работает как надо, но разговор не о нем, так как он работает только с активным окном )

Никто не в курсе как изменить положение курсора мыши в неактивном окне (не задействуя команду MouseMove ) ?
Для того чтобы корректно работал ControlClick ???
Потому что сейчас при попытке кликнуть в неактивное окно он кликает туда где стоит курсор мыши.
Или, если по другому сфрмулировать вопрос, как заставить кликнуть ControlClick по указанным координатам а не в то место где сейчас находится курсор ?
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
protonix [?]
Или, если по другому сфрмулировать вопрос, как заставить кликнуть ControlClick по указанным координатам а не в то место где сейчас находится курсор ?

Из справки:
Код:
ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )

Т.е. последнии 2 параметра указывают позиции X и Y клика, то ли только в нутри элементо, то ли глобально для окна.
 

mister proper

Новичок
Сообщения
1
Репутация
0
так разобрались или нет почему ControlSend не зажимает кнопки?
 
Верх