Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить какой браузер установлен по умолчанию? [D5, Win95/98, WinME]


R4D][ ©   (2003-01-08 16:57:00) 

Привет всем! Вопрос вот такой: как определить какой браузер установлен по умолчанию. Вопрос вроде простой, но я везде искал, но негде не нашел: Regmon"ом просмотрел куда обращается браузер при запуске - не помогло, пол MSDN просмотрел - естественно стандартной функции нет, я даже tdump user.exe просмотрел - никакой стандартной функции для определения браузера, установленного по умолчанию нет. Последняя надежда - это вы!!!(ОС WinME)


R4D][   (2003-01-12 14:23:00) [1]

2Smok_er: прошу прощения, я тут недавно опять полез в реестр и нашел этот самый ключ, но у него какая-то странная структура:
В shell - параметр по умолчанию - NetCaptor;
В нем же есть подраздел - NetCaptor, в котором, в свою очередь, есть подраздел command, где в ключе по умолчанию и находится путь к исполняемому фаилу.
Че-то все больно запутанно, но тут должна быть система. Если кто-нибудь знает как это работает, пожалуйста ответьте.


Smok_er   (2003-01-10 00:12:00) [2]

>>но у меня в WinME нет ключа htmlfile, а есть html,
честно говоря, в своих проектах пользуюсь именно предложенным мною способом. Неужели в ВинМе нет такого ключа?
Как тогда можно установить значения без использования прямого доступа к реестру?


R4D][   (2003-01-09 13:50:00) [3]

Странно, а у меня показывает сообщение "C:\Program"...все надоело...сношу нафиг WinME, то MAPI не инициализируется у него, то C:\Program...
Спасибо всем, вы очень помогли.


Verg   (2003-01-09 13:47:00) [4]


> Можешь дать исходник


Дык, я ж из товей мессаги его и дернул :)


implementation
uses ShellApi;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
BrN: PChar;
begin
GetMem(BrN,255);
FindExecutable(PChar("C:\Program Files\index.htm"),"",BrN);
MessageBox(0,BrN,"",mb_ok);
FreeMem(BrN);
end;



R4D][   (2003-01-09 13:12:00) [5]

To Verg:
Можешь дать исходник, а то че то тот который я предложил не работает, может я не грамотно воспользовался функцией? Или все же это глюк винды?


Verg   (2003-01-09 13:08:00) [6]

Например, у меня под NT4 WS на C:\Program Files\index.htm
FindExecutable выдает
C:\PROGRA~1\Plus!\MICROS~1\iexplore.exe

Что полностью соответствует записи в регистри:
HKEY_CLASSES_ROOT\htmlfile\shell\open\command\(default)

Это же можно посмотреть в Windows Explorer/View/Options/File Types


R4D][   (2003-01-09 11:51:00) [7]

Если ты имел в виду FindExecutable(PChar(""D:\WIndows\Readme.htm""),"",BrN), то тот же эффект, как и без кавычек...может у меня винда глючит?


R4D][   (2003-01-09 11:31:00) [8]

Что именно?


Smok_er   (2003-01-09 00:04:00) [9]

Надо брать в кавычки вроде


R4D][   (2003-01-08 21:37:00) [10]

Thanks to smok_er. Вот еще вопрос по ShellExecutable: Он не хочет показывать пути, в которых используется символ пробела! Например, вот этот код(1), в моем случае, должен в итоге привести к тому, что будет выведен MessageBox с такой строчкой "C:\Program Files\NetCaptor\NetCaptor.exe", а на самом деле получается сообщение со строкой "C:\Program". Если, например, использовать вместо "C:\Windows\Readme.htm", что-нибудь содержащее jpg картинку, то все будет нормально, ибо у моего просмотрщика картинок путь без пробелов. Ну и, наконец вопрос - как избавиться от этой проблемы? В общем, smok_er уже назвал вариант ответа, но у меня в WinME нет ключа htmlfile, а есть html, где вместо путя к проге указан GUID интерфейса? Да и хочеться, чтобы прога была более переносимой(если функции из версии в версию Windows менялись не так и значительно(по крайне мере в Win9x), то про реестр нельзя так сказать)

(1):
...
var
BrN: PChar;
...
GetMem(BrN,255);
FindExecutable(PChar("C:\Windows\Readme.htm"),"",BrN);
MessageBox(0,BrN,"",mb_ok);
FreeMem(BrN);


Song   (2003-01-08 20:52:00) [11]

2smok_er (08.01.03 19:08)
Всё это и делает FindExecutable()


smok_er   (2003-01-08 19:08:00) [12]

Да по-моему проще в реестр залезть и поправить. Там это все элементарно.
пример для htmlfile
Лезем в HKEY_CLASSES_ROOT
находим ключ htmlfile
заходим в него
в нем ключ shell, затем open
выставляем ключ command на свою программу и все либо просто считываем значение, если нужно просто узнать сабж.

Кстати, там же и иконку можно поменять.

Желаю удачи!


R4D][   (2003-01-08 17:38:00) [13]

Спасибо, когда проверю(наверное уже завтра) - скажу результаты.


Song   (2003-01-08 17:29:00) [14]

FindExecutable() для расширения html например


R4D][   (2003-01-08 17:03:00) [15]

Запускаемый фаил!


Song   (2003-01-08 17:00:00) [16]

В смысле название или запускаемый файл? Что именно?


Наверх

Титульная страница Поиск, карта сайта Написать письмо