在自制的 IE 浏览器中点击 Link 时 不让 调用 Windows 的 IE .....直接调用自制的IE 打开...
用下面的 代码可以 实现...
但 有 些问题..procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var newForm: TForm1;
begin
newForm := TForm1.Create(self);
newForm.Visible:=true;
ppDisp := newform.WebBrowser1.ControlInterface;
Cancel:=false;
end;他开的 虽然是新窗口,,但 只是 在程序里的 新 Form ..而不是 真正的 Myie ...
如果你关掉主窗口的话.以后开的 新 Form 都会关闭...如果用 VB 编 myie 的话 打开新link时 产生的新Form 会在任务栏 显示
而且当你关掉 第一个打开的 Form时..后生成的新 Form 还存在.不会被关闭但 Delphi 怎么样才能实现这样的 效果
哪位高人 来 讲一下...
最好把 代码都 贴上来..谢谢 ..
用下面的 代码可以 实现...
但 有 些问题..procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var newForm: TForm1;
begin
newForm := TForm1.Create(self);
newForm.Visible:=true;
ppDisp := newform.WebBrowser1.ControlInterface;
Cancel:=false;
end;他开的 虽然是新窗口,,但 只是 在程序里的 新 Form ..而不是 真正的 Myie ...
如果你关掉主窗口的话.以后开的 新 Form 都会关闭...如果用 VB 编 myie 的话 打开新link时 产生的新Form 会在任务栏 显示
而且当你关掉 第一个打开的 Form时..后生成的新 Form 还存在.不会被关闭但 Delphi 怎么样才能实现这样的 效果
哪位高人 来 讲一下...
最好把 代码都 贴上来..谢谢 ..
在BeforeNavigate的事件里写:WinExec(PChar(AnsiQuotedStr(ParamStr(0),'"')+' '+ AnsiQuotedStr(新的URL,'"') ));
dfm:object Form1: TForm1
Left = 402
Top = 133
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object WebBrowser1: TWebBrowser
Left = 32
Top = 18
Width = 587
Height = 334
TabOrder = 0
OnNewWindow2 = WebBrowser1NewWindow2
ControlData = {
4C000000AB3C0000852200000000000000000000000000000000000000000000
000000004C000000000000000000000001000000E0D057007335CF11AE690800
2B2E126208000000000000004C0000000114020000000000C000000000000046
8000000000000000000000000000000000000000000000000000000000000000
00000000000000000100000000000000000000000000000000000000}
end
object Button1: TButton
Left = 95
Top = 381
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 1
OnClick = Button1Click
end
object Panel1: TPanel
Left = 247
Top = 370
Width = 99
Height = 59
BevelOuter = bvNone
TabOrder = 2
Visible = False
object WebBrowser2: TWebBrowser
Left = 6
Top = 13
Width = 40
Height = 17
TabOrder = 0
OnBeforeNavigate2 = WebBrowser2BeforeNavigate2
OnNewWindow2 = WebBrowser1NewWindow2
ControlData = {
4C000000AB3C0000852200000000000000000000000000000000000000000000
000000004C000000000000000000000001000000E0D057007335CF11AE690800
2B2E126208000000000000004C0000000114020000000000C000000000000046
8000000000000000000000000000000000000000000000000000000000000000
00000000000000000100000000000000000000000000000000000000}
end
end
end
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Panel1: TPanel;
WebBrowser2: TWebBrowser;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch;
var Cancel: wordbool);
procedure WebBrowser2BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: olevariant; var Cancel: wordbool);
private
{ Private declarations }
public
TargetURL: string;
{ Public declarations }
end;
var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://community.csdn.net/');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate(ParamStr(1));
end;procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: wordbool);
begin
ppDisp := WebBrowser2.DefaultInterface;
end;procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: olevariant; var Cancel: wordbool);
begin
WinExec(PChar(AnsiQuotedStr(ParamStr(0), '"') + ' ' +
AnsiQuotedStr(URL, '"')), SW_NORMAL);
Cancel := True;
end;end.
不过不是我想要的.
你这样 的话 是 直接再调用一次 程序 .也就是说 系统进程里 会有 两个 myie进程 .
而不是 只有一个进程 ,,简单点说..我说的意思 是..让 myie 开新 Form 在任务栏 里 显示..(系统进程 只有一个 myie进程 .)...