Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить HTML-код из всех запущенных экземпляров Internet Explorer

Delphi , Интернет и Сети , Браузер

Получить HTML-код из всех запущенных экземпляров Internet Explorer

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
  MSHTML_TLB, ActiveX;


 function GetHTMLCode(WB: IWebbrowser2; ACode: TStrings): Boolean;
 var
  ps: IPersistStreamInit;
  s: string;
  ss: TStringStream;
  sa: IStream;
 begin
  ps := WB.document as IPersistStreamInit;
  s := '';
  ss := TStringStream.Create(s);
  try
    sa:= TStreamAdapter.Create(ss, soReference) as IStream;
    Result := Succeeded(ps.Save(sa, Bool(True)));
    if Result then ACode.Add(ss.Datastring);
  finally
    ss.Free;
  end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
  ShellWindow: IShellWindows;
  WB: IWebbrowser2;
  spDisp: IDispatch;
  IDoc1: IHTMLDocument2;
  k: Integer;
 begin
  ShellWindow := CoShellWindows.Create;
  // get the running instance of Internet Explorer 
 for k := 0 to ShellWindow.Count do
  begin
    spDisp := ShellWindow.Item(k);
    if spDisp = nil then Continue;
    // QueryInterface determines if an interface can be used with an object 
   spDisp.QueryInterface(iWebBrowser2, WB);
    if WB <> nil then
    begin
      WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
      if iDoc1 <> nil then
      begin
        WB := ShellWindow.Item(k) as IWebbrowser2;
        begin
          // Add HTML Code to Memo 
         Memo1.Lines.Add('****************************************');
          Memo1.Lines.Add(WB.LocationURL);
          Memo1.Lines.Add('****************************************');
          GetHTMLCode(WB, Memo1.Lines);
        end;
      end;
    end;
  end;
 end;

Программа на Delphi использует библиотеки MSHTML и ActiveX для взаимодействия с экземплярами Internet Explorer (IE). Главная цель программы - это извлечь код HTML из всех запущенных экземплярах IE.

Вот разбивка кода:

  1. Функция GetHTMLCode принимает два параметра: WB (интерфейс IWebbrowser2) и ACode (объект TStrings). Она использует интерфейс IPersistStreamInit, чтобы сохранить содержимое документа веб-браузера в потоковый стрим, который затем добавляется к строковому списку ACode.
  2. Процедура Button1Click вызывается при клике кнопки на форме. Она создает экземпляр класса ShellWindows, представляющего коллекцию запущенных окон IE. Затем она проходит по этой коллекции и спрашивает каждый окно о его интерфейсе IWebBrowser2.
  3. Для каждого найденного окна IE программа получает интерфейс документа IHTMLDocument2 и проверяет, не является ли он nil. Если он не nil, программа вызывает функцию GetHTMLCode, чтобы извлечь код HTML из веб-браузера.

Вывод программы - это список кодов HTML в контроле Memo1 на форме, а также URL каждого окна IE. Код HTML включает содержимое каждой загруженной страницы в соответствующем экземпляре IE.

Некоторые предложения по улучшению:

  • Вместо использования TStringStream, чтобы сохранить код HTML, рассмотрите более эффективный подход,such as reading the HTML code directly from the web browser's document.
  • Рассмотрите добавление обработки ошибок в функцию GetHTMLCode, чтобы обрабатывать случаи, когда документ веб-браузера не может быть сохранен или когда экземпляр IE не отвечает.
  • Если вы планируете использовать программу для масштабной коллекции данных, рассмотрите более robust подход, such as using a database to store the HTML codes instead of a string list.

В целом, код работает корректно и предоставляет полезную функциональность. Однако он может быть улучшен, если будут приняты некоторые из предложенных выше изменений.

Получить HTML-код из всех запущенных экземпляров Internet Explorer с помощью Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 15:21:25/0.0038599967956543/0