![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить какой браузер установлен по умолчанию? [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]В смысле название или запускаемый файл? Что именно?