Как программно открыть ссылку браузера? С++
Не знаю, как можно это сделать. Пытался найти пример в интернете, но ничего. Помогите, пожалуйста.
Отслеживать
218k 15 15 золотых знаков 117 117 серебряных знаков 229 229 бронзовых знаков
задан 2 сен 2022 в 20:06
ragetalk44 ragetalk44
29 6 6 бронзовых знаков
D какой операционной системе? Что понимать под «открыть ссылку браузера»? Вы хотите запустить браузер, чтобы открыть в нем определенную ссылку? Или открыть «ссылку браузера» какой-то своей программой? Понимаете, если нет точного ТЗ, ответ будет один — ХЗ!
2 сен 2022 в 20:10
нашел вместо тебя, держи stackoverflow.com/questions/17347950/how-do-i-open-a-url-from-c
– user256707
2 сен 2022 в 20:10
Спасибо за ссылку. Но почему-то не работает, не происходит ничего при открытии консоли. Система Win10. visual studio 2022. Хочу, чтобы при запуске программы открывалась вкладка в браузере по умолчанию. То есть, ссылка открывалась в браузере по умолчанию.
Как в программе открыть ссылку?
Подскажите как реализовать 3 вида открытия ссылки в программе.
1. При старте программы.
2. При нажатие на кнопку.
3. В определённое время.
Да и если можно пример что бы было открытие в определённое время к примеру каждый час и разные ссылки открывались при этом.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

При клике на ссылку в WebBrowser открыть ссылку в браузере по умолчанию
Собственно тема. Можно ли как-то такое осуществить?
Как открыть ссылку
Мне нужно что бы по клику на кнопку открывалась ссылка в браузере,помогите это реализовать. я.
Как открыть ссылку
Как програмно перейти по ссылке скрытно (не открывая браузер).
Открыть ссылку в режиме backend и вставить ip пользователя в ссылку
Кто знаком с постбэками? Нужно чтобы ссылка открывалась, но пользователь не должен об этом знать.
Как открыть ссылку через c
Всем привет!
Нужно программно открыть ссылку, делю как ЗапуститьПриложение(«ссылка»). Таким образом, данная ссылка открывается в браузере, который установлен По умолчанию.
Вопрос.
как открыть ссылку в браузере, не зарегистрированном в системе как браузер по умолчанию?
К примеру, если по умолчанию стоит IE, то как запустить в Chrome?
ЗапуститьПриложение(«chrome ссылка») ?
Дожили 🙁 , все почти все современные браузеры работают на одном движке 🙁 , поэтому сейчас пофигу
(1) Не работает. Возможно не правильный синтаксис, но так как написано у тебя — не работает. 🙁
(2) Не все и не пофиг. Есть сайты, которые не поддерживают тот или иной браузер, или работают не корректно. По этому, их и приходиться запускать из под другого браузера.
ну попробуй указать явный путь ЗапуститьПриложение(«C:\Program Files (x86)\Google\Chrome\Application\chrome.exe ya.ru»)
(3) However, you can make it work from CLI too by adding the chrome installation folder to the PATH environment variable. The installation path is «c:\Program Files (x86)\Google\Chrome\Application»
(4) Спасибо, так все работает! 🙂
(7) У меня браузер по умолчанию стоит Edge. Но сайт таможни не поддерживает работу с этим браузером (точнее работу ЭЦП), По этому, Открывать данный сайт нужно в другом браузере, в частности Хром. С другой стороны, Банк некорректно работает на Хроме, но безупречно на Эдже.
У меня наоборот, последнее время для работы с ЭЦП (Росреестр, Госуслуги и подобные) используется Edge с соответствующими расширениями, так как Firefox + ЭЦП последнее время проблемы.
(9) Таможня не с Edge не с IE не работает.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший
Как открыть ссылку в новом окне браузера
На форумах часто попадается вопрос типа: «Как можно открыть ссылку в новом окне браузера». Причем надо заметить, что это вопрос по программированию под Windows, а не по web-мастерингу. Проблема возникает из-за того, что при «обычном» открывании ссылки функцией ShellExecute(Ex) (например так: ShellExecute (hwnd, «open», «http://www.microsoft.com», NULL, NULL, SW_SHOWNORMAL);) открываемый адрес может быть открыт в уже существующем окне браузера и из-за этого может потеряться открытая там в данный момент страница. Все выше сказанное относится к браузерам Internet Explorer и Mozilla (начиная с версии 1.1, зачем они это сделали, не понятно). В Opera и Mozilla 1.0 этого безобразия нет. В этой статье я буду рассматривать эту проблему применительно к браузерам Internet Explorer 6 (IE6), Mozilla 1.2 и Opera 7b2. Но, скорее всего, для более старых браузеров, все будет так же, с той лишь разницей, что в Mozilla 1.0 такой проблемы нет впринципе. Если Mozilla 1.0 — браузер по-умолчанию, то там всегда сайты открываются в новом окне.
Что делать
После долгих поисках в MSDN, я наткнулся на следующую таблицу:
| -channelband | Internet Explorer as a Desktop Toolbar, displaying the Channels Directory of the currently logged on user. This option only applies when Active Desktop is off. |
| -e | Launch Internet Explorer in Explorer mode (standard two pane view, My Computer on left, Content on right) |
| -new | Start up Internet Explorer in a separate process. |
| -nohome | Open Internet Explorer and don’t open any Web page at all. |
| -k | Launch Internet Explorer in Kiosk mode. |
Причем эта таблица относится еще к IE 4.0. Казалось бы на этом можно было бы и остановиться, но, как оказывается, нам это абсолютно ничем не поможет. И вот почему.
- Если пользоваться этим параметром, то мы должны его опередавать 4-го аргумента функции ShellExecute (здесь и дальше суффикс Ex я буду опускать), но на месте этого параметра (как показала практика) должен быть адрес.
- Если пытаться «запихнуть» в параметр командной строки и -new и адрес (то есть там писать «-new http://www.microsoft.com» или «http://www.microsoft.com -new», то из этого ничего не выйдет, т.к. похоже, что IE смотрит только первый параметр.
- Мы будем «жестко» привязаны к IE (т.к. неизвестно, есть ли такой параметр у других браузеров), что нас не устраивает — у пользователя должен быть выбор, каким браузером пользоваться.
После долгих экспериментов оказалось, что все решается намного проще (на первый взгляд). Достаточно написать следующую строку. ShellExecute (HWND_DESKTOP, _TEXT(«open»), Browser, Url, NULL, SW_SHOWNORMAL);
Где Browser — путь к браузеру по умолчанию; Url — нужная нам ссылка.
И все, но возникла вторая проблема.
Как определить браузер по-умолчанию.
Здесь надо предостеречь от частой ошибки. Часто счтитают, что браузер по-умолчанию, это та программа, которая открывает файлы формата html и смотрят в реестре программу, которая зарагистрировано на расширение html и ее используют. А в MSDN вообще был пример, который создавал файл html и функцией FindExecutable определяли, какой программой он откроется. Это в корне неправильно. И вот почему. Можно открывать у себя с харда html-файлы одним браузером, а открывать адреса другим. Например, файлы я читаю Оперой, а в Инете сижу под Мозиллой. Заблуждение, может быть, возникло из-за того, что если в IE поставить его как браузер по-умолчанию, то он будет и для сайтов и для файлов. Как поется у Арии «Мир обречен, выбора нет». А нам этот выбор нужен. Поэтому в Мозилле и в Опере можно выбирать, для чего использовать данный браузер, вплоть до протоколов.
Так как же быть. А вот как. Надо прочитать значение из реестра по следующему пути: HKEY_CLASSES_ROOT\http\shell\open\command. И уже из этой строки «выудить» путь к браузеру. Именно «выудить», так как каждый браузер пишет туда все, что хочет. Вот вам таблица (обратите внимание на кавычки.
| Internet Explorer | «E:\Program Files\Internet Explorer\iexplore.exe» -nohome |
| Mozilla | E:\PROGRA~1\MOZILLA.ORG\MOZILLA\MOZILLA.EXE -url «%1» |
| Opera | «E:\Program Files\Opera7\opera.exe» |
Вот на что следует обратить внимание:
- Там все-таки есть нужный нам путь
- В начале строки иногда стоят кавычки
- В конце записан какой-то мусор (естественно, для нас)
Предлагаю вам следующий код, чтобы определить, какой же браузер все-таки выбран по-умолчанию (для протокола http).
TCHAR buf [ 256 ] ;
HKEY hKey ;
int i ;
DWORD Size = 256 ;
int pos ;
int len ;
TCHAR * EXE = «.exe» ;
RegOpenKeyEx ( HKEY_CLASSES_ROOT, _TEXT ( «http \\ shell \\ open \\ command» ) ,
0 , KEY_QUERY_VALUE, & hKey ) ;
RegQueryValueEx ( hKey, NULL , NULL , NULL , ( LPBYTE ) buf, & Size ) ;
RegCloseKey ( hKey ) ;
// Отрежем то, что после пути с именем
// Найдем, где кончается путь
if ( buf [ 0 ] == _TEXT ( ‘ \» ‘ ) )
{
lstrcpy ( Browser, & buf [ 1 ] ) ;
}
else
{
lstrcpy ( Browser, buf ) ;
}
len = lstrlen ( Browser ) ;
pos = len — 4 ;
for ( i = 0 ; i < len - 3 ; i ++ )
{
if ( ! strnicmp ( & Browser [ i ] , EXE, 4 ) )
{
pos = i ;
break ;
}
}
Browser [ pos + 4 ] = _TEXT ( ‘ \0 ‘ ) ;
Здесь будем считать, что строка Browser глобальная. И после этого смело можно ставить код наподобие следующего:
ShellExecute ( HWND_DESKTOP, _TEXT ( «open» ) , Browser,
_TEXT ( «http://www.microsoft.com» ) , NULL , SW_SHOWNORMAL ) ;
ShellExecute ( HWND_DESKTOP, _TEXT ( «open» ) , Browser,
_TEXT ( «http://jenyay.net» ) , NULL , SW_SHOWNORMAL ) ;
ShellExecute ( HWND_DESKTOP, _TEXT ( «open» ) , Browser,
_TEXT ( «http://www.rsdn.ru» ) , NULL , SW_SHOWNORMAL ) ;
И эти ссылки будут гарантировано открыты в отдельных окнах.
Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Рейтинг 3.5 / 5 . Всего 29 голос(а, ов)
Линда Кайе 20.11.2007 — 21:44
А в качестве Verb не получится использовать opennew? Для IE работать должно, а вот с остальными точно не знаю.
Jenyay 21.11.2007 — 09:48
Если честно, я так давно с этим разбирался, что уже и не помню, пробовал так делать или нет. Хотя попробовать можно.
как открыть свой браузер?
как открыть свой браузер?
Yachiru 12.01.2010 — 06:00
мля, чёт нехера не понятна в этой статье. ппц что за «код» куда его вставлять надо?
Yachiru 12.01.2010 — 06:01
Jenyay 12.01.2010 — 09:31
Вставлять надо в компилятор на C++ 🙂
Пайд 26.03.2011 — 23:53
Нихрена не понял
233 25.04.2011 — 11:40