Что нового

[Автоматизация] Скрытый блокнот

Cirno

Новичок
Сообщения
10
Репутация
0
Доброго времени суток. Хочу открыть скрытый блокнот, а после сохранить, все изменения в нем. Встал вопрос, как скрыть окноа сохранения.
Код:
Run("notepad.exe", "", @SW_HIDE)
Sleep(1000)
SendKeepActive("[CLASS:Notepad]")
send ("hi")
SendKeepActive("")
WinClose("[CLASS:Notepad]")
Sleep(1000)
WinSetState("[CLASS:Notepad]", "Сохранить", @SW_HIDE)
Send("{ENTER}")
sleep(2000)
Send("{DEL}")
Send("Rusak.txt")
Sleep(500)
Send("{ENTER}")

Что надо использовать WinSetState или ControlHide?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Cirno [?]
Работает. Просто вы успеваете увидеть окно из-за секундной задержки. Поставьте паузу после этой функции и увидите, что окно скрывается.

почему там в сохранить знак &
Посмотрите внимательно на кнопку - буква "х" подчёркнута. Знак & ставится перед той буквой, которую нужно подчеркнуть. Пользуйтесь Au3Info - она отображает текст именно так, как его видит AutoIt.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Cirno
Код:
WinMenuSelectItem('[CLASS:Notepad]', '', '&Файл', '&Сохранить	CTRL+S')
 
Автор
C

Cirno

Новичок
Сообщения
10
Репутация
0
Просто вы успеваете увидеть окно из-за секундной задержки. Поставьте паузу после этой функции и увидите, что окно скрывается.

Код:
un("notepad.exe", "", @SW_HIDE)
Sleep(1000)
SendKeepActive("[CLASS:Notepad]")
send ("hi")
SendKeepActive("")
WinClose("[CLASS:Notepad]")
Sleep(1000)
WinSetState("Блокнот", "Со&хранить", @SW_HIDE)
sleep(1000)
Send("{ENTER}")
sleep(2000)
Send("{DEL}")
Send("Rusak.txt")
Sleep(500)
Send("{ENTER}")

И он выводит все равно, это окно.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Cirno
Попробуйте так
Код:
Run("notepad.exe", "", @SW_HIDE)
Sleep(1000)
SendKeepActive("[CLASS:Notepad]")
send ("hi")
send("^s")
;~ send("^ы") ; если по умолчанию русская раскладка
SendKeepActive("")
sleep(1000)
Send("{DEL}")
Send("Rusak.txt")
Sleep(500)
Send("{ENTER}")


А что вы сделать то хотите? Создать файл с текстом можно проще
Код:
FileWriteLine(@DesktopDir & "\Rusak.txt", "hi")
 
Автор
C

Cirno

Новичок
Сообщения
10
Репутация
0
А что вы сделать то хотите? Создать файл с текстом можно проще
Код: AutoIt [Выделить]
FileWriteLine(@DesktopDir & "\Rusak.txt", "hi")
Это практически решило проблему, спасибо! А можно ли при каждом вызове этой функции, перезаписывать этот файл? И можно ли печатать значение переменной вместо hi?Если, это делается написанием функции с телом, то тогда я, наверное, сам подумаю.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Cirno, ну ты даёшь!
Прочитай про
Код:
FileWrite

И вообще почитай справку.


Добавлено:
Сообщение автоматически объединено:

Вот, смотри и учись :smile:
Код:
; открываем файл
$file = FileOpen("test.txt", 2 + 8); Открыть только для записи в конец файла, удалив предыдущее содержание + Создать структуру папок, если путь к файлу не существует

; Проверяет, является ли файл открытым, перед тем как использовать функции чтения/записи в файл
If $file = -1 Then
	MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
	Exit
EndIf

FileWrite($file, "Строка1")
FileWrite($file, @CRLF); переход на следующую строку
FileWriteLine($file, "Строка2"); переход на следующую строку вставляется автоматически
FileWrite($file, "Строка3")
FileWrite($file, @CRLF); переход на следующую строку
$myvar = "значение переменной которое будет записано в файл на новую строку"
FileWriteLine($file, $myvar); переход на следующую строку вставляется автоматически
FileWriteLine($file, "Рандомное (случайное) число: " & Random(11, 99, 1)); переход на следующую строку вставляется автоматически
$myvar = "другое значение"
FileWriteLine($file, "переменная $myvar содержит:     " & $myvar)
FileWrite($file, "Последняя строка в этом файле")
; перехода на следующую строку нет

FileClose($file); закрываем файл

; чтение файла
;ShellExecuteWait("notepad.exe", "test.txt"); открыть файл в блокноте и дождаться завершения работы блокнота

$content = ""; переменная в которую будет прочитан файл
; открываем файл
$file = FileOpen("test.txt"); 0 = Открыть только для чтения (по умолчанию)

; Проверяет, является ли файл открытым, перед тем как использовать функции чтения/записи в файл
If $file = -1 Then
	MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
	Exit
EndIf

$content = FileRead($file)

FileClose($file); закрываем файл

; показываем значение переменной
MsgBox(0, "В файле test.txt содержится", $content)
FileDelete("test.txt"); удалить файл (необязательно)
 
Верх