对于在AutoIt中制作的文本编辑器,我在Regsitry(.text)中创建了一个新扩展名并将其与我的程序(TextEdit.exe)关联。但是,当我使用TextEdit.exe打开filename.text
时,它不会显示该文件的标题或内容(不变)。
如何将文件扩展名(.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
答案 0 :(得分:0)
“…,以便当我打开file.text时,TextEditor将文件名显示为标题,并将内容显示到Edit中。”
根据Documentation - Intro - Running Scripts - Command Line Parameters:
特殊数组
$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