Как связать расширение файла со скриптом AutoIt? - PullRequest
0 голосов
/ 28 января 2019

Для моего текстового редактора, созданного в AutoIt, я создал новое расширение в Regsitry (.text) и связал его с моей программой (TextEdit.exe).Но когда я открываю filename.text с помощью TextEdit.exe, он не показывает ни название, ни содержимое этого файла (ничего не меняется).

Как связать расширение файла (.text) с TextEdit.exe, чтобыон отображает имя файла как заголовок и содержимое файла в GUICtrlCreateEdit()?

Настройка реестра для нового расширения:

HKEY_CLASSES_ROOT\TextEditor.text\DefaultIcon\Standard (REG_SZ) : E:\Icon.ico HKEY_CLASSES_ROOT\TextEditor.text\Shell\ Standard (REG_SZ) : Open HKEY_CLASSES_ROOT\TextEditor.text\Shell\Open\Command\ Standard (REG_SZ) : "E:\TextEditor.exe" --started-from-file "%1"

AutoItкод:

Global $TextEditGUI = GUICreate("TextEditor", 650, 550)
Global $TextEdit_Content = GUICtrlCreateEdit("", 0, 0, 650, 550)
GUISetState()

While 1
  Switch GUIGetMsg()
    Case -3
      Exitloop
  EndSwitch
Wend

1 Ответ

0 голосов
/ 28 января 2019

"… , чтобы при открытии файла file.text TextEditor отображал имя файла в качестве заголовка и содержимое в редакторе. "

Согласно Документация - Введение - Выполнение сценариев - Параметры командной строки :

Специальный массив $CmdLine инициализируется в начале сценария с параметрами командной строки, передаваемыми в сценарий AutoIt.

  1. Изменить \Shell\Open\Command с "E:\TextEditor.exe" --started-from-file "%1" на "E:\TextEditor.exe" "%1" (или вместо адреса файла $cmdline[2]).
  2. Получить содержимое файла.
  3. Запись содержимого в графический интерфейс.

Пример:

#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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...