Компьютерный форум 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=238241)

Pozia 09-07-2012 19:51 1948851

Как выполнить комманду введенную интерактивно?
 
Мне необходимо выполнить команду:
Код:

renuser.exe Администратор User
Где User - введенное интерактивно имя пользователя.
Если имя пользователя не введено в течении минуты, то "Ок" нужно нажать автоматически и вместо User подставить заранее определенное в скрипте имя.
Как это реализовать на автоит?
Спасибо за помощь.

Iska 10-07-2012 01:13 1949057

Например, так:
Код:

AutoItSetOption("MustDeclareVars", 1)

Local $sUserName = "SomeUser"
Local $sNewUserName

$sNewUserName = InputBox("Title", "Prompt", $sUserName, "", Default, Default, Default, Default, 60)

Switch @error
        Case 0 ; Success input
                RunWait("renuser.exe Администратор " & $sNewUserName)
        Case 1 ; Cancel input
                ConsoleWrite("User cancelled input" & @CRLF)
        Case 2 ; Input timeout
                RunWait("renuser.exe Администратор " & $sUserName)
        Case Else ; Other errors
                ConsoleWrite("Other errors" & @CRLF)
EndSwitch

Exit(0)


Pozia 10-07-2012 23:33 1949645

Iska, спасибо. Вот у меня еще есть такой скрипт:
Код:

#include <GUIConstants.au3>
Global $iTime_Expired = 0, $iTime_Counter = 600
Global $iWidth = 292, $iHeight = 80
$hGUI = GUICreate(".Net FrameWork 4.0 SP1", $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна
GUICtrlCreateLabel("Хотите установить .Net FrameWork 4.0 SP1", 10, 10)
$Yes_Button = GUICtrlCreateButton("Да", 10, 40, 130)
$No_Button = GUICtrlCreateButton("Нет", 150, 40, 130)
GUISetState(@SW_SHOW, $hGUI)
_Set_YesButton_Timer_Proc()
AdlibRegister("_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
            AdlibUnRegister() ;Отключение функции отсчёта
            GUIDelete($hGUI) ;Удаление окна
            RunWait("NetFx40_Win7_SP1_x86_x64.exe -aiqlk -gm2")
            Exit
    EndSwitch
WEnd
Func _Set_YesButton_Timer_Proc()
    GUICtrlSetData($Yes_Button, "Да (" & $iTime_Counter & ")")
    $iTime_Counter -= 1
    If $iTime_Counter < 0 Then
        AdlibUnRegister()
        $iTime_Expired = 1
    EndIf
EndFunc

в котором идет отсчет на кнопке Ok. Сижу скрещиваю ваш и мой скрипты и никак не получается реализовать
Цитата:

Цитата Pozia
Если имя пользователя не введено в течении минуты, то "Ок" нужно нажать автоматически »

Помогите пожалуйста

Iska 11-07-2012 02:04 1949693

И не получится.

Не вижу в Вашем коде поля «Edit» для ввода имени.

Pozia 11-07-2012 19:16 1950175

Iska, так и вашем коде я команды «Edit» не вижу. Просто я профан в скриптописании - пишу скрещивая методом тыка имеющиеся коды. Не получается. Сыплются ошибки в данном случае. Можно ли более обширную помощь?

ferget 11-07-2012 19:43 1950188

имеется ввиду команда GUICtrlCreateInput или GUICtrlCreateEdit

Iska 11-07-2012 22:43 1950292

Pozia, в моём коде оно и не требовалось — я не использовал создание своего диалога. А Вы используете. Потому:
Цитата:

Цитата ferget
команда GUICtrlCreateInput или GUICtrlCreateEdit »


Pozia 11-07-2012 23:10 1950303

Iska, сообразил. я сразу не понял что у вас таймер есть но он не отображается. Просто хотелось бы его как то наблюдать, если это возможно.

Iska 11-07-2012 23:51 1950323

Добавьте в свой диалог поле «Edit», установите его начальное значение потребному имени. По выходу из диалога проверяйте, как был закрыт диалог — по таймеру, по «OK», по «Cancel» (это у Вас уже есть, но там Вы просто делаете «Exit()»). Затем проверяйте содержимое поля «Edit» и выполняйте потребные действия.

Pozia 12-07-2012 20:50 1950884

Iska, смог придумать так:
Код:

#include <GUIConstants.au3>
Local $sUserName = "Pozia"
Local $sNewUserName
Global $iTime_Expired = 0, $iTime_Counter = 100
Global $iWidth = 292, $iHeight = 150
$hGUI = GUICreate("Seven x64", $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна
GUICtrlCreateLabel("Введи желаемое имя учетной записи ""Администратор""", 10, 10)
GUICtrlCreateLabel("", 10, 30)
$sNewUserName = GUICtrlCreateInput ($sUserName, 10, 70 ,268 ,20)
$Yes_Button = GUICtrlCreateButton("Ok", 10, 100, 130)
$No_Button = GUICtrlCreateButton("Cancel", 150, 100, 130)
GUISetState(@SW_SHOW, $hGUI)
_Set_YesButton_Timer_Proc()
AdlibRegister("_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
            AdlibUnRegister() ;Отключение функции отсчёта
            GUIDelete($hGUI) ;Удаление окна
            RunWait("renuser.exe Администратор " & $sNewUserName)
            Exit
    EndSwitch
WEnd
Func _Set_YesButton_Timer_Proc()
    GUICtrlSetData($Yes_Button, "Ok (" & $iTime_Counter & ")")
    $iTime_Counter -= 1
    If $iTime_Counter < 0 Then
        AdlibUnRegister()
        $iTime_Expired = 1
    EndIf
EndFunc

Но почему то вместо нужного имени учетка переименовывается в цифру 4

madmasles 12-07-2012 22:33 1950922

Цитата:

Цитата Pozia
учетка переименовывается в цифру 4 »

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

;...
RunWait("renuser.exe Администратор " & $sNewUserName)
;на
RunWait("renuser.exe Администратор " & GUICtrlRead($sNewUserName))
;...


Pozia 12-07-2012 23:41 1950945

madmasles, а сейчас имя учетки становится - 0

madmasles 13-07-2012 00:54 1950973

Цитата:

Цитата Pozia
а сейчас имя учетки становится - 0 »

У Вас сначала удаление окна, а потом чтение, а читать уже нечего. Не обратил внимание на это. :sorry:
Код:

#include <GUIConstantsEx.au3>

$sUserName = 'Pozia'
$sNewUserName = ''

$hGUI = GUICreate('Seven x64', 292, 150)
GUICtrlCreateLabel('Введи желаемое имя учетной записи ''Администратор''', 10, 10)
$nNewUserName = GUICtrlCreateInput($sUserName, 10, 70, 268, 20)
$nYes_Button = GUICtrlCreateButton('Ok', 10, 100, 130)
$nNo_Button = GUICtrlCreateButton('Cancel', 150, 100, 130)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $nNo_Button, $GUI_EVENT_CLOSE
            Exit
        Case $nYes_Button
            $sNewUserName = GUICtrlRead($nNewUserName)
            ConsoleWrite($sNewUserName & @LF)
            If Not $sNewUserName Then Exit
            ;RunWait('renuser.exe Администратор "' & $sNewUserName & '"')
            Exit
    EndSwitch
WEnd


Pozia 13-07-2012 20:32 1951424

madmasles, ваш работает. а вто с таймером никак не получается. Помогите, что я намутил не так?
Код:

#include <GUIConstantsEx.au3>
$sUserName = 'Pozia'
$sNewUserName = ''
Global $iTime_Expired = 0, $iTime_Counter = 100
Global $iWidth = 292, $iHeight = 150
$hGUI = GUICreate('Seven x64', $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна
GUICtrlCreateLabel('Введи желаемое имя учетной записи ''Администратор''', 10, 10)
GUICtrlCreateLabel('', 10, 30)
$nNewUserName = GUICtrlCreateInput ($sUserName, 10, 70, 268, 20)
$nYes_Button = GUICtrlCreateButton('Ok', 10, 100, 130)
$nNo_Button = GUICtrlCreateButton('Cancel', 150, 100, 130)
GUISetState(@SW_SHOW, $hGUI)
_Set_YesButton_Timer_Proc()
AdlibRegister('_Set_YesButton_Timer_Proc', 1000)
While 1
    $vMsg = GUIGetMsg()
    If $iTime_Expired Then $vMsg = $nYes_Button
    Switch $vMsg
        Case $nNo_Button, $GUI_EVENT_CLOSE
            Exit
        Case $nYes_Button
            AdlibUnRegister() ;Отключение функции отсчёта
            GUIDelete($hGUI) ;Удаление окна
            $sNewUserName = GUICtrlRead($nNewUserName)
            ConsoleWrite($sNewUserName & @LF)
            If Not $sNewUserName Then Exit
            RunWait('renuser.exe Pozia "' & $sNewUserName & '"')
            Exit
    EndSwitch
WEnd
Func _Set_YesButton_Timer_Proc()
    GUICtrlSetData($nYes_Button, 'Ok (' & $iTime_Counter & ')')
    $iTime_Counter -= 1
    If $iTime_Counter < 0 Then
        AdlibUnRegister()
        $iTime_Expired = 1
    EndIf
EndFunc
exit


Pozia 16-07-2012 20:55 1953053

ребята помогите пожалуйста, не получается последний штрих

ferget 17-07-2012 02:33 1953244

Код:

#include <GUIConstantsEx.au3>
$sUserName = 'Pozia'
$sNewUserName = ''
Global $iTime_Expired = 0, $iTime_Counter = 100
Global $iWidth = 292, $iHeight = 150
$hGUI = GUICreate('Seven x64', $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна
GUICtrlCreateLabel('Введи желаемое имя учетной записи ''Администратор''', 10, 10)
GUICtrlCreateLabel('', 10, 30)
$nNewUserName = GUICtrlCreateInput ($sUserName, 10, 70, 268, 20)
$nYes_Button = GUICtrlCreateButton('Ok', 10, 100, 130)
$nNo_Button = GUICtrlCreateButton('Cancel', 150, 100, 130)
GUISetState(@SW_SHOW, $hGUI)
_Set_YesButton_Timer_Proc()
AdlibRegister('_Set_YesButton_Timer_Proc', 1000)
While 1
    $vMsg = GUIGetMsg()
    If $iTime_Expired Then $vMsg = $nYes_Button
    Switch $vMsg
        Case $nNo_Button, $GUI_EVENT_CLOSE
            Exit
        Case $nYes_Button
            AdlibUnRegister() ;Отключение функции отсчёта
            $sNewUserName = GUICtrlRead($nNewUserName)
                        GUIDelete($hGUI) ;Удаление окна
            ConsoleWrite($sNewUserName & @LF)
            If Not $sNewUserName Then Exit
            RunWait('renuser.exe Pozia "' & $sNewUserName & '"')
            Exit
    EndSwitch
WEnd
Func _Set_YesButton_Timer_Proc()
    GUICtrlSetData($nYes_Button, 'Ok (' & $iTime_Counter & ')')
    $iTime_Counter -= 1
    If $iTime_Counter < 0 Then
        AdlibUnRegister()
        $iTime_Expired = 1
    EndIf
EndFunc
exit


Pozia 17-07-2012 20:54 1953830

большое спасибо всем откликнувшимся


Время: 00:45.

Время: 00:45.
© OSzone.net 2001-