Главная страница
    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.45 MB
Время: 0.003 c
2-1301635425
mefodiy
2011-04-01 09:23
2011.07.10
Не работает режим "full screen"


15-1300860825
И. Павел
2011-03-23 09:13
2011.07.10
что вернет вызов (new SimpleFormatDateTime).Formst("MMM") в Java?


2-1301921321
Елена
2011-04-04 16:48
2011.07.10
построение фигур в delphi


2-1301593434
fynjy93
2011-03-31 21:43
2011.07.10
занос boolean значения в БД


15-1300719280
mahab-22
2011-03-21 17:54
2011.07.10
работа с dbexpress





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский