怎样模拟鼠标右键打开链接呢?(100分)

  • 主题发起人 主题发起人 zyy04
  • 开始时间 开始时间
Z

zyy04

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样模拟鼠标右键打开链接呢?也和按shift打开链接的效果是一样的。
我当然说的是用程序实现该功能。而且最好是用webbrowser实现。
若是用IE也行的。
 
若是在程序中用webbrowser的话,我想可以截取鼠标的事件,检查到点击事件时,将shift
设为按下状态。
 
教父:
看来我的表达能力也有问题:(
我说的是:用右键打开连接这个动作
用程序在webbrowser里实现,比如说:
我按下我的程序里的一个按钮,我的
webbrowser就打开该页面的一个特订
的连接,就好像是用“右键--》新窗
口打开链接”打开的效果。
最好还是由我的webbrowser的新实例打开,
而不是有Ie打开!
 
type

TFormArray = array [0..4096] of TWebBForm
//only save a pointer, not TForm self;
var lastForm:integer;
var webspool:TFormArray;

TWebBForm = ... //自己用Delphi设计好你需要的窗口

//初始化
LastForm:=0;

//然后每次调用的时候
inc(LastForm);
webspool[LastForm]:=TWebBForm.Create(self);
webspool[LastForm].webbrowser1.navigate ... //与通常用法相同

//主Form的OnClose的时候:
for i:=1 to lastform do
begin
try
webspool.webbrowser1.stop
//停止流览, 具体函数查一下help
Webspool.close;
except
end;
end;


大体就是这样, 如果想做得好些, 还可以在创建TWebBForm的时候将webspool中的
index一起传进取, 而TWebBForm关闭的时候将webspool[index]:=nil;
然后在主form关闭的时候判断一下, 创建twebbform的时候在webspool中先从头开始
找一个空位, 以利于空间的使用.

webspool也可以改成链表形式的.
 
直接在按钮的点击事件里写代码:
WebBrowser.Navigate('http://delphis.yeah.net')就可以了吧,挺多再加一些动态生成
窗体之类的代码。
 
Iknow:您的回答可以用来解决用webbrowser而不是IE来打开链接。

但是我的重点是要解决共用session和cookie的问题!!!!
举个例子:1在登陆大富翁后,你在任意链接上按右键,选择“在新窗口打开”
一个IE的实例将会创建,并且不会让你重新输用户名、密码登陆;

2 如果你重新打开一个IE,将该链接的url输入,你将会被要求输入用户名、密码。

我想达到的是1的效果!!!!

 
误人子弟啊
//在newwindow2事件中,可以ppdisp:=另一个webbrowser.application就行啦
procedure Tfrmhtmlbrowser.webbrowserNewWindow2(Sender: TObject;
var ppDisp: IDispatch
var Cancel: WordBool);
var
webbrowser: tEmbeddedWB;
begin
webbrowser := newpages('')
//新建一个webbrowser,反正你照着这个意思写就是了
ppdisp := webbrowser.Application

end;
//这个function你再根据自己的情况改写一下,像dxbar这些可以去掉,embeddedwb可以换成webbrowser
function tfrmhtmlbrowser.newpages(url: string): tEmbeddedWB;
var
tabsheet: ttabsheet;
webbrowser: tEmbeddedWB;
newitemlink: TdxBarItemLink;
dxbarbutton: TdxBarButton;
begin
tagcount := tagcount + 1;
tabsheet := ttabsheet.Create(Self);
tabsheet.Caption := '新页面';
tabsheet.Tag := tagcount;
webbrowser := tEmbeddedWB.Create(Self);
webbrowser.Tag := tagcount;
webbrowser.ReplaceCaption := True;
tabsheet.PageControl := pagecontrol;
tabsheet.InsertControl(webbrowser);
webbrowser.Align := alclient;
webbrowser.OnCommandStateChange := WebBrowserCommandStateChange;
webbrowser.OnDownloadComplete := webbrowserdownloadcomplete;
webbrowser.OnDocumentComplete := webbrowserDocumentComplete;
webbrowser.OnBeforeNavigate2 := WebBrowserBeforeNavigate2;
webbrowser.OnDownloadBegin := WebBrowserDownloadBegin;
webbrowser.OnNewWindow2 := webbrowserNewWindow2;
webbrowser.OnTitleChange := webbrowserTitleChange;
// add windowmenu
dxbarbutton := TdxBarButton.Create(Self);
dxbarbutton.Caption := '新页面';
dxbarbutton.ButtonStyle := bsChecked;
dxbarbutton.GroupIndex := 12;
dxbarbutton.Tag := tabsheet.Tag;
dxbarbutton.OnClick := windowmenuclick;
newitemlink := WindowMenu.ItemLinks.Add;
newitemlink.Item := dxbarbutton;

//end add windowmenu
if url <> '' then webbrowser.Go(url);
if ShowNewPage.Down then PageControl.ActivePage := tabsheet;
Result := webbrowser;
end
//end newpages
 
接受答案了.
 
后退
顶部