1 (изменено: ypppu, 2017-05-13 21:11:27)

Тема: AHK: Настройки AHK скрипта в зависимости от txt или ini файла

У меня есть простенький теоретический скрипт:

F9::
Send Привет

Однако для удобства пользования я хочу чтобы из txt/ini файла из первой (допустим) строчки брался текст, и вставлялся вместо привет в моем первом скрипте. Например если я напишу в этом текстовом файле "замененный текст", то мой основной скрипт должен измениться на:

F9::
Send замененный текст

Есть идеи как это можно провернуть?

PS: читал про loop и замену строчек. Наверняка этой командой можно добиться того, чего я хочу. Но перечитав несколько статей по ahk про loop так ничего не понял. Очень надеюсь на ответ, уже давно ищу как такое можно сделать.

2

Re: AHK: Настройки AHK скрипта в зависимости от txt или ini файла

Справка → работа с файлами → FileRead, FileReadLine, IniRead.

3

Re: AHK: Настройки AHK скрипта в зависимости от txt или ini файла

Из поста Stealzy полезной является только IniRead. Остальное поможет разве что, если вы помните файл конфига наизусть.

4 (изменено: cahtbap1, 2017-05-14 14:00:43)

Re: AHK: Настройки AHK скрипта в зависимости от txt или ini файла

Для одной строки:


F1::
line=1
FileReadLine , text_to_send , file_with_text.txt , %line% 
; Помещает в переменную text_to_send строку line из файла file_with_text.txt
send,%text_to_send%

Для всего файла:


F1::
FileRead, out, file_with_text.txt
; Полностью помещает содержимое файла file_with_text.txt в переменную out
   loop, parse, out, `n, `r
   {
	Total:=a_index
	If A_LoopField
		Num++
   }
; Подсчитавает количество строк в файле
line = 1
loop,% Total
{
FileReadLine , text_to_send , file_with_text.txt , %line%
send,%text_to_send%
envadd , line , 1
sleep, 1000
}
; каждую секунду вводит по строке

Для использования настроек их нужно сохранить в конце работы IniWrite , а в начале прочитать IniRead

5 (изменено: KusochekDobra, 2017-05-14 14:19:22)

Re: AHK: Настройки AHK скрипта в зависимости от txt или ini файла

Привет!
Или так, для TXT:


#SingleInstance, Force
#NoEnv
SetWorkingDir, A_ScriptDir

; Если файла для чтения нет, создаём
IfNotExist, text.txt
	FileAppend,
(
Текст первой строки
Текст второй строки
), text.txt, UTF-8

; Читаем строки файла text.txt в массив
allStrings := []
Loop, Read, text.txt
	allStrings.Push(A_LoopReadLine)

; Манипулируем содержимым массива в коде, выводом сообщения
F9:: MsgBox,, Title, % allStrings[1]
F10:: MsgBox,, Title, % allStrings[2]

Для INI:


#SingleInstance, Force
#NoEnv
SetWorkingDir, A_ScriptDir

; Если INI не существует, создаём
iniFile := "Strings.ini"
IfNotExist, %iniFile%
	FileAppend,,%iniFile%,UTF-16

; Читаем значения из INI и если они отсутствуют, устанавливаем дефолтные
IniRead,sOne,%iniFile%, main, first_string
if (sOne == "ERROR") {
	sOne := "11 Текст 11"
	IniWrite,%sOne%,%iniFile%, main, first_string
} IniRead,sTwo,%iniFile%, main, second_string
if (sTwo == "ERROR") {
	sTwo := "22 Текст 22"
	IniWrite,%sTwo%,%iniFile%, main, second_string
}

; Выводим сообщениями содержимое прочитанных значений INI файла
F9:: MsgBox,, Title, % sOne
F10:: MsgBox,, Title, % sTwo

Пробуйте так же искать по форуму. Как правило все примитивные ситуации вроде этой, уже неоднократно рассмотрены в разных вариациях.

6

Re: AHK: Настройки AHK скрипта в зависимости от txt или ini файла

cahtbap1 Спасибо за ответ. Твой помог больше всего, я не мог найти этот простецкий скрипт 2000 лет)