Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: Maza Faka
Дата сообщения: 12.09.2008 06:57
Loopback

Цитата:
Есть функция Assign - создает переменные по имени.

Вообще-то не создаёт, а присваивает значения
Автор: alex832008
Дата сообщения: 12.09.2008 10:53

Цитата:


Цитата:Есть функция Assign - создает переменные по имени.

Вообще-то не создаёт, а присваивает значения


Assign мне помогла ) Но вот можно ли создавать переменные по именам ?
Автор: telyakov
Дата сообщения: 12.09.2008 10:57
Вопрос Телякова Алика:

Цитата:
Как получить hwnd окна по pid процесса ?


Ответ ViSiToRа a.k.a CreatoR:
CreatoR это не ник, CreatoR это стиль жизни!

Цитата:
Так:

Код:
;GUI to check the function
$hGUI = GUICreate("Our GUI")
GUISetState()

$aWindow = _ProcessGetWindow(@AutoItPID)

MsgBox(64, "Results", _
StringFormat("Win Title \t\t\t= %s \nWin Handle \t\t= %s\nOriginal Win Handle \t= %s", $aWindow[0], $aWindow[1], $hGUI))

Func _ProcessGetWindow($iPID)
Local $aWinList = WinList()
Local $aRet[2]

If IsString($iPID) Then $iPID = ProcessExists($iPID)

For $i = 1 To UBound($aWinList)-1
If WinGetProcess($aWinList[$i][1]) = $iPID Then
$aRet[0] = $aWinList[$i][0] ;Title
$aRet[1] = $aWinList[$i][1] ;WinHandle

Return $aRet
EndIf
Next

Return
SetError(1, 0, $aRet)
EndFunc

Автор: ViSiToR
Дата сообщения: 12.09.2008 11:20
Maza Faka 07:57 12-09-2008
Цитата:
Вообще-то не создаёт,  а присваивает значения

Ну почему, и создаёт тоже, ведь если переменная не объявлена, то Assign() её объявляет (если не использовать в качестве последнего параметра 4).


Код:
Assign("Var", "Some Value", 2)
ConsoleWrite($Var)
Автор: Loopback
Дата сообщения: 12.09.2008 11:46
В продолжение недавней дискуссии о запуске скрипта как сервис: на оффоруме выложили UDF для запуска без дополнительных костылей:

http://www.autoitscript.com/forum/index.php?showtopic=80201

Проверил - отлично работает.
Автор: Tipulatoid
Дата сообщения: 12.09.2008 12:01
Пытаюсь делать мастер

Проблема со вторым окном - необходимо чтобы если в элементах Input ничего нет, рядом появлялась бы иконка NotOk.ico (крестик), иначе - иконка Ok.ico (галочка) Сейчас так и есть, только иконки эти некрасиво мерцают - это понятно, т.к. перерисовываются бесконечно. Можно ли уйти от этого мерцания? Если ввести Sleep (100), то начинают резко тормозить переходы по кнопкам Назад Далее. Также нужно, если высвечена хоть одна иконка NotOk.ico, конпка далее стала бы недоступна. заранее Спасибо всем ответившим.



Код: #include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.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("NotOk.ico", -1, 435, 98, 15, 15)
$Icon_2_3_2 = GUICtrlCreateIcon("Ok.ico", -1, 450, 90, 30, 30)
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("NotOk.ico", -1, 435, 173, 15, 15)
$Icon_2_4_2 = GUICtrlCreateIcon("Ok.ico", -1, 450, 165, 30, 30)
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("NotOk.ico", -1, 435, 228, 15, 15)
$Icon_2_5_2 = GUICtrlCreateIcon("Ok.ico", -1, 450, 220, 30, 30)
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("NotOk.ico", -1, 435, 275, 15, 15)
$Icon_2_6_2 = GUICtrlCreateIcon("Ok.ico", -1, 450, 267, 30, 30)
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, 78)
$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"
EndIf
$Label3_3_2 = GuiCtrlCreateLabel($save_path, 48, 265, 435, 25)
GUICtrlSetColor(-1, 0x335EA8)
GUICtrlCreateGroup("", -99, -99, 1, 1)


;Выводим окна на экран
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)

    ;Sleep(100)
    
Switch $Msg[0]
Case $GUI_EVENT_CLOSE, $Exit_Button
If $Msg[0] = $Exit_Button And Not _WinIsVisible($ChildGui_1) Then
$Ask = MsgBox(4096, "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
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
    
    If    GUICtrlRead($Input2_3_1) = "" Then
GUICtrlSetState($Icon_2_3_1, $GUI_SHOW)
GUICtrlSetState($Icon_2_3_2, $GUI_HIDE)
    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)
    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)
    Else
     GUICtrlSetState($Icon_2_5_1, $GUI_HIDE)
     GUICtrlSetState($Icon_2_5_2, $GUI_SHOW)
EndIf

If    GUICtrlRead($UpDownGui_2_6_1) <> 12 Then
     GUICtrlSetState($Icon_2_6_1, $GUI_SHOW)
     GUICtrlSetState($Icon_2_6_2, $GUI_HIDE)
    Else
     GUICtrlSetState($Icon_2_6_1, $GUI_HIDE)
     GUICtrlSetState($Icon_2_6_2, $GUI_SHOW)
EndIf

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

Func _WinIsVisible($hWnd)
Return BitAND(WinGetState($hWnd), 2)
EndFunc
Автор: Leagnus
Дата сообщения: 12.09.2008 12:09
to ynbIpb
Есть библиотека от George (GEOSoft) Gedye по управлению Windows-службами/сервисами.
Но лично я предпочитаю стандартную команду sc, т.к. команда net предназначена для запуска именно сетевых служб.

Код: local $Serv = "NetDDE"
Run(@comspec & " /c " & "sc stop " & $Serv, "", @SW_HIDE)    ;остановили службу NetDDE
Run(@comspec & " /c " & "sc config " & $Serv & " start= disabled", "", @SW_HIDE) ;отключили её, чтобы не запускалась
Автор: ViSiToR
Дата сообщения: 12.09.2008 13:16
Tipulatoid 13:01 12-09-2008
Цитата:
Можно ли уйти от этого мерцания?

Можно использовать метки (переменные), а ещё лучше проверять инпуты не в цикле, а при их изменениях (сообщения в WM_NOTIFY)...


Код: #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, 78)
$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"
EndIf
$Label3_3_2 = GUICtrlCreateLabel($save_path, 48, 265, 435, 25)
GUICtrlSetColor(-1, 0x335EA8)
GUICtrlCreateGroup("", -99, -99, 1, 1)

For $i = $Input2_3_1 To $InputGui_2_6_1
_CheckInputsProc($i)
Next

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 $Msg[0] = $Exit_Button And 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
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($nCtrlID)
Switch $nCtrlID
Case $Input2_3_1
If GUICtrlRead($Input2_3_1) = "" Then
GUICtrlSetState($Icon_2_3_1, $GUI_SHOW)
GUICtrlSetState($Icon_2_3_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon_2_3_1, $GUI_HIDE)
GUICtrlSetState($Icon_2_3_2, $GUI_SHOW)
EndIf
Case $Input2_4_1
If GUICtrlRead($Input2_4_1) = "" Then
GUICtrlSetState($Icon_2_4_1, $GUI_SHOW)
GUICtrlSetState($Icon_2_4_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon_2_4_1, $GUI_HIDE)
GUICtrlSetState($Icon_2_4_2, $GUI_SHOW)
EndIf
Case $Input2_5_1
If GUICtrlRead($Input2_5_1) = "" Then
GUICtrlSetState($Icon_2_5_1, $GUI_SHOW)
GUICtrlSetState($Icon_2_5_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon_2_5_1, $GUI_HIDE)
GUICtrlSetState($Icon_2_5_2, $GUI_SHOW)
EndIf
Case $InputGui_2_6_1
If GUICtrlRead($InputGui_2_6_1) <> 12 Then
GUICtrlSetState($Icon_2_6_1, $GUI_SHOW)
GUICtrlSetState($Icon_2_6_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon_2_6_1, $GUI_HIDE)
GUICtrlSetState($Icon_2_6_2, $GUI_SHOW)
EndIf
EndSwitch
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($nID)
EndSwitch

Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Автор: Maza Faka
Дата сообщения: 12.09.2008 13:23
ViSiToR

Цитата:
Ну почему, и создаёт тоже, ведь если переменная не объявлена, то Assign() её объявляет

Выдаёт в консоль вот такие сообщения:

Код:
: WARNING: $Var: possibly used before declaration.
ConsoleWrite($Var)
~~~~~~~~~~~~~~~~~^
: ERROR: $Var: undeclared global variable.
ConsoleWrite($Var)
Автор: alex832008
Дата сообщения: 12.09.2008 13:38
А как будет выглядеть функция Eval для массива ?
например нужно вернуть значение $mas[$i][$j]
Автор: ViSiToR
Дата сообщения: 12.09.2008 13:50
Maza Faka 14:23 12-09-2008
Цитата:
Выдаёт в консоль вот такие сообщения

Это видимо потому что проверка синтаксиса выполняется до запуска скрипта...
Добавлено: Хотя нет, у меня нормально, только что проверил.
Попробуй запустить не из SciTE.


Цитата:
ViSiToR выкладывал пример создания мастера

Ну вообще то кажется по просьбе Tipulatoid я его и выкладывал, и в примере он и используется - Вопрос то не в том как мастер сделать , почитай его пост внимательней.

alex832008 14:38 12-09-2008
Цитата:
нужно вернуть значение $mas[$i][$j]

Используем Execute:


Код:
Dim $Array[2] = ["Test 1", "Test 2"]

$sEVal_0 = Execute("$Array[0]")
$sEVal_1 = Execute("$Array[1]")

ConsoleWrite($sEVal_0 & @CRLF & $sEVal_1 & @CRLF)
Автор: alex832008
Дата сообщения: 12.09.2008 14:47

Цитата:
alex832008 14:38 12-09-2008
Цитата:нужно вернуть значение $mas[$i][$j]

Используем Execute:


Код:
Dim $Array[2] = ["Test 1", "Test 2"]

$sEVal_0 = Execute("$Array[0]")
$sEVal_1 = Execute("$Array[1]")

ConsoleWrite($sEVal_0 & @CRLF & $sEVal_1 & @CRLF)


Ну а к примеру
$bases = IniReadSection("C:\Temp\BASELIST.ini", "bases") ; читаем из INI базы и их общее количество
If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.")
EndIf;
for $i=1 to $bases[0][0] ; читаем из INI базы
Assign($bases[$i][1],IniReadSection("C:\Temp\BASELIST.ini", $bases[$i][1])) ; тут формируются массивы, имена которых совпадают с именами папок с базами, а в самих смассивах содержаться имена баз
    If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.") ;
    EndIf
Next

Т.е. в первом массиве $bases содержатся секции,
далее создаем по секциям массивы. которые содержат значения секций
А вот как работать с самими массивами секций, т.е. как к примеру перейти на элемнт массива секции ?

Автор: ViSiToR
Дата сообщения: 12.09.2008 14:51
alex832008 15:47 12-09-2008
Цитата:
как к примеру перейти на элемнт массива секции ?

Т.е прочитать массив в массиве?


Код: $Element1_Array = $bases[1][1]
ConsoleWrite($Element1_Array[1][1])
Автор: alex832008
Дата сообщения: 12.09.2008 14:59

Цитата:
$Element1_Array = $bases[1][1]
ConsoleWrite($Element1_Array[1][1])



В примере выше $bases[1][1] имеет значение, далее объявилася двухмерный массив с именем значения $bases[1][1]. А вот как увидеть-то этот массив?
К примеру выести значения.
Я то лично знаю, как выглядят имена массивов, ведь они в первой секции ИНИ, но как к ним обратиться, когда они уже являются массивами ?
Автор: ViSiToR
Дата сообщения: 12.09.2008 16:27
alex832008 15:59 12-09-2008
Цитата:
как к ним обратиться, когда они уже являются массивами ?

Я же показал это выше... или я не понимаю что нужно. В $bases[1][1] содержится (как я понял) массив, просто помещаем его в новую переменную (для извлечения/просмотра) и пользуемся ей как массивом.

На заметку (на всякий пожарный):

Это..

Код: Assign($bases[$i][1],IniReadSection("C:\Temp\BASELIST.ini", $bases[$i][1]))
Автор: BIOS999
Дата сообщения: 12.09.2008 16:54
Кто-нибудь помогите решить задачку:
Есть две программы написанных на AutoIt-е
Надо чтобы вовремя их работы, одна программа
Передала другой значение переменно $pass.
Через запись реестра или через запись в файл не получится.
Надо чтобы нельзя было перехватить это значение.

Заранее спасибо, BIOS.
Автор: alex832008
Дата сообщения: 12.09.2008 17:08

Цитата:
alex832008 15:59 12-09-2008
Цитата:как к ним обратиться, когда они уже являются массивами ?

Я же показал это выше... или я не понимаю что нужно. В $bases[1][1] содержится (как я понял) массив, просто помещаем его в новую переменную (для извлечения/просмотра) и пользуемся ей как массивом.

На заметку (на всякий пожарный):

Это..

Код:Assign($bases[$i][1],IniReadSection("C:\Temp\BASELIST.ini", $bases[$i][1]))


То же самое что и это:


Код:$bases[$i][1] = IniReadSection("C:\Temp\BASELIST.ini", $bases[$i][1])


Т.е в $base[$i][1] теперь содержится ещё массив, который возвращает IniReadSection().


Ну к примеру сначла $bases[3]=["r1","r2","r3"]
for $i=1 to 3
Assign($bases[$i][1],IniReadSection("C:\Temp\BASELIST.ini", $bases[$i][1]))
next
Мы получили массивы $r1,$r2,$r3, но $bases[3]=["r1","r2","r3"]
но это я знаю, что надо объявлять и обращаться $r1,$r2,$r3, но надо чтобы все зависело от ини, т.е сегодня там одна секция, а завтра 50.
т.е. как я понимаю необходимо обращаться к переменной $&base[2], но такую переменную я же не могу показать.Может я чего-то не понимаю....
Автор: ViSiToR
Дата сообщения: 12.09.2008 17:33
alex832008 18:08 12-09-2008
Цитата:
Мы получили массивы $r1,$r2,$r3

Откуда мы их получили? тут просто для каждого элемента от 1 до 3 будет присвоено значение массива, т.е массив в массиве.

Насколько я начинаю понимать, дела обстоят немного проще(?). Нужно получить список секции, и каждую секцию поместить в массив?

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


Код: #include <Array.au3>

$sIniFile = "BASELIST.ini"

;Читаем имена всех секции в файле
$aSectNames = IniReadSectionNames($sIniFile)

If Not @error Then
;Читаем в массив каждую секцию в файле BASELIST.ini
For $i = 1 To UBound($aSectNames)-1
Assign("aSection_" & $i, IniReadSection($sIniFile, $aSectNames[$i]), 2)

$aTmpArr = Eval("aSection_" & $i)

;Отображаем только что созданный массив содержащий записи текущей секции - для проверки
_ArrayDisplay($aTmpArr, "Section: [" & $aSectNames[$i] & "]")
Next

;Выводим на экран ключ и значение первого элемента в первой секции
MsgBox(64, "", $aSection_1[1][0] & "=" & $aSection_1[1][1])

;Выводим на экран ключ и значение первого элемента во второй секции
MsgBox(64, "", $aSection_2[1][0] & "=" & $aSection_2[1][1])

;Теперь каждая переменная $aSection_N содержит массив с секциями, этих переменных столько, сколько секции в ини файле
;Их колчество можно определить по $aSectNames[0]

ConsoleWrite($aSectNames[0])
EndIf
Автор: Maza Faka
Дата сообщения: 13.09.2008 08:47
ViSiToR

Цитата:
Это видимо потому что проверка синтаксиса выполняется до запуска скрипта...
Добавлено: Хотя нет, у меня нормально, только что проверил.
Попробуй запустить не из SciTE.

Да, в общем-то работает, если игнорировать ошибки и предупреждения, но всё же странно, почему SciTE ругается. Запостю вопрос на офф. форуме

BIOS999

Цитата:
Кто-нибудь помогите решить задачку:

Не совсем понятна задачка, может быть этот пример (его когда-то выкладывал ViSiToR) поможет тебе:

Код: #include <GuiConstants.au3>

Global $AppTitle = "My App"

$Main_GUI = GUICreate($AppTitle, 300, 200)

$Reciever_Edit = GUICtrlCreateEdit("", -500, -500)
GUICtrlSetState(-1, $GUI_HIDE)

$CheckConnection_Button = GUICtrlCreateButton("Check Connection", 20, 160, 120, 20)

GUISetState()

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case
$CheckConnection_Button
$InetIsConnected
= _InetIsConnected() = 1
MsgBox(64, "Results", "Inet is Connected: " & $InetIsConnected)
EndSwitch
WEnd

Func
_InetIsConnected()
Local $sScript_Content = '#NoTrayIcon' & @CRLF
$sScript_Content &= '$hWinInetDll = DllOpen("wininet.dll")' & @CRLF
$sScript_Content &= 'If $hWinInetDll = -1 Then SendDataToParent(SetError(1, 0, -1))' & @CRLF
$sScript_Content &= '$IsConnected = DllCall($hWinInetDll, "int", "InternetGetConnectedState", "int", 0, "int", 0)' & @CRLF
$sScript_Content &= 'DllClose($hWinInetDll)' & @CRLF
$sScript_Content &= 'If IsArray($IsConnected) Then' & @CRLF
$sScript_Content &= ' SendDataToParent($IsConnected[0])' & @CRLF
$sScript_Content &= 'Else' & @CRLF
$sScript_Content &= ' SendDataToParent(False)' & @CRLF
$sScript_Content &= 'EndIf' & @CRLF & @CRLF
$sScript_Content &= 'Func SendDataToParent($sData)' & @CRLF
$sScript_Content &= ' $iParent_WinHandle = WinGetHandle("[CLASS:AutoIt v3 GUI; TITLE:' & $AppTitle & ']")' & @CRLF
$sScript_Content &= ' ControlSetText($iParent_WinHandle, "", "Edit1", $sData, 1)' & @CRLF
$sScript_Content &= 'EndFunc' & @CRLF

Local $sTmp_Script = @TempDir & "\AutoIt_Tmp_Script.call"

Local $hOpen_Tmp_Script = FileOpen($sTmp_Script, 2)
FileWrite($hOpen_Tmp_Script, $sScript_Content)
FileClose($hOpen_Tmp_Script)

RunWait(@AutoItExe & ' /ErrorStdOut /AutoIt3ExecuteScript "' & $sTmp_Script & '"', @ScriptDir, @SW_HIDE)

Local $sRet_Data = GUICtrlRead($Reciever_Edit)

GUICtrlSetData($Reciever_Edit, "")
FileDelete($sTmp_Script)

Return $sRet_Data
EndFunc
Автор: Tipulatoid
Дата сообщения: 13.09.2008 09:07
ViSiToR
Спасибо большое. А можно доделать тот пример? Требуется, если хотя бы одна из иконок $Icon2_3_1 $Icon2_4_1 $Icon2_5_1 $Icon2_6_1 имеет статус $GUI_SHOW кнопка Далее стала бы недоступна (в противном случае - доступна). Куда только не сую в код эти проверки - всё не то получается.
Автор: ViSiToR
Дата сообщения: 13.09.2008 22:52
Tipulatoid 10:07 13-09-2008
Цитата:
можно доделать тот пример?

Да. Также немного изменил принцип проверки, теперь при изменении в любом из инпутов, будут проверяться все остальные, это чтобы сократить количество проверок, а также это облегчает задать статус кнопке «Далее».


Код: #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
Автор: Tipulatoid
Дата сообщения: 14.09.2008 03:58
ViSiToR
Many thanks
Автор: Maza Faka
Дата сообщения: 14.09.2008 09:27
ViSiToR
Tipulatoid
Неплохой пример создания Wizard GUI. Но мне не нравится в нём одно свойство, когда я запускаю мастера или выбираю какой-либо элемент, то главное окно выглядит деактивизированным, что портит весь эффект. Поискав в сети, нашёл кое-какие решения. Предлагаю вашему вниманию:
[more]

Код: #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("", 498, 318, 1, 1, BitOr($WS_POPUP, $WS_CHILD))
GUISetBkColor(0xC0D0E0, $ChildGui_1)
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, BitOr($WS_POPUP, $WS_CHILD))
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")
GUIRegisterMsg($WM_ACTIVATE, "WndProc")

;Выводим окна на экран
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

Func WndProc($hWnd, $Msg, $wParam, $lParam)
Local $nActiv = BitAnd($wParam, 0x0000FFFF)
Local $hActWnd = $lParam

Switch $hActWnd
Case $ChildGui_1, $ChildGui_2, $ChildGui_3
If $nActiv = 0 Then
DllCall("user32.dll", "int", "SendMessage", "hwnd", $Main_GUI, "int", $WM_NCACTIVATE, "int", 1, "int", 0)
EndIf
EndSwitch
EndFunc
Автор: ViSiToR
Дата сообщения: 14.09.2008 14:08
Maza Faka 10:27 14-09-2008
Цитата:
не нравится в нём одно свойство

Мне тоже


Цитата:
Предлагаю вашему вниманию

Отличное решение, спасибо.

Кстати, этот Wizard можно и подругому написать, например создавать всё в одном окне, и отображать только нужные элементы на определённых этапах, но это скорее всего потребует больше кодинга, позже если будет время попробую написать.
Автор: bornbill
Дата сообщения: 14.09.2008 16:32
народ может кто поделится простым примером?
задача разделена на 4 части

1. полученние данных А1 каждые 30 сек
2. получение данных Б1 каждые 8 сек
3. Обработка данных А1 если накопилось более двух сборов
4. Обработка данных Б1 если накопилось более 8 сборов

хотелось бы сделать одной задачей но так сказать в несколько потоков, как это реализовать заранее благодарен.

зы получение и обработка уже отработанные задачи тоесть как их делать я знаю и умею интересует только как всё вместе...
да и хотелось бы если время 1. будет равно времени начала выполнения 2. то выполнить вначале 1 потом 2....
Автор: ViSiToR
Дата сообщения: 14.09.2008 16:38
15:08 14-09-2008
Цитата:
позже если будет время попробую написать

Вот:


Код: #include <GuiConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
;

Global $Img_Path = @SystemDir & "\oobe\images\wpakey.jpg" ;@SystemDir & "\Setup.bmp"
Global $iStep = 1

$Main_GUI = GUICreate("Wizard Demo!", 400, 300)

_GUICtrlCreateSeperator(0, 2, 265, 3, 396)

$Back_Button = GUICtrlCreateButton("<<Back", 170, 270, 60)
GUICtrlSetState(-1, $GUI_DISABLE)
$Next_Button = GUICtrlCreateButton("Next>>", 240, 270, 60)

$Exit_Button = GUICtrlCreateButton("Exit", 325, 270, 60)

;Step 1
$Pic_Step1 = GUICtrlCreatePic($Img_Path, 2, 2, 160, 263, $SS_SUNKEN, $WS_EX_STATICEDGE+$WS_EX_CLIENTEDGE)
$Label_Step1 = GUICtrlCreateLabel("Wellcome!", 240, 20, 150)
GUICtrlSetFont(-1, 12, 800)

;Step 2
$Input_Step2 = GUICtrlCreateInput("Some input", 10, 20, 180, 20)
$CheckBox_Step2 = GUICtrlCreateCheckbox("Some checkbox", 10, 50)

;Step 3
$Edit_Step3 = GUICtrlCreateEdit("Some Edit", 10, 20, 180, 220)
$Label_Step3 = GUICtrlCreateLabel("Some Label", 220, 20)

_Elements_SetState($Input_Step2, $Label_Step3, $GUI_HIDE)

GUISetState(@SW_SHOW, $Main_GUI)

While 1
$Msg = GUIGetMsg()

Switch $Msg
Case $GUI_EVENT_CLOSE, $Exit_Button
If $iStep > 1 Then
$Ask = MsgBox(256+52, "Attention", "Are you sure you want to exit the Wizard now?", 0, $Main_GUI)
If $Ask <> 6 Then ContinueLoop
EndIf

Exit
Case
$Next_Button
$iStep
+= 1

Switch $iStep
Case 2
_Elements_SetState($Pic_Step1, $Label_Step1, $GUI_HIDE)
_Elements_SetState($Input_Step2, $CheckBox_Step2, $GUI_SHOW)

GUICtrlSetState($Back_Button, $GUI_ENABLE)
Case 3
_Elements_SetState($Input_Step2, $CheckBox_Step2, $GUI_HIDE)
_Elements_SetState($Edit_Step3, $Label_Step3, $GUI_SHOW)

GUICtrlSetState($Next_Button, $GUI_DISABLE)
EndSwitch
Case $Back_Button
$iStep -= 1

Switch $iStep
Case 2
_Elements_SetState($Edit_Step3, $Label_Step3, $GUI_HIDE)
_Elements_SetState($Input_Step2, $CheckBox_Step2, $GUI_SHOW)

GUICtrlSetState($Next_Button, $GUI_ENABLE)
Case 1
_Elements_SetState($Input_Step2, $CheckBox_Step2, $GUI_HIDE)
_Elements_SetState($Pic_Step1, $Label_Step1, $GUI_SHOW)

GUICtrlSetState($Back_Button, $GUI_DISABLE)
GUICtrlSetState($Next_Button, $GUI_ENABLE)
EndSwitch
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

Func _Elements_SetState($iFirstCtrlID, $iLastCtrlID, $iState)
For $i = $iFirstCtrlID To $iLastCtrlID
GUICtrlSetState($i, $iState)
Next
EndFunc
Автор: bornbill
Дата сообщения: 14.09.2008 19:55
млин ну данные приходят просто данные откуда с сервера в форме xml документов
тоесть есть сайт на котором постоянно генерятся новые два файла, изминяються они приблизительно так я указал, хотелось бы их обрабатывать...

тоесть каждая из задач реализованна но хотелось бы потоки сейчас сделано 4 файликами которые каждый выполняют свою роль + блокировка друг друга по файликам тоесть что выполняеться в данный момент а хочет всё засунуть в один процесс, который бы содержал события срабатывающие по таймеру.... скажем так...
Автор: Hackproof
Дата сообщения: 14.09.2008 21:30
Потоков нема, сами страдаем...
Автор: ViSiToR
Дата сообщения: 14.09.2008 23:09
bornbill
Выложи скрипты, посмотрим если можно их совместить.
Автор: Maza Faka
Дата сообщения: 15.09.2008 07:01
ViSiToR

Цитата:
Вот:

Да, я думаю, что такое решение лучше предыдущего

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.