решить несколько условий проблемы в autoit - PullRequest
0 голосов
/ 18 декабря 2018

Я работаю над программой в autoit.К сожалению, у меня возникают проблемы в следующей стадии нескольких состояний:

Вот мой полный код:

Мой код:

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
; Create a GUI
Local $hGUI = GUICreate("my program", 300, 200)

; Create a combobox control.
Local $idComboBox = GUICtrlCreateCombo("", 10, 10, 185, 20)
 Local $idButton = GUICtrlCreateButton("Activate", 210, 140, 85, 25)
Local $idButton_Close = GUICtrlCreateButton("Close", 210, 170, 85, 25)

; Add additional items to the combobox.
GUICtrlSetData($idComboBox, "Arabic|French|English", "Arabic")

; Display the GUI.
GUISetState(@SW_SHOW, $hGUI)

Local $sComboRead = ""

; Loop until the user exits.
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $idButton_Close
            ExitLoop

        Case $idButton
            $sComboRead = GUICtrlRead($idComboBox)
            ; defining language codes
            if $sComboRead = "Arabic" then  $slktar = "ar-MA"
            if $sComboRead = "French" then  $slktfr = "fr-FR"
            if $sComboRead = "English" then  $slkten = "en-US"

            local $slktlng = @ComSpec & " /K " & '"' & @ScriptDir & "\bin\prog.exe enable_language "       ;main operation witout the addinional language code
            case  $slktar
                 Run($slktlng & " " & $slktar, @ScriptDir & "\bin\", @SW_HIDE)      ; starting main operation + arabic language code          
            case $slktfr
                 Run($slktlng & " " & $slktfr, @ScriptDir & "\bin\", @SW_HIDE)      ; starting main operation + french language code
            case  $slkten
                 Run($slktlng & " " & $slkten, @ScriptDir & "\bin\", @SW_HIDE)    ; starting main operation + english language code

    EndSwitch
WEnd


GUIDelete($hGUI)
EndFunc

Iпонятия не имею об этом.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 18 декабря 2018
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $sLanguage

    ; Create a GUI
    Local $hGUI = GUICreate("my program", 300, 200)

    ; Create a combobox control.
    Local $idComboBox = GUICtrlCreateCombo("", 10, 10, 185, 20)
    Local $idButton = GUICtrlCreateButton("Activate", 210, 140, 85, 25)
    Local $idButton_Close = GUICtrlCreateButton("Close", 210, 170, 85, 25)

    ; Add additional items to the combobox.
    GUICtrlSetData($idComboBox, "Arabic|French|English", "Arabic")

    ; Display the GUI.
    GUISetState(@SW_SHOW, $hGUI)

    Local $sComboRead = ""

    ; Loop until the user exits.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idButton_Close
                ExitLoop

            Case $idButton
                $sComboRead = GUICtrlRead($idComboBox)

                local $slktlng = '"' & @ComSpec & '" /C "' & @ScriptDir & '\bin\prog.exe" enable_language'

                ; Define language code.
                Switch $sComboRead
                    Case "Arabic"
                        $sLanguage = "ar-MA"
                    Case "French"
                        $sLanguage = "fr-FR"
                    Case "English"
                        $sLanguage = "en-US"
                EndSwitch

                Run($slktlng & " " & $sLanguage, @ScriptDir & "\bin\", @SW_HIDE)
        EndSwitch
    WEnd

    GUIDelete($hGUI)
EndFunc

Вы можете использовать другой оператор switch для определения кода языка.Не уверен, почему вы бы использовали отдельные имена переменных для кода языка, хотя я использовал общее имя $sLanguage, чтобы назначить выбранный код языка.Это помогает избежать дублирования кода, т. Е. Необходим только один вызов функции Run() вместо трех.

Также исправлено цитирование команды, хранящейся в $slktlng.Я изменил аргумент /K на /C, поэтому ComSpec автоматически закрывается, когда закончите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...