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 (изменено: Stephan, 2017-06-12 11:50:02)

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

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