Открытие URL в проводнике Windows без COM-объекта
Эта проблема
Я пытаюсь открыть URL в Internet Explorer. Регулярно я бы использовал метод Navigate com-объекта Internet Explorer. Однако это не доступно на языке программирования, который я использую (MapBasic).
Мой следующий метод - использовать функцию Shell для выполнения команды в командной строке. Например:
explorer "http://yahoo.com"
Перейдите на http://www.yahoo.com/. Однако, когда дело доходит до более длинных ссылок, например,
https://www.google.co.uk/imgres?imgurl=http%3A%2F%2Fclv.h-cdn.co%2Fassets%2F15%2F22%2F768x518%2Fgallery-1432664914-strawberry-facts1.jpg&imgrefurl=http%3A%2F%2Fwww.countryliving.com%2Ffood-drinks%2Fa35552%2Ffacts-about-strawberries%2F&docid=kWdFoElV3zVDpM&tbnid=2gR8XfYaBJZV1M%3A&vet=1&w=768&h=518&hl=en&bih=813&biw=1461&q=strawberries&ved=0ahUKEwiV--LfsPbQAhWaHsAKHUfaC2EQMwg0KAMwAw&iact=mrc&uact=8
Командная строка фактически переходит к:
https://www.google.co.uk/imgres?imgurl=http%3A%2F%2Fclv.h-cdn.co%2Fassets%2F15%2F22%2F768x518%2Fgallery-1432664914-strawberry-facts1.jpg&imgrefurl=http%3A%2F%2Fwww.countryliving.com%2Ffood-drinks%2Fa35552%2Ffacts-about-strawberries%2F&docid=kWdFoElV3zVDpM&tbn
Который является значительно более коротким URL.
Чтобы решить эту проблему, я изучаю использование Win32API, но пока не могу понять, как можно запустить этот код с Win32API... Возможно, с помощью ShellExecute Shell32.dll? Или было бы лучше использовать CreateProcess Kernel32.dll?
Что бы ни использовалось, было бы очень полезно, если бы кто-нибудь мог предоставить мне пример кода, как открыть вышеуказанную ссылку с помощью IE, используя API Win32 в VB/C#. Я могу легко перенести код на MapBasic оттуда!
(В качестве альтернативы, если есть способ открыть ссылку через оболочку, я хотел бы знать, как!)
Спасибо
2 ответа
Вы можете просто "выполнить" его, используя Process.Start, который находится в пространстве имен System.Diagnostics.
Как Hans Passant ответил:
Это 259 символов в длину. Магическое число Не используйте Explorer.exe, используйте браузер, такой как iexplore.exe
Это именно то решение, которое мне было нужно. Вместо этого используйте iexplorer.exe:
"C:\Program Files\Internet Explorer\iexplore.exe" "https://www.google.co.uk/imgres?imgurl=http%3A%2F%2Fclv.h-cdn.co%2Fassets%2F15%2F22%2F768x518%2Fgallery-1432664914-strawberry-facts1.jpg&imgrefurl=http%3A%2F%2Fwww.countryliving.com%2Ffood-drinks%2Fa35552%2Ffacts-about-strawberries%2F&docid=kWdFoElV3zVDpM&tbnid=2gR8XfYaBJZV1M%3A&vet=1&w=768&h=518&hl=en&bih=813&biw=1461&q=strawberries&ved=0ahUKEwiV--LfsPbQAhWaHsAKHUfaC2EQMwg0KAMwAw&iact=mrc&uact=8"
Открывает URL нормально.
Точно так же можно использовать следующую команду:
start iexplore "https://www.google.co.uk/imgres?imgurl=http%3A%2F%2Fclv.h-cdn.co%2Fassets%2F15%2F22%2F768x518%2Fgallery-1432664914-strawberry-facts1.jpg&imgrefurl=http%3A%2F%2Fwww.countryliving.com%2Ffood-drinks%2Fa35552%2Ffacts-about-strawberries%2F&docid=kWdFoElV3zVDpM&tbnid=2gR8XfYaBJZV1M%3A&vet=1&w=768&h=518&hl=en&bih=813&biw=1461&q=strawberries&ved=0ahUKEwiV--LfsPbQAhWaHsAKHUfaC2EQMwg0KAMwAw&iact=mrc&uact=8"
Который должен быть менее системно зависимым.