Что нового

Как программно нажать кнопку Button

sasha-ld

Новичок
Сообщения
48
Репутация
0
Здравствуйте!
Есть такой вопрос, как программно нажать кнопку в окне своей программы так как если бы она была нажата мышью, когда на кнопку нажимаешь мышью и не отпускаешь то цвет кнопки меняется, или же поставить на кнопку фокус и зажать пробел такой же эффект, а можно ли это реализовать программно.
пробовал так не вышло:
Код:
Opt("SendKeyDownDelay", 2000)
$b1=Guictrlcreatebutton('1',20,20,20,20)
Send('{SPACE}')

это вообще возможно
Спасибо!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
sasha-ld,
Так?
Код:
#include <GUIConstantsEx.au3>

$iCount = 0
$hGui = GUICreate('Test', 200, 200)
$nLabel = GUICtrlCreateLabel($iCount, 80, 20, 40, 20)
$nButton = GUICtrlCreateButton('Кнопка', 50, 80, 100, 40)
GUISetState()
$iStart = TimerInit()
While 1
	If TimerDiff($iStart) > 2000 Then
		ControlSend($hGui, '', $nButton, '{SPACE up}')
		GUICtrlSetState($nLabel, $GUI_FOCUS)
	EndIf
	If TimerDiff($iStart) > 4000 Then
		ControlClick($hGui, '', $nButton)
		ControlSend($hGui, '', $nButton, '{SPACE down}')
		$iStart = TimerInit()
	EndIf
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			$iCount += 1
			GUICtrlSetData($nLabel, $iCount)
	EndSwitch
WEnd
 

VladUs

Скриптер
Сообщения
621
Репутация
181
sasha-ld [?]
как программно нажать кнопку в окне своей программы так как если бы она была нажата мышью
Для этого необходимо отправить сообщение BM_SETSTATE кнопке.
Примерно так

Код:
$hWnd = GUICreate("My GUI ")
$ButtonTest = GUICtrlCreateButton("Button Test", 10, 10, 100,30)
$ButtonUp = GUICtrlCreateButton("Нажать", 10, 80, 100,30)
$ButtonDown = GUICtrlCreateButton("Отжать",120, 80,100,30)
$hbut = ControlGetHandle($hWnd,"",$ButtonTest)
GUISetState()
$BM_SETSTATE  = 0x000000F3

While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $ButtonUp
        _SendMessage($hbut, $BM_SETSTATE, True)
    Case $msg = $ButtonDown
        _SendMessage($hbut, $BM_SETSTATE, False)
    EndSelect
WEnd
 
Автор
S

sasha-ld

Новичок
Сообщения
48
Репутация
0
Спасибо огромное madmasles, VladUs
всё работает, очень признателен
Оба примера то что надо
 
Верх