Autoit Регистрация протокола и выполнение программы

Я сделал программу, которую хочу запустить с помощью некоторого протокола, например: proto Вызывается как proto://122122 из браузера.

Когда пользователь нажимает на ссылку, он открывает мою программу и отправляет число впереди нее как какую-то переменную или что-то в этом роде.

У меня есть базовые знания С++, но нет знаний по этой теме. Спасибо.


person kritya    schedule 31.03.2012    source источник


Ответы (1)


Вам нужно будет добавить протокол в реестр, в HKEY_CLASSES_ROOT.

В частности, вам необходимо создать следующие ключи:

[HKCR\proto]
@="URL:My Protocol"
"Url Protocol"=""

[HKCR\proto\shell\open\command]
@="Path\To\My\Program.exe '%1'"

Затем открытие proto://122122 приведет к выполнению Program.exe, и числа будут доступны в $CmdLine[1] (при условии, что вы используете AutoIt, поскольку вы пометили его таким образом, но вообще не упоминаете об этом).

Редактировать:

Чтобы программно сделать это в AutoIt, вам нужно посмотреть на функции реестра, в частности Регистрация. Выше я поленился и дал ответ в виде .reg файла, но в AutoIt это выглядит примерно так:

Local $sProtoName = "proto"

RegWrite("HKCR\" & $sProtoName)
RegWrite("HKCR\" & $sProtoName, "", "REG_SZ", "URL:My Protocol")
RegWrite("HKCR\" & $sProtoName, "Url Protocol", "REG_SZ", "")
RegWrite("HKCR\" & $sProtoName & "\shell\open\command")
RegWrite("HKCR\" & $sProtoName & "\shell\open\command", "", "REG_SZ", "Path\To\My\Program.exe '%1'")

Как и во всем, что касается реестра, не делайте этого, если вы не знаете, что делаете. Изменение HKCR относительно безопасно. Худшее, что может случиться, это то, что вы перезапишете какой-то другой протокол, а отменить его довольно сложно, но я все же рекомендую сначала прочитать. Google, как обычно, ваш лучший друг, но с небольшим, как этот наверное хорошая идея.

Чтобы удалить приведенный выше код, просто удалите весь ключ «HKCR\proto».

person Matt    schedule 02.04.2012
comment
О, извините за это, я забыл напечатать это, потому что я создал это с помощью своего мобильного телефона. И куда мне это добавить? Я имею в виду где зарегистрироваться? Извините, у меня нет никаких знаний во всем этом. хД - person kritya; 02.04.2012
comment
@kritya, на самом деле это не имеет значения, так как тот же принцип применим к любому другому языку. Я мог бы написать argv[1], и это было бы то же самое. - person Matt; 02.04.2012
comment
ты не понял меня правильно. Я имею в виду, как добавить свой протокол в HKEY_CLASSES_ROOT? - person kritya; 03.04.2012
comment
@Kritya, извини, я думал, ты это знаешь. Сейчас отредактирую пост. - person Matt; 03.04.2012