|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » События OnMouseOver / OnMouseClick + вопрос во созданию установщика |
|
События OnMouseOver / OnMouseClick + вопрос во созданию установщика
|
Новый участник Сообщения: 9 |
Профиль | Отправить PM | Цитировать Здравствуйте.
Решил сделать инсталлер для игрушки, есть несколько вопросов: 1. Не могу понять как отловить события onMouseOver и onMouseClick - хочу сделать смену картинок при наведении/отведении мыши и при клике. В справке не нашел. 2. Создаю бэкграунд инсталлера: Затем, добавляю кнопку "Установить" (картинка): Затем, отлов нажатий на кнопку и кнопку выхода: While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Pic2 Run("install.exe") EndSwitch WEnd 3. Не хватает идей для создания формы установщика. Точнее, как её отобразить - ну как в обычных инсталляторах - "Выберите путь" -> "Далее" -> (уже новая страница) "Создавать ярлыки" и т.п. Можете направить в правильную сторону? 4. AutoIt умеет работать с архивами (интересует распаковка)? Буду рад, если поможете советами хотя бы на один вопрос |
|
Отправлено: 22:26, 06-08-2009 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать 4.
#include <Process.au3> $NameArx = "Data.rar" ; Aрхив $NameOut = @ProgramsDir & "\" ; Путь для распаковки FileInstall("Rar.exe", @TempDir & "\Rar.exe", 1) ; Файл Rar.exe в должен быть в паке со скриптом (украдёш из WinRar`a) $RunDos = _RunDOS(@TempDir & '\' & 'Rar.exe x -Y ' & @ScriptDir & "\" & StringLeft($NameArx, StringLen($NameArx) - 4) & ' *.* ' & $NameOut) If $RunDos > 0 Then MsgBox(16, "Сообщение WinRar", "Распаковка архива" & $NameArx & @CRLF & _ReturnErrorWinRar($RunDos)) Exit EndIf Func _ReturnErrorWinRar($Error = "x") ; Функция для возврата кодов ошибок. Switch $Error Case 0 Return "Операция успешно завершена." Case 1 Return "Предупреждение. Произошли некритические ошибки." Case 2 Return "Произошла критическая ошибка." Case 3 Return "При распаковке обнаружена ошибка CRC." Case 4 Return "Предпринята попытка изменить заблокированный архив." Case 5 Return "Произошла ошибка записи на диск." Case 6 Return "Произошла ошибка открытия файла." Case 7 Return "Ошибка при указании параметра в командной строке." Case 8 Return "Недостаточно памяти для выполнения операции." Case 9 Return "Ошибка при создании файла." Case 255 Return "Операция была прервана пользователем." EndSwitch EndFunc ;==>_ReturnErrorWinRar |
Отправлено: 01:06, 07-08-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
$AutoITer Сообщения: 446
|
Профиль | Отправить PM | Цитировать Вот тебе в помощь Wizard написанный Creator'ом (Извини раскрашенный не вмещается)
#include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <EditConstants.au3> ; Устанавливаем иконки ;Используются системные ;FileInstall("Resources\Ok.ico", "Ok.ico") ;FileInstall("Resources\NotOk.ico", "NotOk.ico") ;Рисуем главное окно $Main_GUI = GUICreate("Мастер создания настроек", 500, 360, (@DesktopWidth - 500) / 2, (@DesktopHeight - 300) / 2) _GUICtrlCreateSeperator(0, 2, 320, 3, 496) ; Рисуем кнопки $Back_Button = GUICtrlCreateButton("< Назад", 240, 327, 80) GUICtrlSetState(-1, $GUI_DISABLE) $Next_Button = GUICtrlCreateButton("Далее >", 320, 327, 80) $Exit_Button = GUICtrlCreateButton("Выход", 410, 327, 80) ;Рисуем первый диалог мастера $ChildGui_1 = GUICreate("", 493, 300, 1, 1, $WS_POPUP) DllCall("user32.dll", "int", "SetParent", "hwnd", $ChildGui_1, "hwnd", $Main_GUI) ; помещаем диалог в главное окно $Label1_1_1 = GUICtrlCreateLabel("Этот мастер создания настроек последовательно проведет Вас через все шаги создания нового Интернет-чемпионата по деловой игре ""Никсдорф-Дельта"".", 30, 50, 450, 34) $Label1_1_2 = GUICtrlCreateLabel("Вы всегда можете вызвать справку в любом диалоге, нажав F1", 30, 84, 450, 17) ;Рисуем второй диалог мастера $ChildGui_2 = GUICreate("", 493, 300, 1, 1, $WS_POPUP) DllCall("user32.dll", "int", "SetParent", "hwnd", $ChildGui_2, "hwnd", $Main_GUI) ; помещаем диалог в главное окно $Label2_1_1 = GUICtrlCreateLabel("Шаг 1/10: Общие настройки", 24, 8, 147, 17) $Group2_2_1 = GUICtrlCreateGroup("Приветствие", 32, 32, 455, 41) $Checkbox2_2_1 = GUICtrlCreateCheckbox("Выводить приветствие AutoSend&&Get при запуске", 48, 48, 273, 17, $WS_TABSTOP) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2_3_1 = GUICtrlCreateGroup("Название чемпионата", 32, 80, 455, 41) $Label2_3_1 = GUICtrlCreateLabel("Введите название чемпионата:", 48, 100, 163, 17) $Input2_3_1 = GUICtrlCreateInput("Грейт-4", 210, 96, 113, 21, $WS_TABSTOP) $Icon_2_3_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 435, 98, 15, 15) $Icon_2_3_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 450, 90, 25, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2_4_1 = GUICtrlCreateGroup("E-mail", 32, 128, 455, 68) $Label2_4_1 = GUICtrlCreateLabel("Введите адрес основного ящика, через который Вы будете общаться с участниками. Внимание! Именно ящик для живого общения, а не для рассылки архивов.", 48, 140, 436, 27) $Input2_4_1 = GUICtrlCreateInput("delta-greit@yandex.ru", 280, 170, 150, 21, $WS_TABSTOP) $Icon_2_4_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 435, 173, 15, 15) $Icon_2_4_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 450, 165, 25, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2_5_1 = GUICtrlCreateGroup("Форум", 32, 200, 455, 53) $Label2_5_1 = GUICtrlCreateLabel("Введите номер топика Вашего турнира на форуме:", 48, 215, 260, 17) $Label2_5_2 = GUICtrlCreateLabel("http://deltaon.ucoz.ru/forum/2-", 49, 230, 149, 17) $Input2_5_1 = GUICtrlCreateInput("20", 200, 227, 25, 21, $WS_TABSTOP) $Icon_2_5_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 435, 228, 15, 15) $Icon_2_5_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 450, 220, 25, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2_6_1 = GUICtrlCreateGroup("Периоды", 32, 257, 455, 41) $Label2_6_1 = GUICtrlCreateLabel("Введите количество периодов (от 1 до 20):", 48, 275, 220, 17) $InputGui_2_6_1 = GUICtrlCreateInput("12", 265, 273, 34, 17) $UpDownGui_2_6_1 = GUICtrlCreateUpdown($InputGui_2_6_1) GUICtrlSetLimit(-1, 20, 1) $Icon_2_6_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 435, 275, 15, 15) $Icon_2_6_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 450, 267, 25, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) ;Рисуем третий диалог мастера $ChildGui_3 = GUICreate("", 493, 300, 1, 1, $WS_POPUP) DllCall("user32.dll", "int", "SetParent", "hwnd", $ChildGui_3, "hwnd", $Main_GUI) ; помещаем диалог в главное окно $Label3_1_1 = GUICtrlCreateLabel("Шаг 2/10: Настройка исходящих писем", 24, 8, 200, 17) $Group3_2_1 = GUICtrlCreateGroup("Создание текстов писем", 32, 32, 455, 120) $Checkbox3_2_1 = GUICtrlCreateCheckbox("Использовать шаблоны", 48, 50, 140, 17) GUICtrlSetState(-1, $GUI_CHECKED) $Button3_2_1 = GUICtrlCreateButton("Пример", 320, 48, 60, 20) $Checkbox3_2_2 = GUICtrlCreateCheckbox("Использовать обычный шаблон", 62, 75, 180, 17) GUICtrlSetState(-1, $GUI_CHECKED) $Button3_2_2 = GUICtrlCreateButton("Указать", 320, 73, 60, 20) ;GUICtrlSetState (-1, $GUI_DISABLE) $Button3_2_5 = GUICtrlCreateButton("Редактировать", 390, 73, 90, 20) $Checkbox3_2_3 = GUICtrlCreateCheckbox("Использовать шаблон выходного дня", 62, 100, 210, 17) GUICtrlSetState(-1, $GUI_CHECKED) $Button3_2_3 = GUICtrlCreateButton("Указать", 320, 98, 60, 20) $Button3_2_6 = GUICtrlCreateButton("Редактировать", 390, 98, 90, 20) $Checkbox3_2_4 = GUICtrlCreateCheckbox("Использовать шаблон последнего периода", 62, 125, 240, 17) GUICtrlSetState(-1, $GUI_CHECKED) $Button3_2_4 = GUICtrlCreateButton("Указать", 320, 123, 60, 20) $Button3_2_7 = GUICtrlCreateButton("Редактировать", 390, 123, 90, 20) GUICtrlCreateGroup("", -99, -99, 1, 1) $Group3_3_1 = GUICtrlCreateGroup("Тексты писем и архивы", 32, 217, 455, 78) $Checkbox3_3_1 = GUICtrlCreateCheckbox("Сохранять отправленные", 48, 233, 145, 17) GUICtrlSetState(-1, $GUI_CHECKED) $Button3_3_1 = GUICtrlCreateButton("Выбрать папку", 200, 230, 85, 25, 0) $Label3_3_1 = GUICtrlCreateLabel("Текущая папка: ", 48, 250, 90, 17) If Not IsDeclared("save_path") Then $save_path = @ScriptDir & "\to_send" $Label3_3_2 = GUICtrlCreateLabel($save_path, 48, 265, 435, 25) GUICtrlSetColor(-1, 0x335EA8) GUICtrlCreateGroup("", -99, -99, 1, 1) _CheckInputsProc() GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") ;Выводим окна на экран GUISetState(@SW_SHOW, $Main_GUI) GUISetState(@SW_SHOW, $ChildGui_1) GUISetState(@SW_HIDE, $ChildGui_2) GUISetState(@SW_HIDE, $ChildGui_3) While 1 $Msg = GUIGetMsg(1) Switch $Msg[0] Case $GUI_EVENT_CLOSE, $Exit_Button If Not _WinIsVisible($ChildGui_1) Then $Ask = MsgBox(4096+36, "Attention", "Are you sure you want to exit the Wizard now?", 0, $Msg[1]) If $Ask <> 6 Then ContinueLoop EndIf If $Msg[1] = $Main_GUI Then Exit Case $Next_Button GUICtrlSetState($Back_Button, $GUI_ENABLE) Local $CurrentHandle = 0 Local $NextHandle = 0 Select Case _WinIsVisible($ChildGui_1) $CurrentHandle = $ChildGui_1 $NextHandle = $ChildGui_2 _CheckInputsProc(1) Case _WinIsVisible($ChildGui_2) $CurrentHandle = $ChildGui_2 $NextHandle = $ChildGui_3 GUICtrlSetState($Next_Button, $GUI_DISABLE) EndSelect If $CurrentHandle <> 0 Then GUISetState(@SW_HIDE, $CurrentHandle) GUISetState(@SW_SHOW, $NextHandle) EndIf WinActivate($Main_GUI) Case $Back_Button GUICtrlSetState($Next_Button, $GUI_ENABLE) Local $CurrentHandle = 0 Local $BackHandle = 0 Select Case _WinIsVisible($ChildGui_3) $CurrentHandle = $ChildGui_3 $BackHandle = $ChildGui_2 Case _WinIsVisible($ChildGui_2) $CurrentHandle = $ChildGui_2 $BackHandle = $ChildGui_1 GUICtrlSetState($Back_Button, $GUI_DISABLE) EndSelect If $CurrentHandle <> 0 Then GUISetState(@SW_HIDE, $CurrentHandle) GUISetState(@SW_SHOW, $BackHandle) EndIf WinActivate($Main_GUI) EndSwitch WEnd Func _GUICtrlCreateSeperator($Direction, $Left, $Top, $Width = 3, $Lenght = 25) Switch $Direction Case 0 GUICtrlCreateLabel("", $Left, $Top, $Lenght, $Width, $SS_SUNKEN) Case 1 GUICtrlCreateLabel("", $Left, $Top, $Width, $Lenght, $SS_SUNKEN) EndSwitch EndFunc ;==>_GUICtrlCreateSeperator Func _WinIsVisible($hWnd) Return BitAND(WinGetState($hWnd), 2) EndFunc ;==>_WinIsVisible Func _CheckInputsProc($iCheckNextButton=0) Local $iNextButtonState = $GUI_ENABLE If GUICtrlRead($Input2_3_1) = "" Then _GUICtrlSetState($Icon_2_3_1, $GUI_SHOW) _GUICtrlSetState($Icon_2_3_2, $GUI_HIDE) $iNextButtonState = $GUI_DISABLE Else _GUICtrlSetState($Icon_2_3_1, $GUI_HIDE) _GUICtrlSetState($Icon_2_3_2, $GUI_SHOW) EndIf If GUICtrlRead($Input2_4_1) = "" Then _GUICtrlSetState($Icon_2_4_1, $GUI_SHOW) _GUICtrlSetState($Icon_2_4_2, $GUI_HIDE) $iNextButtonState = $GUI_DISABLE Else _GUICtrlSetState($Icon_2_4_1, $GUI_HIDE) _GUICtrlSetState($Icon_2_4_2, $GUI_SHOW) EndIf If GUICtrlRead($Input2_5_1) = "" Then _GUICtrlSetState($Icon_2_5_1, $GUI_SHOW) _GUICtrlSetState($Icon_2_5_2, $GUI_HIDE) $iNextButtonState = $GUI_DISABLE Else _GUICtrlSetState($Icon_2_5_1, $GUI_HIDE) _GUICtrlSetState($Icon_2_5_2, $GUI_SHOW) EndIf If GUICtrlRead($InputGui_2_6_1) <> 12 Then _GUICtrlSetState($Icon_2_6_1, $GUI_SHOW) _GUICtrlSetState($Icon_2_6_2, $GUI_HIDE) $iNextButtonState = $GUI_DISABLE Else _GUICtrlSetState($Icon_2_6_1, $GUI_HIDE) _GUICtrlSetState($Icon_2_6_2, $GUI_SHOW) EndIf If $iCheckNextButton Then _GUICtrlSetState($Next_Button, $iNextButtonState) EndFunc ;==>_CheckInputsProc Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam) Local $nNotifyCode = BitShift($wParam, 16) Local $nID = BitAND($wParam, 0xFFFF) Local $hCtrl = $lParam Switch $nNotifyCode Case $EN_CHANGE, $EN_UPDATE _CheckInputsProc(1) EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_COMMAND Func _GUICtrlSetState($nCtrl, $iState) If BitAND(GUICtrlGetState($nCtrl), $iState) <> $iState Then GUICtrlSetState($nCtrl, $iState) EndFunc |
------- Отправлено: 08:18, 07-08-2009 | #3 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать А если сделать Inno Setup , то всё гораздо проще, там даже есть мастер создания инсталяторов ...
|
Отправлено: 15:34, 07-08-2009 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
EventID - Уведомление Ист. события: HHCTRL Категория события: Отсутствует. Код события: 1903 | cleric1985_n | Устранение критических ошибок Windows | 7 | 27-11-2015 16:14 | |
Вопрос по созданию 7z SFX архива | aka Nemesis | Автоматическая установка приложений | 6 | 04-01-2012 16:43 | |
вопрос по созданию леса ? | Alexir | Microsoft Windows NT/2000/2003 | 0 | 04-10-2007 15:27 | |
Вопрос по созданию форм | [mzd] | Программирование и базы данных | 2 | 11-02-2004 13:51 | |
У меня вопрос по созданию профиля. | SergeyP | Microsoft Windows 95/98/Me (архив) | 1 | 04-10-2002 14:00 |
|