Я хочу создать простой скрипт в texstudio, который можно будет использовать для поиска выбранного слова в браузере.
Все работает правильно, за исключением того, что я не могу правильно вызвать команду запроса.
"?", похоже, обрезан. Но замена, urlencoding, что угодно тоже не срабатывает.
Как мне закодировать «?» в URL или есть какой-то флаг, который я могу попробовать?
Я попробовал system() и buildManager.runCommand(), оба в данном случае делают одно и то же.
%SCRIPT
u=encodeURI("https://ecosia.org/search?q="+cursor.selectedText())
//u=encodeURI("https://ecosia.org/search\?q="+cursor.selectedText())
//u="https://ecosia.org/search\\%3Fq="+cursor.selectedText()
//u="https://ecosia.org/search%3Fq="+cursor.selectedText()
//u="https://ecosia.org/search?q="+cursor.selectedText()
//u="https://ecosia.org/search\?q="+cursor.selectedText()
//buildManager.runCommand("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")
system("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")
Вот некоторые из комбинаций, которые я пробовал... но ни одна не работает так, как задумано. Результат в журнале выглядит так:
Prozess gestartet: "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "https://ecosia.org/search
Любая идея приветствуется. Спасибо.
решение1
Я сам нашел ответ и опубликую его для тех, кому это может быть интересно.
Когда я углубился в исходный код buildmanager.cpp:
else if (str.at(i) == QChar('?')) {
if (str.at(++i) == QChar('?')) add = "?";
Это значит, что мой макрос-скрипт работает, когда я делаю следующее:
%SCRIPT
u="https://ecosia.org/search??q="+cursor.selectedText()
system("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")
Примечание: в системном вызове "??" становится "?". То же самое для % и @
Теперь я могу искать выделенный текст напрямую. (Я избавился от urlencode, так как он ведет себя не так, как ожидалось, из-за отсутствующего %)