Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2011.07.10;
Скачать: [xml.tar.bz2];

Вниз

InternetExplorer.Application link Click   Найти похожие ветки 

 
ustas   (2007-03-28 09:59) [0]

Очень срочно!!!
Помогите завершить начатое. Не могу выполнить (имитировать) клик по ссылке в 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.


 
tesseract ©   (2007-03-28 11:40) [1]


>  Не могу выполнить (имитировать) клик по ссылке в IE при
> использовании


А зачем? нельзя просто по ссылке перейти?


 
ustas   (2007-03-28 12:01) [2]

Можно и просто по ссылке, но требуется именно клик.
Уже почти расковырял.


 
cannibaloidos ©   (2007-04-03 12:07) [3]


function HTMLLinkClick (Webbrowser1:Twebbrowser;link_text:string):boolean;
var
HtmlDocument: IHtmlDocument2;
 HtmlCollection: IHtmlElementCollection;
 HtmlElement: IHtmlElement;
 I: Integer;
begin
  HtmlDocument := WebBrowser1.Document as IHtmlDocument2;
 HtmlCollection := HtmlDocument.All;
 for I := 0 to HtmlCollection.Length - 1 do begin
   HtmlElement := HtmlCollection.Item(i, 0) as IHtmlElement;
   while htmlelement.innerText=link_text do
   begin
   htmlelement.click;
   Result:=True;
     exit;
   end;
end;
end;



Страницы: 1 вся ветка

Форум: "Corba";
Текущий архив: 2011.07.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
2-1301468675
Scott Storch
2011-03-30 11:04
2011.07.10
xml (dom)


2-1301402564
Eugene1501
2011-03-29 16:42
2011.07.10
Что значит подобная конструкция


2-1301910133
Magedon
2011-04-04 13:42
2011.07.10
COM: обработка исключительных ситуаций


15-1300947070
OW
2011-03-24 09:11
2011.07.10
Как бы Вы написали и почему?


8-1213456540
cavalera
2008-06-14 19:15
2011.07.10
Как отобразить текст в Delphi &amp; DX8





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский