Почти все знают как из программы запустить бровзер и передать ему ссылку используя ShellExecute,
но во вопрос, как заставить делать это каждый раз в новом окне ?
Здравствуйте Alex Fedotov, Вы писали:
AF>Здравствуйте sasha, Вы писали:
S>>Сорри, что не с помощью ShellExecute, но ведь работает
AF>И не браузер по умолчанию.
Чтож, жизнь не сахар — придеться откопать в реестре ассоциацию для html файлов
Тем более, что это не убийственно сложно
Здравствуйте sasha, Вы писали:
S>Чтож, жизнь не сахар — придеться откопать в реестре ассоциацию для html файлов :user: S>Тем более, что это не убийственно сложно :crash:
Что жизнь не сахар — это я понял, когда стал тестировать код с ShellExecute на машине у которой установлен только Netscape Communicator 4.5. Так вот там ShellExecute не заработала.
Вызов:
Т.е. посылается не ссылка на файл, а URL. Кроме того, когда в Start->Run набираю "http://rsdn.ru" тоже ничего не происходит. А должно бы. Так что Netscape себя недостаточно хорошо устанавливает и прописывает в реестре?
Теперь уж бог с ним, с одним окном, вообще бы запустить браузер по умолчанию :-(
Здравствуйте vladsm, Вы писали:
S>>Чтож, жизнь не сахар — придеться откопать в реестре ассоциацию для html файлов S>>Тем более, что это не убийственно сложно
V>Что жизнь не сахар — это я понял, когда стал тестировать код с ShellExecute на машине у которой установлен только Netscape Communicator 4.5. Так вот там ShellExecute не заработала. V>Вызов: V>
V>Т.е. посылается не ссылка на файл, а URL. Кроме того, когда в Start->Run набираю "http://rsdn.ru" тоже ничего не происходит. А должно бы. Так что Netscape себя недостаточно хорошо устанавливает и прописывает в реестре? V>Теперь уж бог с ним, с одним окном, вообще бы запустить браузер по умолчанию
ShellExecute работает только потому, что в реестре есть такая запись (это кусок реестра, выделенные места -- оно и есть:
Здравствуйте TSS, Вы писали:
TSS>ShellExecute работает только потому, что в реестре есть такая запись (это кусок реестра, выделенные места -- оно и есть: TSS>
[skipped]
А>И ничего SE не работает. Еще что то надо? И почему, если надо, Netscape это не прописал? Это только у меня так?
Это вопрос к разработчикам Нетшкафа.
Если разрабатываешь прогу "для народа" -- поиграйся с вышеуказанным .reg и в инсталлере пропиши что и как нужно сделать с реестром...
Это раз. Второе. Рекомендую поискать (я уже просто не помню ), где в реестре написано про default browser и прописать его вместо iexplore.exe...
Здравствуйте TSS, Вы писали:
TSS>Рекомендую поискать (я уже просто не помню ), где в реестре написано про default browser.
В реестре нет записи специально для default browser. Но если вдруг вспомнится, напиши, чтоб мне дольше не находиться в позорном заблуждении.
А найти можно и так:
HKEY_CLASSES_ROOT\htmlfile\shell\open\command
Здравствуйте TSS, Вы писали:
TSS>Это вопрос к разработчикам Нетшкафа.
А у других то как с этим?
TSS>Если разрабатываешь прогу "для народа" -- поиграйся с вышеуказанным .reg и в инсталлере пропиши что и как нужно сделать с реестром...
Так надо то все таки запускать default'ный браузер...
TSS>Второе. Рекомендую поискать (я уже просто не помню ), где в реестре написано про default browser и прописать его вместо iexplore.exe...
Да я уже искал — не удачно. Может подскажете какие-нибудь ключевые слова, или еще какую-нибудь зацепку?
Здравствуйте sasha, Вы писали:
S>А найти можно и так: S>HKEY_CLASSES_ROOT\htmlfile\shell\open\command
Так это запись для файла-html, а надо не так (см. выше). А то что прописано для html-файлов может не совпадать с тем браузером, который откроет URL после
ShellExecute(...,"http://rsdn.ru",...).
Здравствуйте vladsm, Вы писали:
TSS>>Второе. Рекомендую поискать (я уже просто не помню ), где в реестре написано про default browser и прописать его вместо iexplore.exe...
V>Да я уже искал — не удачно. Может подскажете какие-нибудь ключевые слова, или еще какую-нибудь зацепку?
Здравствуйте TSS, Вы писали:
TSS>Здравствуйте vladsm, Вы писали:
TSS>>>Второе. Рекомендую поискать (я уже просто не помню ), где в реестре написано про default browser и прописать его вместо iexplore.exe...
V>>Да я уже искал — не удачно. Может подскажете какие-нибудь ключевые слова, или еще какую-нибудь зацепку?
TSS>Я тута пальцем покопался... на MSDN и выкопал статью: TSS>Q174156: HOWTO: Programmatically Launch the Default Internet Browser (http://support.microsoft.com/support/kb/articles/Q174/1/56.ASP) TSS>К сожалению для VB, но все что можно на VB, можно и на VC++
Так это же просто переписанный на VB код запуска ShellExecute. А где поиск браузера по умолчанию?
Re[10]: Запуск бровзера по умолчанию в новом окне.
TSS>Я тута пальцем покопался... на MSDN и выкопал статью: TSS>Q174156: HOWTO: Programmatically Launch the Default Internet Browser (http://support.microsoft.com/support/kb/articles/Q174/1/56.ASP) TSS>К сожалению для VB, но все что можно на VB, можно и на VC++
Как у нас говорится — пасибочки. Почитаю...
Re[11]: Запуск бровзера по умолчанию в новом окне.
Здравствуйте sasha, Вы писали:
TSS>>Я тута пальцем покопался... на MSDN и выкопал статью: TSS>>Q174156: HOWTO: Programmatically Launch the Default Internet Browser (http://support.microsoft.com/support/kb/articles/Q174/1/56.ASP) TSS>>К сожалению для VB, но все что можно на VB, можно и на VC++
S>Так это же просто переписанный на VB код запуска ShellExecute. А где поиск браузера по умолчанию?
См. код внимательно. Особенно на FindExecutable().
А трюк достаточно приколен -- создаеться пустой .htm файл, потом ищеться приложение, ассоциированное с .htm-файлам. Оно-то, как раз, и являеться браузером по умолчанию. Точно также, по идее, ищеться и почтовик по умолчанию (ассоциация для .eml), NEWS-ридер (ассоциация для .news)... А вот редактор прописан в HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Default HTML Editor.
Signed, [TSS] /SDL/
Re[12]: Запуск бровзера по умолчанию в новом окне.
Здравствуйте TSS, Вы писали:
TSS>А трюк достаточно приколен -- создаеться пустой .htm файл, потом ищеться приложение, ассоциированное с .htm-файлам. Оно-то, как раз, и являеться браузером по умолчанию.
Ну вот, опять htm-файл. Это не тоже самое, когда в командной строке исполняешь "http://rsdn.ru". А уж связь с htm'ом и в реестре посмотреть можно.
Re[13]: Запуск бровзера по умолчанию в новом окне.
Здравствуйте vladsm, Вы писали:
V>Здравствуйте TSS, Вы писали:
TSS>>А трюк достаточно приколен -- создаеться пустой .htm файл, потом ищеться приложение, ассоциированное с .htm-файлам. Оно-то, как раз, и являеться браузером по умолчанию.
V>Ну вот, опять htm-файл. Это не тоже самое, когда в командной строке исполняешь "http://rsdn.ru". А уж связь с htm'ом и в реестре посмотреть можно.
Именно "не тоже самое" !
Есть понятие "URL scheme", имхо EditFlags в реестре за него и отвечает.
А посмотреть действительно можно. Только надобно из ".htm" выявить default value, потом дальше пойти гулять по htmlfile/shell/command ... проще через FindExecutable() -- она этим и занимаеться.
Signed, [TSS] /SDL/
Re[12]: Запуск бровзера по умолчанию в новом окне.
Здравствуйте TSS, Вы писали:
TSS>Здравствуйте sasha, Вы писали:
S>>Так это же просто переписанный на VB код запуска ShellExecute. А где поиск браузера по умолчанию?
TSS>См. код внимательно. Особенно на FindExecutable(). TSS>А трюк достаточно приколен -- создаеться пустой .htm файл, потом ищеться приложение, ассоциированное с .htm-файлам. Оно-то, как раз, и являеться браузером по умолчанию. Точно также, по идее, ищеться и почтовик по умолчанию (ассоциация для .eml), NEWS-ридер (ассоциация для .news)... А вот редактор прописан в HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Default HTML Editor.
Нее, это понятно, просто разговор был о прямом поиске в реестре.
Re[13]: Запуск бровзера по умолчанию в новом окне.
Здравствуйте tdv, Вы писали:
tdv>Почти все знают как из программы запустить бровзер и передать ему ссылку используя ShellExecute, tdv>но во вопрос, как заставить делать это каждый раз в новом окне ?
Есть вариант, но корявенький.
Перед запуском ShellExecute надо попортить\удалить запись в реестре на нужный протокол (http для примера) в разделе реестра HKCR\http\shell\ddeexec\Application чтобы браузер не смог ответить на dde-мессагу, которую пошлёт ShellExecute, и тогда запустит новое приложение.
После всего восстанавливаешь запись в реестре.
Здравствуйте DNS, Вы писали:
DNS>Есть вариант, но корявенький. DNS>Перед запуском ShellExecute надо попортить\удалить запись в реестре на нужный протокол (http для примера) в разделе реестра HKCR\http\shell\ddeexec\Application чтобы браузер не смог ответить на dde-мессагу, которую пошлёт ShellExecute, и тогда запустит новое приложение. DNS>После всего восстанавливаешь запись в реестре.
DNS>Как вариант?
Сразу к вопросу а почему http а не htmlfile? Дык потому что NN пишет свои настройки иммено туда, но не радуйтесь этот код будет работать только с IE т.к. уважаемый многими NN имеет свою особенную строку со своим только ему понятным форматом — XXXXXXX.exe -url "%1" вот мля в эту "%1" нужно поставить свой урл, уроды мля, я бы всех юзеров NN ставил к стенке мля, сколько можно мля?
-------------------------------------------------------------------
Вызывает презедент к себе коров и говорит:
— Ну, что будем сдавать, молоко или мясо?
(с) Г. Явлинский TV6 — Герой дня (18.04.2002)
-------------------------------------------------------------------
Вызывает презедент к себе коров и говорит:
— Ну, что будем сдавать, молоко или мясо?
(с) Г. Явлинский TV6 — Герой дня (18.04.2002)