Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Загрузка IExplorer


Автор: Poseidon 20.3.2005, 03:55
В общем-то САБЖ, но поясню. При использовании ShellExecute для открытия окна браузера с конкратным адресом и при условии, что Ixplorer уже открыт, происходит следующее: новое окно браузера не открывается, а адрес передается в уже открытую страницу. А нужно, что бы было что-то вроде "ОТКРЫТЬ В НОВОМ ОКНЕ ". Что бы то, что уже открыто не потерялось. Может кто знает как это сделать?

Автор: Vit 20.3.2005, 07:39
Выполнить через ShellExecute не линку а IExplore.exe а параметром в него передать твой линк

Автор: Poseidon 21.3.2005, 20:52
Vit, спасибо за совет, только моленькое исправление (если кто-то еще заинтересован как это сделать): вызывать не IExplore.exe, а explorer.exe.

PS. Еще хотелось бы узнать, как можно получить используемый по умолчанию браузер? Т.е. что бы открывать интернет страницу не в IE, а в браузере по умолчанию. При этом открывать в новом окне. Вот задача! smile
Ведь если использовать ShellExecute, передавая линк, то открывается браузер, каторый установлен по умолчанию, и это может быть не IE.

PPS. Знаю, что этот пост нарушает пункт 10 правил форума. Но я решил, что, по сути, это не новая тема, а продолжение старой.

Автор: _hunter 21.3.2005, 20:59
а почему не IExplore.exe?
ShellExecute и открывает в браузере по умолчанию
а что бы открывать в новом окне поставь в свойствах ие соотв. галку ( точнее убери ) -- "использовать одно и то же окно для загрузки ярлыков"

Автор: Vit 21.3.2005, 21:22
Цитата(Poseidon @ 21.3.2005, 11:52)
Vit, спасибо за совет, только моленькое исправление (если кто-то еще заинтересован как это сделать): вызывать не IExplore.exe, а explorer.exe.


Прочитать в реестре имя браузера по умолчанию и его вызвать.

Автор: Poseidon 22.3.2005, 03:31
Цитата(_hunter @ 21.3.2005, 20:59)
а почему не IExplore.exe?
ShellExecute и открывает в браузере по умолчанию
а что бы открывать в новом окне поставь в свойствах ие соотв. галку ( точнее убери ) -- "использовать одно и то же окно для загрузки ярлыков"

В том-то и дело, что ShellExecute открывает в браузере по умолчанию. Но если это браузер уже открыт, то новое окно не вызывается, а ссылка передается в уже открытое, а это не есть good. Нужно что бы ссылка открывалась в новом окне.


Vit, если не трудно, подскажи в каком ключе реестра.

Автор: Vit 22.3.2005, 07:10
х.з. поищи по реестру...

Автор: Rennigth 22.3.2005, 10:15
Poseidon
здесь посмотри
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet
правда у меня щас только IE и стоит, поэтому неуверен

Автор: p0s0l 22.3.2005, 10:52
Надо смотреть:
HKEY_CLASSES_ROOT\HTTP\Shell\Open\Command (аналогично другие протоколы, напр., FTP)
Если же ты открываешь .html файлы с винта, то:
HKEY_CLASSES_ROOT\.htm
HKEY_CLASSES_ROOT\.html
Там смотришь Default-значение (если через regedit)... К примеру, у меня это = Opera.HTML, значит, смотрим следующее:
HKEY_CLASSES_ROOT\Opera.HTML\Shell\Open\Command

Автор: _hunter 22.3.2005, 16:30
Poseidon, ты галку убирал? у меня открывается в новом окне независимо от наличия предыдущего...

Автор: Poseidon 23.3.2005, 00:49
Vit
Цитата
х.з. поищи по реестру...
Спасибо за помощь!


Rennigth
Цитата
здесь посмотри
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet
Установил себе оперу по умолчению, а в этом ключе и Опера и ИЕ. Но ведь по умолчанию не может же испольоваться два браузера!


p0s0l, спасибо! То, что нужно. Я догадывался, что нужно смотреть с какой программой ассоциируются htm (html) файлы, но все же хотелось получить совет профи. Только вот задача: Как читать значение "По умолчанию", с использованием TRegistry? Просто использовать ReadString не корректно (да и по-моему не пройдет).


_hunter
Цитата
ты галку убирал? у меня открывается в новом окне независимо от наличия предыдущего...
Ты же не хочешь мне предложить, что бы программа, каторую я пишу, каждый раз напоминала пользователю "Убрать галку". Я то могу убрать, но другим это покажется черезчур.

Автор: p0s0l 23.3.2005, 11:39
Цитата(Poseidon @ 23.3.2005, 00:49)
Как читать значение "По умолчанию", с использованием TRegistry?

Открываешь этот ключ (который с Default-полем) и делаешь
Reg.ReadString('');
(т.е. пустое имя)


Автор: _hunter 23.3.2005, 16:15
Poseidon, именно хочу.
твоя программа должна работать в соответствии с настройками пользователя. и если он ожидает получать все ярлыки в одном окне он должен их получать в одном окне

Автор: Poseidon 24.3.2005, 04:58
2p0s0l
Цитата
Открываешь этот ключ (который с Default-полем) и делаешь
Reg.ReadString('');
(т.е. пустое имя)
Очень благодарен!


2_hunter
Цитата
Poseidon, именно хочу.
твоя программа должна работать в соответствии с настройками пользователя. и если он ожидает получать все ярлыки в одном окне он должен их получать в одном окне
Суть в том, что пользователь может и не подазревать и таких начтройках браузера! Всякие есть. А вот открытие в новом окне лично я нахожу куда удобнее, чем в уже открытом. Даже если пользователь установил у себя, чтобы все открывалось в одном окне, а тут открылось в новом, думаю он не очень огорчится, ежели если все будет наоборот. Суть-то не в том, что бы определить, что там в браузере нужно сделать, а в том, как это делается программно!

2All Всем спасибо! Мой вопрос исчерпан.

Автор: _hunter 24.3.2005, 15:18
подозревает/не подозревает -- это не твои проблемы. твои проблемы -- сделать программу работающей так, как это ожидается в соответствии с настройками системы и общепринятыми соглашениями.
как ты думаеш, если при нажатии на крестик ( тот, что окно закрывает ) твоя программа будет не закрываться, а создавать еще одно окно, это будет нормально?

Автор: Poseidon 24.3.2005, 18:38
Цитата(_hunter @ 24.3.2005, 15:18)
подозревает/не подозревает -- это не твои проблемы. твои проблемы -- сделать программу работающей так, как это ожидается в соответствии с настройками системы и общепринятыми соглашениями.
как ты думаеш, если при нажатии на крестик ( тот, что окно закрывает ) твоя программа будет не закрываться, а создавать еще одно окно, это будет нормально?

Сколько людей, столько и мнений

Может ты в каком-то смысле и прав. Но я же исхожу, при написании программ, не из общепринятых соглашений, а из соображений удобства пользования. Даже в примере с крестиком: Мне например нравится, что все приложения Office (да и не только) спрашивают о сохранении при нажатии на крестик. Очень удобно! Так и открытие в новом окне, в моем понимании, удобнее, чем менять содержимое уже открытого окна.

Автор: _hunter 24.3.2005, 18:41
запрос перед закрытием это тоже общепринято.
ну да ладно... это уже флейм пошел...
мое дело предложить, твое -- положить smile

Автор: Poseidon 25.3.2005, 03:55
Цитата
мое дело предложить, твое -- положить
Все равно и на том спасибо. Иногда даже самые нелепые, на первый взгляд, предложения потом становятся гениальными идеями.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)