我使用:
ShellExecute(handle,'open',pchar('http://www.cnool.net'),nil,nil,sw_shownormal);
可以在原来的窗口打开www.cnool.com的网页而使用:
ShellExecute(handle,nil,pchar(javascript:alert(document.body.oncontextmenu="")'),nil,'_self',sw_shownormal);
它会从新窗口打开!我希望的是原来打开的IE里执行这语句啊,怎么办?

解决方案 »

  1.   

    execute a Javascript function in a Webbrowser/ IE Document?  
    Autor: Thomas Stutz  uses 
      MSHTML_TLB, SHDocVw, ShellAPI; // function to execute a script function function ExecuteScript(doc: IHTMLDocument2; script: string; language: string): Boolean; 
    var 
      win: IHTMLWindow2; 
      Olelanguage: Olevariant; 
    begin 
      if doc <> nil then 
      begin 
        try 
          win := doc.parentWindow; 
          if win <> nil then 
          begin 
            try 
              Olelanguage := language; 
              win.ExecScript(script, Olelanguage); 
            finally 
              win := nil; 
            end; 
          end; 
        finally 
          doc := nil; 
        end; 
      end; 
    end; // 2 Examples how to login to gmx homepage procedure FillInGMXForms(WB: ShDocVW_TLB.IWebbrowser2; IDoc1: IHTMLDocument2; 
      Document: Variant; AKennung, APasswort: string); 
    const 
      IEFields: array[1..4] of string = ('INPUT', 'text', 'INPUT', 'password'); 
    var 
      IEFieldsCounter: Integer; 
      i: Integer; 
      m: Integer; 
      ovElements: OleVariant; 
    begin 
      if Pos('GMX - Homepage', Document.Title) <> 0 then     while WB.ReadyState <> READYSTATE_COMPLETE do 
          Application.ProcessMessages;   // count forms on document and iterate through its forms 
      IEFieldsCounter := 0; 
      for m := 0 to Document.forms.Length - 1 do 
      begin 
        ovElements := Document.forms.Item(m).elements;     // iterate through elements 
        for i := ovElements.Length - 1 downto 0 do 
        begin 
          try 
            // if input fields found, try to fill them out 
            if (ovElements.item(i).tagName = IEFields[1]) and 
              (ovElements.item(i).type = IEFields[2]) then 
            begin 
              ovElements.item(i).Value := AKennung; 
              Inc(IEFieldsCounter); 
            end;         if (ovElements.item(i).tagName = IEFields[3]) and 
              (ovElements.item(i).type = IEFields[4]) then 
            begin 
              ovElements.item(i).Value := APasswort; 
              Inc(IEFieldsCounter); 
            end; 
          except 
            // failed... 
          end; 
        end; { for i...} 
      end;  { for m } 
      // if the fields are filled in, submit. 
      if IEFieldsCounter = 3 then ExecuteScript(iDoc1, 'document.login.submit()', 
          'JavaScript'); 
    end; function LoginGMX_IE(AKennung, APasswort: string): Boolean; 
    var 
      ShellWindow: IShellWindows; 
      WB: ShDocVW_TLB.IWebbrowser2; 
      spDisp: IDispatch; 
      IDoc1: IHTMLDocument2; 
      Document: Variant; 
      k: Integer; 
    begin 
      ShellWindow := CoShellWindows.Create; 
      // get the running instance of Internet Explorer 
      for k := 0 to ShellWindow.Count do 
      begin 
        spDisp := ShellWindow.Item(k); 
        if spDisp = nil then Continue; 
        // QueryInterface determines if an interface can be used with an object 
        spDisp.QueryInterface(iWebBrowser2, WB); 
        if WB <> nil then 
        begin 
          WB.Document.QueryInterface(IHTMLDocument2, iDoc1); 
          if iDoc1 <> nil then 
          begin 
            WB := ShellWindow.Item(k) as ShDocVW_TLB.IWebbrowser2; 
            Document := WB.Document; 
            // if GMX page... 
            FillInGMXForms(WB, IDoc1, Document, AKennung, APasswort); 
          end;  { idoc <> nil } 
        end; { wb <> nil } 
      end;  { for k } 
    end; // Example 1: Navigate to the gmx homepage in the IE browser an login 
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      ShellExecute(Handle, 
        'open', 
        'http://www.gmx.ch', 
        nil, 
        nil, 
        SW_SHOW); 
      Sleep(2000); 
      LoginGMX_IE('[email protected]', 'pswd'); 
    end; 
    // Example 2: navigate to the gmx homepage in the Webbrowser an login 
    procedure TForm1.Button2Click(Sender: TObject); 
    var 
      IDoc1: IHTMLDocument2; 
      Web: ShDocVW_TLB.IWebBrowser2; 
    begin 
      Webbrowser1.Navigate('http://www.gmx.ch'); 
      while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do 
        Application.ProcessMessages; 
      Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc1); 
      Web := WebBrowser1.ControlInterface; 
      FillInGMXForms(Web, iDoc1, Webbrowser1.Document, '[email protected]', 'pswd'); 
    end;