2014-09-22 2 views
0

У меня есть следующая проблема: у меня есть список разделенных запятыми текстовых значений (это список имен песен и прочее). Теперь я хочу, чтобы мой скрипт отслеживал, что я набираю, как обычный скрипт hotstring, и когда он соответствует любому из значений, он должен заменить найденное совпадение следующим: [i]% match% [/ i] используемый список - всего лишь пример, отображающий каждую возможность общей «формы» имен.Динамические hotstrings Autohotkey, используя список совпадений

Songlist = "abc def,ghijk,lmn,, op,qrs (tuvw)" 

:?*:%A_Space%:: 
{ 
Input, SongName, V*, {Space}.,{Enter}, %Songlist% 
if ErrorLevel = Match 
{ 
StringLen,songlength, songname 
SendInput {BackSpace %SongLength%}[i]%Songname%[/i] 
return 
} 
} 

Как правило, я могу разобраться, но это я просто не могу опустить голову!

ответ

0

Я бы всегда использовал массивы вместо разделенного запятой списка.
Кроме того, что вам нужно динамические автозамены и к счастью, есть хорошая библиотека, которая заботится об этом для вас:
http://www.autohotkey.com/board/topic/98728-dynamic-hotstrings/ Чтобы получить библиотеку, создать новый AHK скрипт в папке основного скрипта, назовите его автозамены. АХК и паста + сохранить код здесь в него: https://raw.githubusercontent.com/Menixator/ahk-repo/master/Hotstring/Hotstring.ahk Тогда попробуйте это:

#include Hotstring.ahk 
match = I Will Replace The Song Names 
myList := ["abc def", "ghijk", "lmn", "op", "qrs (tuvw)"] ;create our list as array 
Loop % myList.GetGaxIndex() { ;Loop through our array 
    Hotstring(myList[A_Index],match) ;replace the song name with the contents of match when it's typed 
} 

Если это не то, что вы искали, пожалуйста, более конкретно с сообщая нам, что вы хотите.
Мне было непонятно, что вы имели в виду под номером it shall replace the found match with the following: [i]%match%[/i].

Смежные вопросы