#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_outfile=Testing command line.exe #AutoIt3Wrapper_Compression=4 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;~ Форма парсинга (чтения), переданных параметров командной строки скрипту, функцией _Cmd_Read: ;~ /param_name:"paran value" ;~ слеш + имя параметра + двоеточие + значение параметра В КАВЫЧКАХ ;~ Справка по командной строке скрипта ;~ Русская: Справка > Применение AutoIt > Параметры командной строки http://www.autoitscript.com/autoit3/docs.shtml ;~ Английская: Help > Using AutoIt > Command Line Parameters ;~ Английская On-line: http://www.autoitscript.com/autoit3/docs/intro/running.htm#CommandLine #region: - Options Opt('GUIOnEventMode', 1) Opt('MustDeclareVars', 1) Opt('TrayIconDebug', 1) Opt('TrayIconHide', 0) #endregion #region: - Include #include <GuiConstantsEx.au3> #include <GuiEdit.au3> #include <WindowsConstants.au3> #endregion #region: - Main Win HotKeySet('{ESC}', '_Pro_Exit') $CmdLineRaw = StringRegExpReplace(StringStripWS($CmdLineRaw, 1+2), '(?U)(?i)(\/ErrorStdOut ".+")\s*(.*)', '\1' & @CRLF & @CRLF & '\2') Global $hMainWin, $hCmdLine_View, $hCmdLine_Read, $hCmdLine_Send $hMainWin = GUICreate('Testing command line', 400, 480, -1, -1) GUISetOnEvent($GUI_EVENT_CLOSE, '_Pro_Exit') #endregion #region: - Group: Переданные параметры ;~ Группа GUICtrlCreateGroup(' Параметры командной строки переданные скрипту: ', 5, 5, 390, 160) GUICtrlSetFont(-1, 10, 400) ;~ Поле вывода $hCmdLine_View = GUICtrlCreateEdit($CmdLineRaw, 20, 30, 360, 120, BitOR($WS_VSCROLL, $ES_AUTOVSCROLL, $ES_MULTILINE, $ES_WANTRETURN)) GUICtrlSetFont(-1, 10, 400) #endregion #region: - Group: Прочитать значение параметра ;~ Группа GUICtrlCreateGroup(' Прочитать параметр ком-ой строки переданной скрипту: ', 5, 5+165, 390, 95) GUICtrlSetFont(-1, 10, 400) ;~ Поле ввода $hCmdLine_Read = GUICtrlCreateInput('/param_name:', 20, 5+165+25, 360, 20) GUICtrlSetFont(-1, 10, 400) ;~ Кнопка: Передать параметры скрипту GUICtrlCreateButton('Прочитать значение параметра', 20, 225, 360, 25) GUICtrlSetOnEvent(-1, '_MainWin_Cmd_Read') #endregion #region: - Group: Параметры для передачи ;~ Группа GUICtrlCreateGroup(' Параметры командной строки для передачи скрипту: ', 5, 5+165+100, 390, 195) GUICtrlSetFont(-1, 10, 400) ;~ Поле ввода $hCmdLine_Send = GUICtrlCreateEdit('/param_name:"paran value"', 20, 5+165+25+100, 360, 120, BitOR($WS_VSCROLL, $ES_AUTOVSCROLL, $ES_MULTILINE, $ES_WANTRETURN)) GUICtrlSetFont(-1, 10, 400) ;~ Кнопка: Передать параметры скрипту GUICtrlCreateButton('Передать параметры скрипту', 20, 325+100, 179, 25) GUICtrlSetOnEvent(-1, '_Restart_With_Cmd') GUICtrlSetState(-1, $GUI_DEFBUTTON) GUICtrlSetState(-1, $GUI_FOCUS) ;~ Кнопка: Закрыть скрипт GUICtrlCreateButton('Закрыть скрипт (ESC)', 179+2+20, 325+100, 179, 25) GUICtrlSetOnEvent(-1, '_Pro_Exit') #endregion #region: - After creating all GUI GUISetState(@SW_SHOW, $hMainWin) GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST') #endregion #region: - Sleep, Exit, WM_NCHITTEST While 1 Sleep(10) WEnd Func _Pro_Exit() Exit EndFunc Func WM_NCHITTEST($hWnd, $Msg, $wParam, $lParam) Local $iProc = DllCall('user32.dll', 'int', 'DefWindowProc', 'hwnd', $hWnd, 'int', $Msg, 'wparam', $wParam, 'lparam', $lParam) If $iProc[0] = $HTCLIENT Then Return $HTCAPTION Return $GUI_RUNDEFMSG EndFunc #endregion Func _Cmd_Read($sParam) If Not StringInStr($CmdLineRaw, $sParam) Then Return SetError(1, 0, '') Local $sValue = StringRegExpReplace($CmdLineRaw, '(?i)(?s).*?' & $sParam & '"(.*?)".*?$', '\1') If $sValue == $CmdLineRaw OR @extended < 1 Then Return SetError(2, 0, '') Return SetError(0, 0, StringStripWS($sValue, 1+2)) EndFunc Func _MainWin_Cmd_Read() Local $sParam = StringStripWS(GUICtrlRead($hCmdLine_Read), 1+2) Local $sResult = _Cmd_Read($sParam) Switch @error Case 0 MsgBox(64, 'Результат', 'Параметр: "' & $sParam & '"' & @CRLF & 'Значение: "' & $sResult & '"', 0, $hMainWin) Case Else MsgBox(48, 'Внимание', 'Параметр "' & $sParam & '" не найден' & @CRLF & 'Ошибка: ' & @error, 0, $hMainWin) EndSwitch EndFunc Func _Restart_With_Cmd() Switch @compiled Case 0 Exit Run('"' & @AutoItExe & '" /ErrorStdOut "' & @ScriptFullPath & '" ' & StringReplace(StringStripCR(StringStripWS(GUICtrlRead($hCmdLine_Send), 1+2)), @LF, ' ')) Case 1 Exit Run('"' & @ScriptFullPath & '" ' & StringReplace(StringStripCR(StringStripWS(GUICtrlRead($hCmdLine_Send), 1+2)), @LF, ' ')) EndSwitch EndFunc |