Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Объединение нескольких GUI в один файл au3

Ответить
Настройки темы
[решено] Объединение нескольких GUI в один файл au3

Аватара для sLiDeR-X

Ветеран


Автор проектов


Сообщения: 1202
Благодарности: 280


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: sLiDeR-X
Дата: 27-01-2015
Вложения
Тип файла: zip Archive.zip
(5.2 Kb, 11 просмотров)
Привет, ребята. Прошу вашей помощи.
Раньше делал скрипты только на cmd/bat. Решил попробовать AutoIt.
Получилось за неделю кое-что накалякать. То, что получилось собрать на коленке прикрепил.
Основной файл - Dispatcher.au3 - работает в фоне (трее) и ждет особых файлов на съемных носителях, потом выполняет определенные действия.
Есть еще 2 файла, отвечающие каждый за определенные действия, не связанные с основным файлом.

Вот, что не получается - как это все объединить в один файл?
Надеюсь на вашу отзывчивость.

-------
Конструктор RDS_Boot_KIT и комплект Recovery DiskSuite


Отправлено: 13:43, 26-01-2015

 

Аватара для sLiDeR-X

Ветеран


Автор проектов


Сообщения: 1202
Благодарности: 280

Профиль | Отправить PM | Цитировать


-TRM-, твой скомпилированный работает.
Выложи au3 свой, пожалуйста.

-------
Конструктор RDS_Boot_KIT и комплект Recovery DiskSuite


Последний раз редактировалось sLiDeR-X, 27-01-2015 в 20:20.


Отправлено: 19:17, 27-01-2015 | #11



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 352
Благодарности: 44

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar Dispatcher_au3.rar
(3.9 Kb, 8 просмотров)

sLiDeR-X,
Цитата sLiDeR-X:
-TRM-, твой скомпилированный работает.
Выложи au3 свой, пожалуйста. »

Отправлено: 10:17, 28-01-2015 | #12


Аватара для sLiDeR-X

Ветеран


Автор проектов


Сообщения: 1202
Благодарности: 280

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip Dispatcher.zip
(4.3 Kb, 2 просмотров)

-TRM-, ты сделал на первых выложенных файлах. В шапке сейчас другие уже. Там GUI окна работают по ключу Opt("GUIOnEventMode", 1).
Сделал по аналогии, как сделал ты - у меня ошибки появляются, программа работает не корректно. Я так понял загвоздка именно из-за GUIOnEventMode=1.

Вот как сделал я:

Отправлено: 12:53, 28-01-2015 | #13


Аватара для sLiDeR-X

Ветеран


Автор проектов


Сообщения: 1202
Благодарности: 280

Профиль | Отправить 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

-------
Конструктор RDS_Boot_KIT и комплект Recovery DiskSuite


Последний раз редактировалось sLiDeR-X, 30-01-2015 в 12:11.


Отправлено: 10:38, 30-01-2015 | #14


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


sLiDeR-X,
ИМХО, нет смысла дублировать темы на разных форумах. Я начинаю путаться, где Вам отвечать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:12, 30-01-2015 | #15


Аватара для sLiDeR-X

Ветеран


Автор проектов


Сообщения: 1202
Благодарности: 280

Профиль | Отправить 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

-------
Конструктор RDS_Boot_KIT и комплект Recovery DiskSuite


Отправлено: 15:52, 30-01-2015 | #16



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Объединение нескольких GUI в один файл au3

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход