Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> InternetExplorer.Application link Click, InternetExplorer.Application link Click 
:(
    Опции темы
alexpotemkin
  Дата 28.3.2007, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Очень срочно!!!
Помогите завершить начатое. Не могу выполнить (имитировать) клик по ссылке в IE при использовании InternetExplorer.Application, причем если использовать компонет TWebBrowser клик выполнить (имитировать) достаточно просто. Буду благодарен дельным советам или примерам реализации. Ниже куски кода по теме:
Код

uses windows, Comobj, ActiveX, MiniMSHTML, KOLSHDocVw;
....
const PROCESS_TERMINATE = $0001;
....
var Pid: Cardinal;
    ProcessHandle : THandle;
    IE: IWebBrowser2;
    Doc: IHtmlDocument2;
    iColl:IHTMLElementCollection;
    iElement:IHTMLElement;
    iDisp:IDispatch;
    temp,ov: OleVariant;
    i: Integer;
    str: String;
....
function MessageBoxA(hWnd: cardinal; lpText, lpCaption: PAnsiChar; uType: Cardinal): Integer; stdcall; external 'user32.dll' name 'MessageBoxA' index 452;

function IsOLEObjectInstalled(Name: String): boolean;
var
  ClassID: TCLSID;
  Rez : HRESULT;
begin
  // Ищем CLSID OLE-объекта
  Rez := CLSIDFromProgID(PWideChar(WideString(Name)), ClassID);
  if Rez = S_OK then  // Объект найден
    Result := true
  else
    Result := false;
end;

begin
  CoInitialize(nil);
  if not IsOLEObjectInstalled('InternetExplorer.Application') then Exit;
  IE := CreateOleObject('InternetExplorer.Application') as IWebBrowser2;
  IE.Visible := True;
  GetWindowThreadProcessId(IE.HWND, @Pid);
  IE.Navigate('www.ya.ru', temp, temp, temp, temp);
  while IE.ReadyState <> READYSTATE_COMPLETE do begin
    Sleep(1);
  end;
  Doc := IE.Document as IHtmlDocument2;
  if (Assigned(Doc)) then begin
    ov := 'a';
    IDisp := Doc.all.tags(ov);
    IDisp.QueryInterface(IHTMLElementCollection,iColl);
    for i := 0 to iColl.get_length-1 do begin
      iDisp := iColl.item(i, 0);
      iDisp.QueryInterface(IHTMLElement,iElement);
      str := ielement.getattribute('href',0);
      MessageBoxA(0, PChar(str), PChar('Test'), MB_ICONINFORMATION);
      //сообщение так для примера просто, здесь вот как раз и нужно проверить ссылку и если та что нужна по не кликнуть
   end;//for
  end;
  ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, Pid);
  TerminateProcess(ProcessHandle,4);
  CoUninitialize;
end.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0389 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.