Avatar billede data2k.dk Nybegynder
15. april 2001 - 10:28 Der er 23 kommentarer og
1 løsning

100000 nico22

Her er der 1000 point for det rigtige svar.
Avatar billede ziron Nybegynder
15. april 2001 - 10:37 #1
hygger du dig nico22???

mit svar: Julemandens nisser har ingen bukser på og en tiger har ingen horn......

/ZIRON
Avatar billede bacardil Nybegynder
15. april 2001 - 10:37 #2
kan vi se en ref.
Avatar billede ziron Nybegynder
15. april 2001 - 10:41 #3
hov data2k.dk... jeg tror jeg stadig sover......
Avatar billede bacardil Nybegynder
15. april 2001 - 10:43 #4
Avatar billede ysubhi Nybegynder
15. april 2001 - 10:43 #5
SVAR!
Avatar billede snowball Novice
15. april 2001 - 10:48 #6
For at det skal gå helt rigtigt for sig, så skal vi faktisk se indholdet af den mail !!!

Så data2k.dk, hvis du ikke vil ha\' en masse beskyldninger om snyd på nakken, så vil jeg råde dig til at skrive koden du modtog af nico22 her !

Snowball
Avatar billede data2k.dk Nybegynder
15. april 2001 - 10:53 #7
snyd? Tro i hvad i vil, men her er der ingen snyd.....jeg forstå ikke hvad et par internet point kan ophidse jer sådan
Avatar billede data2k.dk Nybegynder
15. april 2001 - 10:54 #8
meld mig til og nico 22 til eksperten
Avatar billede okay Nybegynder
15. april 2001 - 10:55 #9
¨jeg ved det ik hellere ik, det er bare point :)
Avatar billede data2k.dk Nybegynder
15. april 2001 - 10:56 #10
hov en lille fejl... .meld mig og nico 22 til eksperten
Avatar billede ziron Nybegynder
15. april 2001 - 10:58 #11
nåååår det er det spg...

snowball >> fik du nogensinde det med nico22\'s hjøreclick menu til at virke????

/ZIRON
Avatar billede snowball Novice
15. april 2001 - 11:00 #12
Det er bare point, ja, men tro mig; der findes mange regelryttere her på Eksperten. Desuden så er meningen med Eksperten jo, at så mange som muligt skal ha\' glæde af de spørgsmål som bli\'r stillet, og her er det jo kun dig der får noget ud af det !

Det skader vel aldrig og skrive koden og så være på den helt rigtige side. Tror næppe det er noget \"Top Secret\" i har lavet ;)

Snowball
Avatar billede snowball Novice
15. april 2001 - 11:02 #13
ziron: Nej, fik den aldrig til at virke ! Gjorde du ?

Snowball
Avatar billede data2k.dk Nybegynder
15. april 2001 - 11:04 #14
hmmm... Det er ikke min kode det er Nico 22 der har lavet den så i må vente til han kommer på nettet... han bestemmer vel om den skal på eller ej.

Avatar billede data2k.dk Nybegynder
15. april 2001 - 11:06 #15
jeg er ikke sindsyg barcadille ting....jeg svarer ikke på mine egne spørgsmål
Avatar billede snowball Novice
15. april 2001 - 11:13 #16
Hvad kalder du så nedenstående !? ;)

Accepteret svar fra data2k.dk
Point : 1000
14/04 2001 21:38:03 

Men la\' nu det ligge. Jeg ville bare gøre dig opmærksom på, at du gør klogest i at følge Ekspertens regler da du ellers _meget_ nemt kan løbe ind i problemer ! Men det må du selv om !

Snowball
Avatar billede bacardil Nybegynder
15. april 2001 - 11:20 #17
data2k.dk> + det omkring et webhotel..

Nej nej du svare ikke på dine spm *lol*

Så data2k.dk ting.. tag dig sammen.
Avatar billede bacardil Nybegynder
15. april 2001 - 11:24 #18
data2k> Men han kan også først få sine point, når han kommer på.

Og siger han ja til de point, så siger han ja til at udlevere koden til os andre.
Avatar billede data2k.dk Nybegynder
15. april 2001 - 11:27 #19
hvad snakker du om snowballs?
I stoppede begge med at svare så jeg lukkede spørsmålet, men nu har jeg åbnet et nyt da nico svarede rigtigt
Avatar billede ziron Nybegynder
15. april 2001 - 11:31 #20
snowball >> jeg har ikke haft tid til at prøve....

/ZIRON
Avatar billede nico26 Nybegynder
15. april 2001 - 14:07 #21
Her er koden


unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, OleCtrls, SHDocVw_TLB, MSHTML_TLB, EventSink, ActiveX;

type
  TForm1 = class(TForm)
    wbDoc: TWebBrowser;
    btnNavigate: TButton;
    edtURL: TEdit;
    btnOther: TButton;
    procedure btnNavigateClick(Sender: TObject);
    procedure wbDocDocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure FormCreate(Sender: TObject);
  private
    Events: TEventSink;
    function FindButton(ID: string): IHTMLInputButtonElement;
    procedure ButtonInvoke(Sender: TObject; DispID: Integer;
      const IID: TGUID; LocaleID: Integer; Flags: Word;
      Params: tagDISPPARAMS; VarResult, ExcepInfo, ArgErr: Pointer);
    procedure DoClick;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.FindButton(ID: string): IHTMLInputButtonElement;
var
  Doc: IHTMLDocument2;
  AllElts: IHTMLElementCollection;
begin
  Doc := wbDoc.Document as IHTMLDocument2;
  if Assigned(Doc) then
  begin
    AllElts := Doc.all;
    Result := AllElts.item(ID, EmptyParam) as IHTMLInputButtonElement;
  end
  else
    Result := nil;
end;

procedure TForm1.ButtonInvoke(Sender: TObject; DispID: Integer;
  const IID: TGUID; LocaleID: Integer; Flags: Word;
  Params: tagDISPPARAMS; VarResult, ExcepInfo, ArgErr: Pointer);
begin
  case DispID of
    -600: DoClick;
  end;
end;

procedure TForm1.DoClick;
begin
  btnOther.Enabled := System.True;
end;

procedure TForm1.btnNavigateClick(Sender: TObject);
begin
  wbDoc.Navigate(edtURL.Text, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;

procedure TForm1.wbDocDocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  Button: IHTMLInputButtonElement;
begin
  Button := FindButton(\'proceed\');
  if Assigned(Button) then
    Events.Connect(Button, HTMLButtonElementEvents);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Events := TEventSink.Create;
  Events.OnInvoke := ButtonInvoke;
end;

end.

----------------------------------------

unit EventSink;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ActiveX;

type
  TInvokeEvent = procedure (Sender: TObject; DispID: Integer; const IID: TGUID;
    LocaleID: Integer; Flags: Word; Params: TDispParams; VarResult, ExcepInfo,
    ArgErr: Pointer) of object;

  TEventSink = class;

  TAbstractEventSink = class(TInterfacedObject, IUnknown, IDispatch)
  private
    FDispatch: IDispatch;
    FDispIntfIID: TGUID;
    FConnection: Integer;
    FOwner: TEventSink;
  protected
    { IUnknown methods }
    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
    { IDispatch methods }
    function GetTypeInfoCount(out Count: Integer): HResult; stdcall;
    function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall;
    function GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount,
      LocaleID: Integer; DispIDs: Pointer): HResult; stdcall;
    function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
  public
    constructor Create(AOwner: TEventSink);
    destructor Destroy; override;
    procedure Connect(ADispatch: IDispatch; const ADispIntfIID: TGUID);
    procedure Disconnect;
  end;

  TEventSink = class
  private
    FSink: TAbstractEventSink;
    FOnInvoke: TInvokeEvent;
  protected
    procedure DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer); virtual;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Connect(ADispatch: IDispatch; const ADispIntfIID: TGUID);
  published
    property OnInvoke: TInvokeEvent read FOnInvoke write FOnInvoke;
  end;

implementation

uses
  ComObj;

{ TAbstractEventSink }

constructor TAbstractEventSink.Create(AOwner: TEventSink);
begin
  inherited Create;
  FOwner := AOwner;
end;

destructor TAbstractEventSink.Destroy;
begin
  Disconnect;
  inherited Destroy;
end;

function TAbstractEventSink.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
  Result := E_NOINTERFACE;
  if GetInterface(IID, Obj) then
    Result := S_OK;
  if IsEqualGUID(IID, FDispIntfIID) and GetInterface(IDispatch, Obj) then
    Result := S_OK;
end;

function TAbstractEventSink._AddRef: Integer;
begin
  Result := -1;
end;

function TAbstractEventSink._Release: Integer;
begin
  Result := -1;
end;

function TAbstractEventSink.GetTypeInfoCount(out Count: Integer): HResult;
begin
  Count := 0;
  Result := S_OK;
end;

function TAbstractEventSink.GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult;
begin
  Result := E_NOTIMPL;
end;

function TAbstractEventSink.GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount,
  LocaleID: Integer; DispIDs: Pointer): HResult;
begin
  Result := E_NOTIMPL;
end;

function TAbstractEventSink.Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
  Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
begin
  (FOwner as TEventSink).DoInvoke(DispID, IID, LocaleID, Flags, Params,
                                  VarResult, ExcepInfo, ArgErr);
  Result := S_OK;
end;

procedure TAbstractEventSink.Connect(ADispatch: IDispatch; const ADispIntfIID: TGUID);
begin
  FDispatch    := ADispatch;
  FDispIntfIID := ADispIntfIID;

  InterfaceConnect(FDispatch, FDispIntfIID, Self, FConnection);
end;

procedure TAbstractEventSink.Disconnect;
begin
  if Assigned(FDispatch) then
  begin
    InterfaceDisconnect(FDispatch, FDispIntfIID, FConnection);
    FDispatch := nil;
    FConnection := 0;
  end;
end;

{ TEventSink }

constructor TEventSink.Create;
begin
  FSink := TAbstractEventSink.Create(Self);
end;

destructor TEventSink.Destroy;
begin
  FSink.Free;
  inherited Destroy;
end;

procedure TEventSink.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
  Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer);
begin
  if Assigned(FOnInvoke) then
    FOnInvoke(Self, DispID, IID, LocaleID, Flags, TDispParams(Params),
              VarResult, ExcepInfo, ArgErr);
end;

procedure TEventSink.Connect(ADispatch: IDispatch; const ADispIntfIID: TGUID);
begin
  FSink.Connect(ADispatch, ADispIntfIID);
end;

end.
Avatar billede nico26 Nybegynder
15. april 2001 - 14:09 #22
Bruger man delphi 4, skal man først importere TWebBrowser som activeX component. I delphi 5 er den med som standard, og SHDocVw_TLB og MSHTML_TLB hedder SHDocVw og MSHtml
Avatar billede data2k.dk Nybegynder
15. april 2001 - 14:13 #23
se no cheaters her!!!!
Avatar billede snowball Novice
15. april 2001 - 17:36 #24
data2k.dk: Jeg har aldrig beskyldt dig at snyde. Jeg gjorde dig bare opmærksom på at der er nogle her på Eksperten der går meget højt op i den slags! Altså at det hele skal foregå rigtigt så flest mulige får noget ud af det som sker her på siden.

Snowball
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester