Главная Новые темы Список тем Задать вопрос Поиск  

Форум "Delphi"


Паскаль, Делфи


 #0 Loh 01.07.07 11:31:56 - 03.07.07 21:48:57

как программно выбрать URL-ссылку в IE



В ИнтернетЭксплорер загружена страница - как программно получить доступк ее содержимому и выбрать URL-ссылку Цитата

 #1 Vlad © 01.07.07 16:32:55

var
    Winds: IShellWindows;
    IEWB: IWebBrowser2;
    Doc: IHtmlDocument2;
    i,j:integer;
    Coll : IHTMLElementCollection;
    Elem: HTMLInputElement;
    s:string;
begin
 Winds:=CoShellWindows.Create;
 for j:=0 to Winds.Count-1 do
  if (Winds.Item(j) as IWEbBrowser2).Document<>nil
  then begin
    IEWB:=Winds.Item(j) as IWEbBrowser2;
    if IEWB.Document.QueryInterface(IhtmlDocum­ent2, Doc)= S_OK
    then begin //начало подключения

примерно так, далее читать справку
 #2 Deep © 03.07.07 00:11:22

>#1 Vlad  ©
это если страничка отображается в "своем" окне IE. Если же она отображается в родном окне IE, тогда нужно сначала получить доступ к этому окну через COM-интерфейсы. Где-то валялся примерчик (там буквально пару строк) для Excel, как найду - выложу.
 #3 Deep © 03.07.07 10:42:18

хехе... вобщето, я думал что должен пройти вот такой номер по аналогии с офисными приложениями, но судя по всему такой номер не пройдет.

var
    IE : Variant;
begin
    // Ищем запущеный экземплярвызывается исключение
    IE := GetActiveOleObject('Excel.Application')­;
    ....
end;

IE регистрирует свои объекты вызовом CoRegisterClassObject с параметром flags=REGCLS_SINGLEUSE. Это означает, что только один клиент может быть подключен к объекту.

Наверное, это сделано в целях безопасности.

Получается, что возможен доступ только через "свой" IE (IEWB: IWebBrowser2;) как и описывал Влад.

 #4 Vlad © 03.07.07 21:48:57

ну дык, скоко часов положил на эту хрень...
и причем тут свой-чужой?
этот код, например, позволяет подключится к любому экземпляру IE и делать с ним многое.

procedure FillAll(CContry,Nationaly,BCountry,Reli­gion,FirstName,Gender,LastName,FatherNam­e,MotherName,HusbandName,BirdthDate,Bird­thPlace,Profession,PassportNo,DateOfIssu­e,ExpirationDate,AddresLine1,AddresLine2­,City,Phone:string);
var
    Winds: IShellWindows;
    IEWB: IWebBrowser2;
    Doc: IHtmlDocument2;
    i,j:integer;
    Coll : IHTMLElementCollection;
    Elem: HTMLInputElement;
    s:string;
begin
 Winds:=CoShellWindows.Create;
 for j:=0 to Winds.Count-1 do
  if (Winds.Item(j) as IWEbBrowser2).Document<>nil
  then begin
    IEWB:=Winds.Item(j) as IWEbBrowser2;
    if IEWB.Document.QueryInterface(IhtmlDocum­ent2, Doc)= S_OK
    then begin //начало подключения
     doc.all.tags('INPUT').QueryInterface(IH­TMLElementCollection,coll);

 for i:=0 to Coll.length-1 do begin //--------------- заполняем типа Input все
  if (HTMLInputElement(Coll.item(i,varEmpty)­).name='FRM_VISA_SINGLE_FORM_B.DEFAULT.F­_NM_E.01')
   then begin HTMLInputElement(Coll.item(i,varEmpty))­.value:=FirstName;  end;

или

for i:=0 to Coll.length-1 do begin //--------------- заполняем типа Select все
  //выбор не понял чего, но что типа один человек
  if (HTMLInputElement(Coll.item(i,varEmpty)­).name='FRM_VISA_SINGLE_FORM_B.DEFAULT.G­R_MEN.01')
   then begin
   HTMLInputElement(Coll.item(i,varEmpty))­.outerHTML:='<SELECT name=FRM_VISA_SINGLE_FORM_B.DEFAULT.GR_­MEN.01> <OPTION value=3>Daughter of Main Person<OPTION value=1 selected>Main/Only Person in a Group'+
   '<OPTION value=0>Select Group Type<OPTION value=2>Son of Main Person<OPTION value=4>Wife of Main Person</OPTION></SELECT>';
        end;
  // выбор национальности
  if (HTMLInputElement(Coll.item(i,varEmpty)­).name='FRM_VISA_SINGLE_FORM_B.DEFAULT.P­RS_NAT.01')
   then begin
   s:=HTMLInputElement(Coll.item(i,varEmpt­y)).outerHTML;
   s:=AnsiReplaceStr(s,'selected','');
   s:=AnsiReplaceStr(s,Nationaly,Nationaly­+' selected');
   HTMLInputElement(Coll.item(i,varEmpty))­.outerHTML:=s;
        end;

писал автозаполнение анкет




  • Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов