delphi中启动IE调用网址的问题 (100分)

  • 主题发起人 主题发起人 rechar
  • 开始时间 开始时间
R

rechar

Unregistered / Unconfirmed
GUEST, unregistred user!
调用ShellExecute(0,'Open',pchar('http://enterprise/ftp/3/葵花宝典11].0.chm'),nil,nil,0);
时系统找不到此文件,因为里面有不能识别的中文字符。
如果用 nmurl进行encode 在放入也不能识别,说是找不到此文件:
NMURL_server.InputString := dxDBEdit_serverurl.Text;
ls_url := NMURL_server.Encode;
shellexecute(0,'open',pchar(ls_url),'',pchar(ExtractFilePath(ParamStr(0))),sw_show)
所以很让人头疼呀。
 
访问的通用过程:
procedure ExploerWeb(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: Out of Memory','Error ExploreWeb',0);
//内存不足
ERROR_FILE_NOT_FOUND: MessageBox(handle,'Error:File not Found','Error ExploreWeb',0);
//没有找到该文件
ERROR_PATH_NOT_FOUND: MessageBox(handle,'Error:Directory not','Error ExploreWeb',0);
//路径不对
ERROR_BAD_FORMAT : MessageBox(handle,'Fehler:Wrong format in EXE','Error ExploreWeb',0);
//文件格式不对
Else MessageBox (handle,PChar('Error nr:'+IntToStr(Returnvalue)+' in ShellExecute'),'Error ExploreWeb',0) // 其 他 错 误
//还有其他错误处理,请参考帮助ShellExcute 的ReturnValues说明。
end //case
end;

调用方法:
ExploerWeb(handle,PChar(WebPage.caption));
 
你的方法我早试过了,可是现在要显示带有中文字符的网址,光提示不能找到,用处不大,不过还是比较感谢。请各位高手继续指点。
procedure Tfm_ddi_main.BitBtn_serveruseClick(Sender: TObject);
var
ls_url : string;
begin
inherited;
NMURL_server.InputString := dxDBEdit_serverurl.Text;
//ls_url := dxDBEdit_serverurl.Text;
ls_url := NMURL_server.Encode;
if trim(dxDBEdit_serverurl.Text) = '' then exit;
case shellexecute(0,'open',pchar(ls_url),'',pchar(ExtractFilePath(ParamStr(0))),sw_show) of
0: showmessage('The operating system is out of memory or resources.');
ERROR_FILE_NOT_FOUND: showmessage('文件未找到!');
ERROR_PATH_NOT_FOUND: showmessage('文件路径未找到!');
ERROR_BAD_FORMAT: showmessage('EXE文件不是标准的WIN32应用程序!');
SE_ERR_ACCESSDENIED: showmessage('系统禁止访问!');
SE_ERR_ASSOCINCOMPLETE: showmessage('The filename association is incomplete or invalid.');
SE_ERR_DDEBUSY: showmessage('其他DDE正在运行,不能完成操作!');
SE_ERR_DDEFAIL: showmessage('DDE通讯失败!');
SE_ERR_DDETIMEOUT: showmessage('DDE通讯超时!');
SE_ERR_DLLNOTFOUND: showmessage('动态联接库没找到!');

SE_ERR_NOASSOC:
begin
shellexecute(GetDesktopWindow,NIL,'RUNDLL32.EXE',pchar('shell32.dll,OpenAs_RunDLL '+ls_url),pchar(ExtractFilePath(ParamStr(0))),sw_show);
end;
SE_ERR_OOM : showmessage('There was not enough memory to completethe operation.');
SE_ERR_SHARE: showmessage('A sharing violation occurred.');
end;
end;
 
后退
顶部