2016-10-25 2 views
2

Я добавляю гиперссылку на документ, включающий строку запроса.Строка запроса удаляется из URL гиперссылки (Interop)

URL Пример: https://www.website.com.au/paynow/ext?rn=555&amt=95.40

добавить это к документу, как так -

Dim hyperlink As Word.Hyperlink = WordDocument.Hyperlinks.Add(Me.Range, URL, "", "", "Click me to visit the website") 

Это открывает веб-сайт и игнорирует строку запроса передается в (в основном работает https://www.website.com.au

Если я. скопируйте ссылку гиперссылки напрямую (откройте документ, щелкните правой кнопкой мыши на гиперссылке и выберите «копировать ссылку»), затем откройте браузер и вставьте его -> url загружается правильно, при этом используется строка запроса.

Я проверил через скрипач, и кажется, что надпись документа использует окончательный URL-адрес, возвращаемый напрямую. Из чтения, кажется, это также может быть известной проблемой с продуктом Office?

Также - если я (программно) взял тот же URL-адрес, я добавляю к гиперссылке и добавляю ее в Process.Start («URL»), он загружается совершенно нормально.

[Я даже пробовал кодирование URL-адреса - без разницы].

Любые идеи, начинающие сходить с ума здесь?

Заранее спасибо.

+0

Можете вложить свои следы Fiddler? Word обычно делает первый запрос к самому URL-адресу, чтобы проверить, соответствует ли URL-адрес документу Word (и если да, загружает и открывает документ). Только после этого URL (или, возможно, перенаправленный URL? -> Fiddler расскажет вам) передается в ShellExecute, который затем открывает URL-адрес в браузере по умолчанию. В вашем случае также может случиться так, что в HTTP-запросе отсутствует файл cookie для проверки подлинности, и вы просто перенаправляетесь на страницу начала/входа. –

+0

@ Dirk Vollmar В трассировке не так много, слово делает первый вызов и возвращает перенаправленный URL-адрес, который не содержит строку запроса, поскольку эти значения используются один раз и скрыты от URL-адреса. Мне интересно, есть ли другой способ обойти то, что кажется ограничением с объектом гиперссылок. Или, может быть, сказать слово, чтобы не сделать проверку первым и просто загрузить страницу. – Hexie

ответ

2

Причина заключается в поведении Word по умолчанию, который сначала проверяет, является ли URL-адрес документом Word (и если да, загружает и открывает документ).

Такое поведение может быть изменено с помощью adding the following Registry key (замените версию Office, соответственно):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ 
    Office\15.0\Common\Internet\ForceShellExecute:DWORD=1 

Дополнительную информацию можно найти здесь:

+0

Спасибо за это, я видел предложение в нескольких других сообщениях, но я действительно надеялся избежать регистрации ... Я попробую попробовать, но я действительно надеюсь на возможное исправление без рег-хака. – Hexie

+0

Итак, я попытался использовать это решение, независимо от того, добавляю ли ключ реестра вручную или запускаю «исправление» микрософт - он все еще не исправляет проблему.Даже при наличии ключа reg, гиперссылка по-прежнему открывает URL-адрес с потерянной строкой запроса. – Hexie

+3

Хорошо, кажется, что после некоторой отладки и одной или двух перезагрузок мне удалось запустить работу с ключом reg. BUT - FYI -> Это не повлияло на номер Office \ VERSION, и ключ должен был быть вставлен в следующий путь : HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Microsoft \ Office \ 9.0 \ Common \ Internet (в основном после этой страницы): https://support.microsoft.com/en-us/kb/218153 – Hexie

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