Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Проблемма с аналогом TWebBrowser


Автор: sanomaster 23.5.2008, 21:58
доброе время суток!
я написал авто кликер на дэлфи, с помощью TWebBrowser
сайты состоят тупо из картинок, и я решил их убрать!
в нэте нашёл тему - аналог TWebBrowser без загрузки картинок.
я тут видел тему на счёт этого без ответов - вот как раз вам пригодится!
вот код 
Код

unit MyBrowser;

interface

uses
  SysUtils, Classes, ActnList, ShDocVw, ActiveX;

type
TMyBrowser = class(TWebBrowser, IDispatch)
    function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
  end;

procedure Register;

implementation

uses Variants;

procedure Register;
begin
  RegisterComponents('Samples', [TMyBrowser]);
end;

{ TMyBrowser }

function TMyBrowser.Invoke(DispID: Integer; const IID: TGUID;
  LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
  ArgErr: Pointer): HResult;
begin
  if DispID = DISPID_AMBIENT_DLCONTROL
  then begin
    TVarData(VarResult^).VType := VT_I4;
    TVarData(VarResult^).VInteger := 0;
    Result:= S_OK;
  end
  else Result:= inherited Invoke(DispID, IID, LocaleID, Flags, Params, VarResult, ExcepInfo, ArgErr)
end;

end.



проблема в том что появляется ошибка сценария...
эту проблему можно убрать поставив WebBrowser1.Silent:=True;
в TMyBrowser все свойства такие же! но Silent не помогло! иногда появляется ошибка сценария! 
я даже незнаю почему! smile 
она то каждые 5 минут вылазит, то каждый час!
может кто подскажет?

Автор: December 23.5.2008, 22:34
Если проблема только в том, чтобы подавлять окно - то ищи по форуму, обсуждалось уже.

Автор: sanomaster 23.5.2008, 23:11
ну вот эта тема..  http://forum.vingrad.ru/topic-113577/unread-1/0.html#st_0_view_0
я скопировал код 
Код

procedure TMainForm.TrapWM_Activate(var Msg: TWMActivate);
var
  L:Integer;
  wnd:Integer;
  WinClass,WinCaption:string;
  ShouldShow:boolean;
  ShouldClose:boolean;
begin
if Msg.Active = 0 then
  begin
  wnd := Msg.ActiveWindow;
  SetLength(WinClass,80);
  SetLength(WinClass,GetClassName(wnd, PChar(WinClass), Length(WinClass)));
  L:=GetWindowTextLength(wnd);
  SetLength(WinCaption,L+1);
  GetWindowText(Wnd,PChar(WinCaption),L+1);
  SetLength(WinCaption,L);
  ShouldShow:=(WinCaption<>'');
  if ShouldShow then
    begin
    ShouldClose:=(WinCaption='Îøèáêà ñöåíàðèÿ Internet Explorer') and (WinClass='Internet Explorer_TridentDlgFrame');
    ShouldClose:=ShouldClose or ((WinCaption='Internet Explorer Script Error') and (WinClass='Internet Explorer_TridentDlgFrame'));
    ShouldClose:=ShouldClose or ((WinCaption='Internet Explorer') and (WinClass='#32770'));
    if ShouldClose then SendMessage(wnd, WM_CLOSE, 0, 0);
    end;//if should show
  end;//if loose focus
end;//TrapWM_Activate


procedure TMainForm.WMActivate(var Msg: TWMActivate);
begin
TrapWM_Activate(Msg);
inherited;
end;

в protected я так понял!
не помогает( ошибка всё равно вылетает! smile 

Автор: December 23.5.2008, 23:22
Вот это
Îøèáêà ñöåíàðèÿ 
на
Ошибка сценария 
поменял?

Код вообще вызывается?

Автор: sanomaster 23.5.2008, 23:53
да, поменял! ошибка всё равно вылетает! мне её блин гдето пол часа ждать приходится(
а как посмотреть вызывается ли код?

Автор: December 24.5.2008, 23:30
Не поверишь - breakpoint поставить... Или хотя бы ShowMessage впихнуть

Автор: sanomaster 25.5.2008, 02:22
я уже сказал что ошибку мне ждать пол часа надо! 
и сколько мне это раз нада переходить по действиям с помощью breakpoint?
а ShowMessage не вылетает(
я просто скопировал те 2 процедуры и поставил там caption "Ошибка сценария Internet Explorer" правильно?

Автор: December 25.5.2008, 16:47
Вот так метод объявил?
procedure WMActivate(var Msg: TWMActivate); message WM_ACTIVATE;

Автор: sanomaster 25.5.2008, 19:31
о, вроде работает! спасибо!
но сайт палит что я не гружу картинки smile 
и не переходит по ссылкам дальше
тогда буду пользаваться кликером с картинками  smile 
ну в любом случае спасибо!)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)