#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: - HotKey, Globals, 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