Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Скрипт для выполнения команд после подтверждения (http://forum.oszone.net/showthread.php?t=136439)

Pozia 31-03-2009 21:36 1080464

Скрипт для выполнения команд после подтверждения
 
Нужен скрипт который после запуска покажет окно с вопросом - Вы хотите установить ....? И две кнопки "Да" "Нет". При нажатии Да выполнялись такие команды:

IF EXIST "%systemroot%\system32\PS.ini" goto Ok
exit
:Ok
start /wait WSidebar.exe /VERYSILENT
RD /S /Q "%ProgramFiles%\Windows Sidebar\Gadgets"
xcopy settings.ini "%UserProfile%\Local Settings\Application Data\Microsoft\Windows Sidebar\" /S /H /Y
xcopy Gadgets "%ProgramFiles%\Windows Sidebar\Gadgets\" /S /H /Y
start /wait WLMAIL.exe
start /wait REGEDIT /S WLMAIL.reg
exit

Если нажать Нет то просто скрипт завершит свою работу. И желательно чтобы имелось возможность настройки появляющегося окна (размеры его, положение кнопок). Заранее спасибо.

morgan1991 31-03-2009 23:16 1080584

Код:

#include<guiconstants.au3>
$width = 300
$height = 100

$main = GUICreate("title", $width, $height)
GUISetBkColor(0xBEBEBE) ;цвет окна
GUICtrlCreateLabel("Установить?", 10, 20)
$button_yes = GUICtrlCreateButton("Да", 10, 50)
$button_no = GUICtrlCreateButton("Нет", 50, 50)

GuiSetState(@SW_SHOW, $main)

GUISetState()
While 1
        $msg = GUIGetMsg()
        If $msg = $button_no Or $msg = $GUI_EVENT_CLOSE Then Exit
        If $msg = $button_yes Then
                MsgBox(0, "", "запустился ваш код!")
                #cs
                IF EXIST "%systemroot%\system32\PS.ini" goto Ok
                exit
                :Ok
                start /wait WSidebar.exe /VERYSILENT
                RD /S /Q "%ProgramFiles%\Windows Sidebar\Gadgets"
                xcopy settings.ini "%UserProfile%\Local Settings\Application Data\Microsoft\Windows Sidebar\" /S /H /Y
                xcopy Gadgets "%ProgramFiles%\Windows Sidebar\Gadgets\" /S /H /Y
                start /wait WLMAIL.exe
                start /wait REGEDIT /S WLMAIL.reg
                exit
                #ce
        EndIf
WEnd

Как выполнить ваш код на автоите я не знаю

Creat0R 31-03-2009 23:23 1080591

Цитата:

Цитата morgan1991
Как выполнить ваш код на автоите я не знаю »

Вот так примерно:

Код:

If $msg = $button_yes Then
                MsgBox(0, "", "запустился ваш код!")
               
                If Not FileExists(@SystemDir & "\PS.ini") Then Exit
               
                RunWait("WSidebar.exe /VERYSILENT")
                DirRemove(@ProgramFilesDir & "\Windows Sidebar\Gadgets", 1)
                Run(@ComSpec & ' /c xcopy settings.ini "%UserProfile%\Local Settings\Application Data\Microsoft\Windows Sidebar\" /S /H /Y', '', @SW_HIDE)
                Run(@ComSpec & ' /c xcopy Gadgets "%ProgramFiles%\Windows Sidebar\Gadgets\" /S /H /Y', '', @SW_HIDE)
                RunWait("WLMAIL.exe")
                RunWait("REGEDIT /S WLMAIL.reg")
                Exit
        EndIf


Pozia 01-04-2009 18:53 1081305

morgan1991, при нажатии Да не закрывается появившееся окно. Как исправить?

добавил Exit перед последним EndIf но некрасиво получается. Окно закрывается после выполнения всех команд. Мне бы хотелось чтобы после нажатия кнопки Да окно закрывалось и только потом выполнялись мои команды

Creat0R 01-04-2009 19:03 1081312

Цитата:

Цитата Pozia
тобы после нажатия кнопки Да окно закрывалось и только потом выполнялись мои команды »

Так:

Код:

#include <GUIConstants.au3>

$iWidth = 300
$iHeight = 100

$hGUI = GUICreate("Title", $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна

GUICtrlCreateLabel("Установить?", 10, 20)

$Yes_Button = GUICtrlCreateButton("Да", 10, 50)
$No_Button = GUICtrlCreateButton("Нет", 50, 50)

GUISetState(@SW_SHOW, $hGUI)

While 1
    Switch GUIGetMsg()
        Case $No_Button, $GUI_EVENT_CLOSE
            Exit
        Case
$Yes_Button
            GUIDelete($hGUI) ;Удаление окна

            MsgBox(0, "", "Запустился ваш код!")

            If Not FileExists(@SystemDir & "\PS.ini") Then Exit

            RunWait("WSidebar.exe /VERYSILENT")
            DirRemove(@ProgramFilesDir & "\Windows Sidebar\Gadgets", 1)

            Run(@ComSpec & ' /c xcopy settings.ini "%UserProfile%\Local Settings\Application Data\Microsoft\Windows Sidebar\"' & _
                ' /S /H /Y', '', @SW_HIDE)

            Run(@ComSpec & ' /c xcopy Gadgets "%ProgramFiles%\Windows Sidebar\Gadgets\" /S /H /Y', '', @SW_HIDE)

            RunWait("WLMAIL.exe")
            RunWait("REGEDIT /S WLMAIL.reg")

            Exit
    EndSwitch
WEnd

?

Pozia 01-04-2009 19:50 1081347

Creat0R, мне нужно в окно добавить еще несколько строк тектса. Как это сделать?

Creat0R 01-04-2009 20:06 1081361

Цитата:

Цитата Pozia
нужно в окно добавить еще несколько строк тектса. Как это сделать? »

См. GUICtrlCreateLabel().

morgan1991 01-04-2009 20:14 1081366

можно добавить это:
GUICtrlCreateLabel("ваш текст", 10, 50)
где 10 это отступ от левого края окна а 50 отступ от верхнего края окна

Pozia 01-04-2009 21:35 1081429

Creat0R, а как сделать чтобы после появления окна на кнопке Да появился обратный отсчет 30 сек и если действие не выбрано то нажималась бы кнопка Да после истечения времени автоматически?

Creat0R 02-04-2009 01:31 1081604

Цитата:

Цитата Pozia
как сделать чтобы после появления окна на кнопке Да появился обратный отсчет 30 сек »

Код:

#include <GUIConstants.au3>

Global $iTime_Expired = 0, $iTime_Counter = 30
Global $iWidth = 300, $iHeight = 100

$hGUI = GUICreate("Title", $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна

GUICtrlCreateLabel("Установить?", 10, 20)

$Yes_Button = GUICtrlCreateButton("Да", 10, 60, 60)
$No_Button = GUICtrlCreateButton("Нет", 80, 60, 60)

GUISetState(@SW_SHOW, $hGUI)

_Set_YesButton_Timer_Proc()
AdlibEnable("_Set_YesButton_Timer_Proc", 1000)

While 1
    $vMsg = GUIGetMsg()

    If $iTime_Expired Then $vMsg = $Yes_Button

    Switch $vMsg
        Case $No_Button, $GUI_EVENT_CLOSE
            Exit
        Case
$Yes_Button
            AdlibDisable() ;Отключение функции отсчёта
            GUIDelete($hGUI) ;Удаление окна

            MsgBox(0, "", "Запустился ваш код!")

            If Not FileExists(@SystemDir & "\PS.ini") Then Exit

            RunWait("WSidebar.exe /VERYSILENT")
            DirRemove(@ProgramFilesDir & "\Windows Sidebar\Gadgets", 1)

            Run(@ComSpec & ' /c xcopy settings.ini ' & _
                '"%UserProfile%\Local Settings\Application Data\Microsoft\Windows Sidebar\" /S /H /Y', '', @SW_HIDE)

            Run(@ComSpec & ' /c xcopy Gadgets "%ProgramFiles%\Windows Sidebar\Gadgets\" /S /H /Y', '', @SW_HIDE)

            RunWait("WLMAIL.exe")
            RunWait("REGEDIT /S WLMAIL.reg")

            Exit
    EndSwitch
WEnd

Func
_Set_YesButton_Timer_Proc()
    GUICtrlSetData($Yes_Button, "Да (" & $iTime_Counter & ")")

    $iTime_Counter -= 1

    If $iTime_Counter < 0 Then
        AdlibDisable()
        $iTime_Expired = 1
    EndIf
EndFunc


Pozia 15-09-2010 22:20 1496236

Creat0R, сделал вот такой скрипт:

Код:

#NoTrayIcon
#include <GUIConstants.au3>

$iWidth = 365
$iHeight = 190

$hGUI = GUICreate("DriversNEW", $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна

GUICtrlCreateLabel("Хотите установить обновленный пакет драйверов DriversNEW?", 10, 10)

$1_Button = GUICtrlCreateButton("      DriversNEW Computer      ", 20, 120)
$2_Button = GUICtrlCreateButton("      DriversNEW Notebook      ", 190, 120)
$3_Button = GUICtrlCreateButton("                                        No DriversNEW                                        ", 20, 150)

GUISetState(@SW_SHOW, $hGUI)

While 1
    Switch GUIGetMsg()

        Case $1_Button
        RunWait("DriversNEWComputer.cmd")
        Exit
       
        Case $2_Button
        RunWait("DriversNEWNotebook.cmd")
        Exit
       
        Case $3_Button, $GUI_EVENT_CLOSE
        GUIDelete($hGUI) ;Удаление окна
              Exit

    EndSwitch
WEnd

и на Т-40 не запускаются батники после нажатия кнопок. На живой системе все работает. Почему так? Чтобы скрипт запускался на Т-40 предварительно через ресторатор удалил манифест.

Pozia 24-06-2012 16:32 1939721

вот на этот скрипт
Цитата:

Цитата Creat0R
Код:
#include <GUIConstants.au3>
Global $iTime_Expired = 0, $iTime_Counter = 30
Global $iWidth = 300, $iHeight = 100
$hGUI = GUICreate("Title", $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна
GUICtrlCreateLabel("Установить?", 10, 20)
$Yes_Button = GUICtrlCreateButton("Да", 10, 60, 60)
$No_Button = GUICtrlCreateButton("Нет", 80, 60, 60)
GUISetState(@SW_SHOW, $hGUI)
_Set_YesButton_Timer_Proc()
AdlibEnable("_Set_YesButton_Timer_Proc", 1000)
While 1
$vMsg = GUIGetMsg()
If $iTime_Expired Then $vMsg = $Yes_Button
Switch $vMsg
Case $No_Button, $GUI_EVENT_CLOSE
Exit
Case $Yes_Button
AdlibDisable() ;Отключение функции отсчёта
GUIDelete($hGUI) ;Удаление окна
MsgBox(0, "", "Запустился ваш код!")
If Not FileExists(@SystemDir & "\PS.ini") Then Exit
RunWait("WSidebar.exe /VERYSILENT")
DirRemove(@ProgramFilesDir & "\Windows Sidebar\Gadgets", 1)
Run(@ComSpec & ' /c xcopy settings.ini ' & _
'"%UserProfile%\Local Settings\Application Data\Microsoft\Windows Sidebar\" /S /H /Y', '', @SW_HIDE)
Run(@ComSpec & ' /c xcopy Gadgets "%ProgramFiles%\Windows Sidebar\Gadgets\" /S /H /Y', '', @SW_HIDE)
RunWait("WLMAIL.exe")
RunWait("REGEDIT /S WLMAIL.reg")
Exit
EndSwitch
WEnd
Func _Set_YesButton_Timer_Proc()
GUICtrlSetData($Yes_Button, "Да (" & $iTime_Counter & ")")
$iTime_Counter -= 1
If $iTime_Counter < 0 Then
AdlibDisable()
$iTime_Expired = 1
EndIf
EndFunc »

вылетает такая шибка:
в чем дело?

madmasles 24-06-2012 18:06 1939753

Pozia,
Поменяйте
Код:

;AdlibEnable -->
AdlibRegister
;AdlibDisable -->
AdlibUnRegister


Pozia 27-06-2012 23:37 1941729

madmasles, а почему раньше все работало?

madmasles 27-06-2012 23:46 1941733

Цитата:

Цитата Pozia
а почему раньше все работало? »

ИМХО, у Вас была старая версия AutoIt и все работало, а потом Вы ее обновили...


Время: 11:30.

Время: 11:30.
© OSzone.net 2001-