"… , чтобы при открытии файла file.text TextEditor отображал имя файла в качестве заголовка и содержимое в редакторе. "
Согласно Документация - Введение - Выполнение сценариев - Параметры командной строки :
Специальный массив $CmdLine
инициализируется в начале сценария с параметрами командной строки, передаваемыми в сценарий AutoIt.
- Изменить
\Shell\Open\Command
с "E:\TextEditor.exe" --started-from-file "%1"
на "E:\TextEditor.exe" "%1"
(или вместо адреса файла $cmdline[2]
). - Получить содержимое файла.
- Запись содержимого в графический интерфейс.
Пример:
#include <GUIConstantsEx.au3>; $GUI_EVENT_CLOSE
#include <FileConstants.au3>; $FO_READ, $FO_UTF8_NOBOM
Global Const $g_sGuiTitle = 'TextEditor - %s'
Global Const $g_iGuiDimX = 650, _
$g_iGuiDimY = 550
Global $g_hGui = -1, _
$g_hCtrlEdit = -1
Main()
Func Main()
_GuiCreate($g_hGui, $g_hCtrlEdit)
If $CmdLine[0] And FileExists($CmdLine[1]) Then _TextLoad($g_hGui, $g_hCtrlEdit, $CmdLine[1])
While Not (GUIGetMsg() = $GUI_EVENT_CLOSE)
Sleep(0)
WEnd
GUIDelete($g_hGui)
Exit
EndFunc
Func _GuiCreate(ByRef $hGui, ByRef $hCtrlEdit)
$hGui = GUICreate(StringFormat($g_sGuiTitle, 'Untitled'), $g_iGuiDimX, $g_iGuiDimY)
$hCtrlEdit = GUICtrlCreateEdit('', 0, 0, $g_iGuiDimX, $g_iGuiDimY)
GUISetState(@SW_SHOW, $hGui)
EndFunc
Func _FileGetText(Const $sPathFile)
Local $hFile = FileOpen($sPathFile, BitOR($FO_READ, $FO_UTF8_NOBOM))
Local Const $sText = FileRead($hFile)
FileClose($hFile)
Return $sText
EndFunc
Func _TextLoad(ByRef $hGui, ByRef $hCtrlEdit, Const $sPathFile)
Local Const $sText = _FileGetText($sPathFile)
WinSetTitle( _
$hGui, _
'', _
StringFormat( _
$g_sGuiTitle, _
StringRight( _
$sPathFile, _
StringLen($sPathFile) - StringInStr($sPathFile, '\', 0, -1) _
) _
) _
)
GUICtrlSetData($hCtrlEdit, $sText)
EndFunc