Что нового

[Элементы GUI] окно и процесс

Ромка Пупков

Новичок
Сообщения
25
Репутация
1
приведите пожалуйста пример скрипта, в котором создаётся окошко с надписью, которое нельзя закрыть и которое закроется, только когда исчезнет определённый процесс

спасибо заранее
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Код:
$hGUI = GUICreate("Ждем, пока закроется калькулятор...",400,300)
$hBut = GUICtrlCreateButton("Нажми!",10,10,100,30)
GUISetState()

$iPid = Run("calc.exe",@SystemDir,@SW_MINIMIZE)

While 1
	Switch GUIGetMsg()
		Case -3
			TrayTip("Нет!","Сначала закрой калькулятор!",2,3)
		Case $hBut
			TrayTip("Подсказка...","Закрой калькулятор",2,1)
	EndSwitch
	If Not ProcessExists($iPid) Then Exit
WEnd
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Код:
$hGUI = GUICreate("Ждем, пока закроется калькулятор...",400,300) ; Создаем окно
$hBut = GUICtrlCreateButton("Нажми!",10,10,100,30) ; Создаем кнопку (это вообще не обязательно)
GUISetState() ; Делаем окно видимым

$iPid = Run("calc.exe",@SystemDir,@SW_MINIMIZE) ; Окрываем процесс и записываем его числовой итендификатор в переменную $iPid


While 1 ; Бесконечный цикл
    Switch GUIGetMsg() ; Получаем сообщение окна
        Case -3 ; Если хотели закрыть окно
            TrayTip("Нет!","Сначала закрой калькулятор!",2,3)
        Case $hBut ; Если нажата кнопка
            TrayTip("Подсказка...","Закрой калькулятор",2,1)
    EndSwitch
    If Not ProcessExists($iPid) Then Exit ; Если процесс (по идентификатору) не существует - выходим...
WEnd ; Конец цикла
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
А так?

Код:
$hGUI = GUICreate("Ждем, пока закроется калькулятор...",400,300) ; Создаем окно
$hBut = GUICtrlCreateButton("Нажми!",10,10,100,30) ; Создаем кнопку (это вообще не обязательно)

$iPid = Run("calc.exe",@SystemDir,@SW_MINIMIZE) ; Окрываем процесс и записываем его числовой итендификатор в переменную $iPid

WinWait("Калькулятор")
GUISetState() ; Делаем окно видимым

While 1 ; Бесконечный цикл
    Switch GUIGetMsg() ; Получаем сообщение окна
        Case -3 ; Если хотели закрыть окно
            TrayTip("Нет!","Сначала закрой калькулятор!",2,3)
        Case $hBut ; Если нажата кнопка
            TrayTip("Подсказка...","Закрой калькулятор",2,1)
    EndSwitch
    If Not ProcessExists($iPid) Then
		GUIDelete($hGUI)
		Exit ; Если процесс (по идентификатору) не существует - выходим...
	EndIf
WEnd ; Конец цикла


А вообще советую почитать справку! Там есть примеры, которые могут удаблетворить ваши желания :laugh: ;)

:IL_AutoIt_1:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Семёнычев Роман [?]
окно закрывается, не дождавшись процесса
А так:
Код:
Run(@SystemDir & '\calc.exe') ; Окрываем процесс
$iPid = ProcessWait('calc.exe', 10)
If Not $iPid Then
	MsgBox(16, 'Error', 'Не дождались :(')
	Exit
EndIf
GUICreate('Ждем, пока закроется калькулятор...', 400, 300) ; Создаем окно
$hBut = GUICtrlCreateButton('Нажми!', 10, 10, 100, 30) ; Создаем кнопку (это вообще не обязательно)
GUISetState() ; Делаем окно видимым

While 1 ; Бесконечный цикл
	Switch GUIGetMsg() ; Получаем сообщение окна
		Case -3 ; Если хотели закрыть окно
			TrayTip('Нет!', 'Сначала закрой калькулятор!', 2, 3)
		Case $hBut ; Если нажата кнопка
			TrayTip('Подсказка...', 'Закрой калькулятор', 2, 1)
	EndSwitch
	If Not ProcessExists($iPid) Then
		ExitLoop
	EndIf
WEnd ; Конец цикла
GUIDelete()
MsgBox(64, 'Info', 'Процесса нет')
 
Верх