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


Автор: Pavelbej 16.7.2008, 17:57
В своей программе я захватываю ссылку из адресной строки браузера с которым в данный момент я работаю, а главное, который находится поверх всех окон.

Вот как я это делаю:

Функция получения ссылок из разных браузеров
Код

function IEWindowEnumProc(AHandle: hWnd; AnObject: TObject): BOOL; stdcall;
var theClassName, s, op: string;
begin
  Result := True;
  SetLength(theClassName, 256);
  GetClassName(AHandle, PChar(theClassName), 255);
  if GetForegroundWindow=AHandle then
  begin
          if Pos('IEFrame', theClassName) > 0 then //Internet Explorer
          begin
              s:=Get_URL('IExplore');
              ...
          end;
          if Pos('OpWindow', theClassName) > 0 then //Opera
          begin
              s:=Get_URL('Opera');
              ...
          end;
          if Pos('MozillaUI', theClassName) > 0 then //Firefox
          begin
              s:=Get_URL('Firefox');
              ...
          end;
  end;
end;


Вызов:
Код

EnumWindows(@IEWindowEnumProc, LongInt(0));


Для перечисленных выше браузеров этот код работает нормально. Но возникла необходимось прикрутить захват и из других браузеров (Netscape, SeaMonkey), и вот тут появилась проблема:
Имя класса окна у всех трех браузеров (Firefox, Netscape, SeaMonkey) один и тот же - MozillaUIWindowClass

Как понять, в таком случае, кто есть кто?

Автор: Alkash 17.7.2008, 09:24
По FindWindow?

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