Что нового

Как нажать кнопку Button с кода?

agikon

Знающий
Сообщения
789
Репутация
16
например есть кнопка
Код:
Case $Button1
       MsgBox(64,'Info','задача1' , '', $GUI)

то вот как эту кнопку запустить средствами кода?
например я пишу вот так, но не работает

Код:
If BitAND(GUICtrlRead($work1), $GUI_CHECKED) Then
Case $Button1
endif


подскажите пожалуйста.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Код:
Case $work1
    If BitAND(GUICtrlRead($work1), $GUI_CHECKED) Then
             ; То,что должно выполняться при нажатии $Button1
   endif
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Возможно я не так понял, но вот еще пример.
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 298, 72, 285, 159)
$Button1 = GUICtrlCreateButton("Button1", 16, 16, 121, 33)
$Button2 = GUICtrlCreateButton("Button2", 160, 16, 121, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		
		Case $Button1
			ControlClick($Form1, "", $Button2)
		Case $Button2
			MsgBox(64, "Info", "Button2 Click")
	EndSwitch
WEnd
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Yuriy
На мой взгляд использовать ControlClick в своем GUI это не рационально.



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

Всегда можно построить код так, чтобы и при нажатии $Button1 выполнялись дествия ,назначенные на $Button2
Например так:
Код:
Case $Button1,$Button2
        MsgBox(64, "Info", "Button2 Click")


А вообще-то вопрос поставлен малопонятно
Что значит : "то вот как эту кнопку запустить средствами кода?" :scratch:
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
16
спасибо ребята.
примеров много буду шаманить.

Yuriy
это то что мне надо.
только плохо что оно нажимает только если кнопка на переднем плане. а вот если кнопка например на дочернем то уже не нажимает.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
agikon [?]
мне надо нажать на кнопку после IF
Код:
If  BitAND(GUICtrlRead($work1), $GUI_CHECKED) Then
     ControlClick($Form1, "", $Button2)
endif


Но повторюсь : это не рационально.

Зачем нажимать на кнопку,тобою же созданную.
Разве нельзя вместо этого выполнить действия, назначенные на эту кнопку. (Переход к ф-ии)
Это же твое GUI, а не стороннее приложение


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

И напрасно стираешь свои сообщения.
Надо было просто зачеркнуть
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
16
gregaz
до функции ещё может быть код.
например
Код:
sleep(100)
_func1()


а вообще я с тобой согласен что весь код до первой функции можно в вторую функцию закинуть.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
623
agikon
кнопки именно "нажимают" с помощью скрипта только в том случае, если ко всем тем действиям, что сокрыты за нажатием нет доступа. если же он есть, а именно так обстоит дело, если скрипт твой, то "нажимать" необходимости нет. надо просто перестроить код таким образом, чтобы все эти действия при нажатии были выполнены именно в тот момент, когда это необходимо (в моменты когда тебе вдруг понадобится фактически "нажать" на кнопку).
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
16
Kaster
да спасибо.
вот именно все действия я и переставил. я просто об этом как то забыл.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
А я иногда использую нажатие кнопок или меню, чтобы не "ломать" код, но только через _SendMessage().

:smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
623
Yashied
не только ты 8) но это наз-ся Костыль
 
Верх