|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Объединение нескольких GUI в один файл au3 |
|
[решено] Объединение нескольких GUI в один файл au3
|
Ветеран Сообщения: 1202 |
Привет, ребята. Прошу вашей помощи.
Раньше делал скрипты только на cmd/bat. Решил попробовать AutoIt. Получилось за неделю кое-что накалякать. То, что получилось собрать на коленке прикрепил. Основной файл - Dispatcher.au3 - работает в фоне (трее) и ждет особых файлов на съемных носителях, потом выполняет определенные действия. Есть еще 2 файла, отвечающие каждый за определенные действия, не связанные с основным файлом. Вот, что не получается - как это все объединить в один файл? Надеюсь на вашу отзывчивость. |
|
------- Отправлено: 13:43, 26-01-2015 |
Ветеран Сообщения: 1202
|
Профиль | Отправить PM | Цитировать -TRM-, твой скомпилированный работает.
Выложи au3 свой, пожалуйста. |
------- Последний раз редактировалось sLiDeR-X, 27-01-2015 в 20:20. Отправлено: 19:17, 27-01-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать
sLiDeR-X,
Цитата sLiDeR-X:
|
|||||
Отправлено: 10:17, 28-01-2015 | #12 |
Ветеран Сообщения: 1202
|
Профиль | Отправить PM | Цитировать
-TRM-, ты сделал на первых выложенных файлах. В шапке сейчас другие уже. Там GUI окна работают по ключу Opt("GUIOnEventMode", 1).
Сделал по аналогии, как сделал ты - у меня ошибки появляются, программа работает не корректно. Я так понял загвоздка именно из-за GUIOnEventMode=1. Вот как сделал я: |
||||
Отправлено: 12:53, 28-01-2015 | #13 |
Ветеран Сообщения: 1202
|
Профиль | Отправить PM | Цитировать Если отбросить работу самой программы, то как сделать вот это (хочу понять сам принцип):
Поправьте код #include <WindowsConstants.au3> ;Стиль окон GUI #include <GUIConstantsEx.au3> ;Раширенный стили GUI TraySetToolTip('Название') Opt("TrayMenuMode", 1 + 2) Opt("TrayOnEventMode", 1) TraySetState(1) $iRegistration = TrayCreateItem('Регистрация программы') TrayItemSetOnEvent(-1, "_Registration") $iExit = TrayCreateItem('Выход') TrayItemSetOnEvent(-1, '_Quit') ;Программа запущена в трее и выполняет _SomeFunc() раз в 3 секунды While 1 _SomeFunc() Sleep(3000) WEnd Func _SomeFunc() ;Основная работа программы ConsoleWrite('Основной цикл' & @LF) EndFunc ;Функция вызова GUI окна. После отработки должно исчезнуть, а программа должна продолжить работать по основному циклу. Func _Registration() Opt("GUIOnEventMode", 1) $hGui = GUICreate('Регистрация программы', 370, 225) GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEClicked") $BtnOk = GUICtrlCreateButton("ОК", 250, 190, 100, 25) GUICtrlSetOnEvent($BtnOk, "_OKButton") GUISetState() While 1 Sleep(1000) WEnd EndFunc Func _CLOSEClicked() If @GUI_WinHandle = $hGui Then ;Закрыть окно и продолжить основной цикл EndIf EndFunc Func _OKButton() MsgBox(4096 + 64, '', 'Регистрация произведена!') ;Выполнить некоторые операции, закрыть окно и продолжить основной цикл EndFunc Func _Quit() Exit EndFunc |
------- Последний раз редактировалось sLiDeR-X, 30-01-2015 в 12:11. Отправлено: 10:38, 30-01-2015 | #14 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать sLiDeR-X,
ИМХО, нет смысла дублировать темы на разных форумах. Я начинаю путаться, где Вам отвечать. ![]() |
Отправлено: 13:12, 30-01-2015 | #15 |
Ветеран Сообщения: 1202
|
Профиль | Отправить PM | Цитировать madmasles, благодарю за помощь!
Хотя я уже сделал немного по другому - обошелся без GUIOnEventMode=1 и сделал через While и GUIGetMsg Вот ответ на мой вопрос: #NoTrayIcon #include <WindowsConstants.au3> ;Стиль окон GUI #include <GUIConstantsEx.au3> ;Раширенный стили GUI Opt("TrayMenuMode", 1 + 2) Opt("TrayOnEventMode", 1) Opt("GUIOnEventMode", 1) TrayCreateItem('Регистрация программы') TrayItemSetOnEvent(-1, "_Registration") TrayCreateItem('Выход') TrayItemSetOnEvent(-1, '_Quit') TraySetToolTip('Название') TraySetState(1) ;Программа запущена в трее и выполняет _SomeFunc() раз в 3 секунды While 1 _SomeFunc() Sleep(3000) WEnd Func _SomeFunc() ;Основная работа программы Sleep(500) ConsoleWrite('Основной цикл' & @LF) EndFunc ;==>_SomeFunc ;Функция вызова GUI окна. После отработки должно исчезнуть, а программа должна продолжить работать по основному циклу. Func _Registration() GUICreate('Регистрация программы', 370, 225) GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEClicked") GUICtrlCreateButton("ОК", 250, 190, 100, 25) GUICtrlSetOnEvent(-1, "_OKButton") GUISetState() EndFunc ;==>_Registration Func _CLOSEClicked() GUIDelete(@GUI_WinHandle) EndFunc ;==>_CLOSEClicked Func _OKButton() MsgBox(4096 + 64, '', 'Регистрация произведена!', 0, @GUI_WinHandle) ;Выполнить некоторые операции, закрыть окно и продолжить основной цикл EndFunc ;==>_OKButton Func _Quit() Exit EndFunc ;==>_Quit |
------- Отправлено: 15:52, 30-01-2015 | #16 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2010 - объединение нескольких файлов в один | Pavelasd | Microsoft Office (Word, Excel, Outlook и т.д.) | 1 | 04-05-2014 11:55 | |
7 / 2008 R2 - Объединение Windows 7 и Windows 8 в один образ/.wim файл | daniil98797 | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 11 | 19-06-2012 05:33 | |
Resources.au3 - загрузить файл из ресурсов _GDIPlus_ImageLoadFromFile() | FlatX007 | AutoIt | 8 | 26-04-2010 14:33 | |
Объединение нескольких версий в один образ | dim-soft | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 0 | 21-11-2008 09:32 | |
чтобы на CD был физически один файл, но в нескольких директориях | BJ Co | Хочу все знать | 2 | 20-11-2004 17:43 |
|