bulldog5293
Знающий
- Сообщения
- 172
- Репутация
- 10
Можно ли средствами AutoIT не прописывать в скрипте названия файла, а получать его из input\edit?
; НАЧАЛО
$GUI=GUICreate("",300,60)
$INPUT=GUICtrlCreateInput("",0,0,300,25)
$BUTTON=GUICtrlCreateButton("Ok",0,30,300,25)
GUISetState()
while true
switch GUIGetMsg()
case -3
exitloop
case $BUTTON
$NAME=GUICtrlRead($INPUT)
MsgBox(0,"",$NAME)
$FILE=FileOpen(@ScriptDir&"\"&$NAME,0)
If $FILE=-1 Then MsgBox(0,"","Файл не существует")
endswitch
wend
; КОНЕЦ
$FILE=FileOpen(@ScriptDir&"\"&$NAME&".TXT",0)
$FILE=FileOpen(@ScriptDir&"\"&$NAME&".TXT",0)
FileWrite(@ScriptDir&"\"$NAME&".TXT", "")
Встречный вопрос - Для чего нужен input? Для того чтоб прочитать от пользователя любые введённые данные. Может ли имя файла быть введённым? Конечно.Можно ли средствами AutoIT не прописывать в скрипте названия файла, а получать его из input\edit?
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
$Gui = GUICreate("Проверка drag-and-drop", 420, 200, -1, -1, -1, $WS_EX_ACCEPTFILES) ; стиль drag-and-drop, (0x00000010)
$CatchDrop = GUICtrlCreateLabel("", 0, 0, 420, 40) ; создаём область Label, первым элементом, чтоб не перекрывать остальные, размер можно указать на всё окно
GUICtrlSetState(-1, $GUI_DISABLE + $GUI_DROPACCEPTED) ; устанавливаем параметры области - скрытая и drag-and-drop (128+8)
GUICtrlCreateLabel ("используйте drag-and-drop", 120,3,200,18)
$Label1 = GUICtrlCreateLabel("Путь 1", 24, 40, 186, 17)
$Input1 = GUICtrlCreateInput("", 24, 57, 305, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Input наделённый свойством drag-and-drop (8)
$folder1 = GUICtrlCreateButton("Обзор...", 344, 56, 57, 23)
$Label2 = GUICtrlCreateLabel("Путь 2", 24, 90, 186, 17)
$Input2 = GUICtrlCreateInput("", 24, 107, 305, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Input наделённый свойством drag-and-drop (8)
$folder2 = GUICtrlCreateButton("Обзор...", 344, 106, 57, 23)
$Label3 = GUICtrlCreateLabel("Путь 3", 24, 140, 186, 17)
$Input3 = GUICtrlCreateInput("", 24, 157, 305, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Input наделённый свойством drag-and-drop (8)
$folder3 = GUICtrlCreateButton("Обзор...", 344, 156, 57, 23)
GUISetState ()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_DROPPED ;событие приходящееся на drag-and-drop (-13)
If @GUI_DropID=$Input1 Then GUICtrlSetData($Input1, @GUI_DRAGFILE)
If @GUI_DropID=$Input2 Then GUICtrlSetData($Input2, @GUI_DRAGFILE)
If @GUI_DropID=$Input3 Then GUICtrlSetData($Input3, @GUI_DRAGFILE)
If @GUI_DropID=$CatchDrop Then MsgBox(0,"В область drag-and-drop попал файл", @GUI_DRAGFILE)
; кнопки обзор
Case $msg = $folder1
$folder01 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1 + 4 )
If @error Then ContinueLoop
GUICtrlSetData($Input1, $folder01)
Case $msg = $folder2
$folder02 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1 + 4 )
If @error Then ContinueLoop
GUICtrlSetData($Input2, $folder01)
Case $msg = $folder3
$folder03 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1 + 4 )
If @error Then ContinueLoop
GUICtrlSetData($Input3, $folder01)
Case $msg = $GUI_EVENT_CLOSE ; закрыть (-3)
Exit
EndSelect
WEnd
#cs
Событие $GUI_EVENT_DROPPED можно удалить, но теряется универсальность. Если открыть путь кнопкой "Обзор..." и далее кинуть файл в Input, то пути складываются в одну строку последовательно. Именно $GUI_EVENT_DROPPED устраняет эту проблему установкой пути с помощью GUICtrlSetData.
#ce
Я сонным был, тамKaster
не вижу разницы в двух твоих строках. ты наверное имел в виду во второй строке флаг 2, а не 0. а вообще, чтобы просто создать файл без не рекомендуется открывать его. лучше записать его без предварительного открытия в файл пустой строки. тогда в файл ничего не запишется, но зато если его не было то создастся.
$FILE=FileOpen(@ScriptDir&"\"&$NAME&".TXT",1)
drag-and-drop не вариант потому что, если файла нет с таким именем то его и нада создать. AutoIT не потдерживает много поточность, а если прога к многим сайтам обращаться будет, то из одного txt файла услажняется получение адресса для неё, поэтому на мой взгляд логичнее получать адрес и параметры из определённого txt файлаAZJIO
Встречный вопрос - Для чего нужен input? Для того чтоб прочитать от пользователя любые введённые данные. Может ли имя файла быть введённым? Конечно.
Едем дальше. Вопрос звучит "не прописывать", здесь самым удобным будет операция drag-and-drop.