Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2013, 00:16   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Вопрос Получить стандартный браузер в системе.

Всем лучи добра!

Собственно как получить путь к браузеру "по умолчанию"?

Вариант с реестром я уже видел:
Открываю HKCR, там ищу htmlfile/shell/open.... и облом - там прописан IE, хотя почему-то запускается FF.

Тот же сабж с ветками http,https,.html,.htm везде прописан IE, а реально запускается FF. Не понятно.


Может кто знает годное решение?
Человек_Борща вне форума Ответить с цитированием
Старый 03.10.2013, 01:38   #2
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Вот тут посмотрите:
HKEY_LOCAL_MACHINE\SOFTWARE\Clients \StartMenuInternet\FIREFOX.EXE\Capa bilities\FileAssociations
ДралсяСошибками вне форума Ответить с цитированием
Старый 03.10.2013, 02:00   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Не вариант. Мне нужен стандартный браузер для интернетов, установленный на ПК пользователя, по его желанию, а не единственный FF.
Человек_Борща вне форума Ответить с цитированием
Старый 03.10.2013, 02:19   #4
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

У меня в HKCR\http\shell\open\command стоит Opera, как и должно быть. Даже более того: у меня мультимедийная клава с дополнительными кнопками, есть и запуск браузера. Начиная с XP, кнопки поддерживаются родным драйвером Windows, и в реестре для них есть настройка, которую я не менял:
Код:
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\7]
"Association"="http"
При нажатии кнопки "Браузер" на клаве запускается именно Opera, что как бы намекает.
Vapaamies вне форума Ответить с цитированием
Старый 03.10.2013, 06:34   #5
igh0st
Форумчанин
 
Аватар для igh0st
 
Регистрация: 05.07.2010
Сообщений: 136
По умолчанию

Попробуй FindExecutable
Код:
procedure DefaultBrowser;
var
  tmp: PChar;
  fexe: LPTSTR;
begin
  tmp := StrAlloc(255);
  fexe := StrAlloc(255);
  try
    GetTempPath(255, tmp);
    if FileCreate(tmp + 'temp.html') <> -1 then
    begin
      if FindExecutable('temp.html', tmp, fexe) > 32 then
        ShowMessage(ExtractFileName(fexe));
      SysUtils.DeleteFile(tmp + 'temp.html');
    end;
  finally
    StrDispose(tmp);
    StrDispose(fexe);
  end;
end;

Последний раз редактировалось igh0st; 03.10.2013 в 06:37.
igh0st вне форума Ответить с цитированием
Старый 03.10.2013, 10:07   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Vapaamies, Да у меняустановлены все оперы(12, 16 и Next)а так же Google Chrome, Safari, IE аж 3 штуки ну и пачка FireFox. Последний, стабильный - является браузером по умолчанию.

Я бы не создал тему, если бы все было так просто "найти ассоциацию с браузером". Смотрел ветки реестра: .htm, .html, htmlfile, http, https - везде прописан IE, у http прописана опера, у https прописан FF.Так что, четкой уверенности в том, что вслед. раз я найду в http не дефолный браузер - выше среднего, учитывая что уж опера точно не дефолтный браузер.

igh0st, спасибо, посмотрю.
Человек_Борща вне форума Ответить с цитированием
Старый 03.10.2013, 10:29   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ShellExecute тоже по идее должен открывать url в дефолте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.10.2013, 16:07   #8
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Я бы не создал тему, если бы все было так просто "найти ассоциацию с браузером". Смотрел ветки реестра: .htm, .html, htmlfile, http, https - везде прописан IE, у http прописана опера, у https прописан FF.
Ну возьми у кого-нибудь такую клаву напрокат. Жил бы рядом -- дал бы, у меня старая есть. Рабочая, держу про запас.

Из опыта с клавой я по-прежнему придерживаюсь мнения, что "браузер по умолчанию" программно означает "обработчик http". Попробуй поискать другие места, где он может быть установлен или перекрыт для конкретного пользователя. Скажем, существует ветка HKCU\Software\Classes, но внутри нее про http у меня ничего нет.

Разрядность системы и браузеров какая? Хотя, в Windows 7 вроде уже нет чехарды с SysWOW64 в реестре, как было в XP/2003.
Vapaamies вне форума Ответить с цитированием
Старый 03.10.2013, 22:47   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

igh0st, спасибо. Ваше решение работает.
Не много упростил его:
Код:
function GetDefaultBrowser: string;
var
  tmp: string;
  s: array [0 .. MAX_PATH] of Char;
begin
  Result := '';
  tmp := IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP'));
  if (FileCreate(tmp + 'temp.html') <> -1) then
  begin
    if (FindExecutable('temp.html', PChar(tmp), @s) > 32) then //Подключить ShellAPI
      Result := s;
    DeleteFile(PChar(tmp + 'temp.html'));
  end;
end;
Человек_Борща вне форума Ответить с цитированием
Старый 04.10.2013, 11:58   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

По ходу скорее всего здесь (в XP по крайней мере)
Код:
HKEY_CURRENT_USER\Software\Classes\http\shell\open\command
FindExecutable получше, дабы не зависить от версии винды
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать Веб-браузер, который стоит по-умолчанию в системе? Vova777 Общие вопросы Delphi 3 31.03.2013 18:39
Цель : Получить сведения о системе MeTeOpA Visual C++ 4 31.01.2011 01:39
Получить тексты всех окон в системе micaell Win Api 1 25.02.2009 09:02
Как получить доступ к фаловой системе мобильного телефона AlexDX Общие вопросы по Java, Java SE, Kotlin 0 04.02.2009 22:39
Opera как стандартный браузер Манжосов Денис :) Софт 4 23.07.2008 10:41