关于打开网址在新窗口(100分)

  • 主题发起人 主题发起人 运通
  • 开始时间 开始时间

运通

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的SHELLEXE(),但是不能实现在新窗口打开,我看了API的帮助,好象不能实现
这种功能。
我有一个别人的代码,可以实现,不过如果别人机器上默认的HTML打开不是用IE,或者
S的话,他也办不到。(因为我看他的代码,就是使用这两种的)
现在我想找到有没有更好的方法,能够有一个方法,可以控制打开网址是在新窗口或是
同一窗口。
对于DDE,有没有人给我解释一下,DDE到底是什么东西?
 
用默认得浏览器打开网页:
ShellExecute(handle, 'open', 'http://www.163.com', nil, nil, SW_MAXIMIZE);
 
就是用上边的方法,不过打开多次,都是在一个在IE现有的最后一个打开窗口打开的。
 
用 shellexecute , 使用 explore 的完整名称打开
try:
ShellExecute(handle, 'open', 'IEXPLORE.EXE', 'http://www.163.com', nil, SW_MAXIMIZE);

我以前做过,现在没空试了,大概就是这样
 
我试了,上面的没问题。

dde是ms老的一种数据交换规范,包含一队API,ole 1就是建立在这种数据交换的基础上建立的。
后来,这中方法速度慢,缺点多,被com技术所取代。
在小范围内进程间通讯仍可以使用,
 
在USE放入ShellAPI后,使用下面的例子,这是我经常用的,十分有效,看看吧
链接的地址是我的主页地址,欢迎来访,有你需要的东西
ShellExecute(handle,nil,pchar('http://xiaoyi26.y365.com'),
nil,nil,sw_shownormal);
关于DDE我给你简单说一下你就会明白的:
DDE英文全称(Dynamic Data Exchange)
中文全称:动态数据交换
你知道的,在Windows中有一个特性:剪贴板的应用,就是我们可以把一个程序中的图片
等数据复制到剪贴板中,再在另一个程序中粘贴下来,这是Windows的一种人工的(需要
人来选取数据)的数据交换方式,Windows还有一种更为自动化的数据传递方式:DDE
(动态数据交换)。通过DDE方式传递数据的应用程序,可在数据来源变动时立即反应到
应用程序中,而不必等程序员下指令才取得最新的数据。

 
最简单的办法就是找到IEXPLORE.EXE的路径,然后就执行 path/IEXPLORE.EXE www.xxx.com
 
To xiao.lit:
不用IE的全路径吗?我试试。
To 小乙:
问题是它不能新建一个IE窗口打开地址。
 
给你看看ShellExecute函数在ShellAPI.PAS中的定义吧:
funciton ShellExecute(hWnd:HWND;Operation,FileName,Parameters,
Directory:PChar;ShowCmd:Integer):HINST;stdcall;
各个参数意义分别为:
hWnd:父窗口的窗口句柄;
Operation:指向要执行的指定操作的字串的指针,有效的为“打开”
和“打印”;
FileName:指乡文件名的字串的指针;
Parameters:指向指定可执行文件参数字串的指针;
Directory:指乡指定的缺省目录;
ShhowCmd:指定当应用程序被打开时如何显示;
例子:
ShellExecute(handle,nil,pchar('http://xiaoyi26.y365.com'),
nil,nil,sw_shownormal);
这行代码将打开我的网站,如果你想打开指定网站的指定页,给出她的完整路径即可,
如http://xiaoyi26.y365.com/beifen01.htm等。
你说的建立新窗口,我还没有试过,但我想下面的东西会对你有所启示:
{如果没有用的话,给点网费吧:)就当我练打字啦!}
//首先需要你在FORM上放置一个
Menu控件,编辑它,加入“浏览网页”项,然后准备加入代码;
这是一个帮助选单,当访问出错时,可以在其中打开不同的页,这需要对
ShellExcaute()做一些处理:
procedure ExploreWeb(handle:HWND;page:PChar);
var
Returnvalue:integer;
begin
ReturnValue:=ShellExecute(handle,'open',page,nil,nil,SW_SHOWNORMAL);
if Returnvalue<=32 then
case Returnvalue of
0:MessageBox(handle,'错误:内存不足','Error ExploreWeb',0);
ERROR_FILE_NOT_FOUND:MessageBox(handle,'错误:没有找到文件',
'Error ExploreWeb',0);//两种错误信息
else
MessageBox(handle,PChar('错误号:‘+IntToStr(Seturnvalue)+'在ShellExecute中')
,'Error ExploreWeb',0)
end
end;
然后,在帮助选单的“浏览网页”的OnClick事件中家如代码:
procedure TAppForm.MyWebHelpMenhuClick(Sender:TObject);
begin
ExploreWeb(handle,'http://www.myweb.de/help.htm');
end;
 
多人接受答案了。
 
后退
顶部