在delphi7中访问冲突ShellExecute

时间:2015-03-24 08:35:30

标签: shell delphi-7

我使用ShellExecute的方式与下面给出的方法相同,要在Delphi7中打开一个txt文件,它会在模块BORdbk70.dll中给出访问冲突。  不确定这是什么问题?我在使用列表中添加了ShellApi

//sAddr := 'www.google.com'; 
Above line does not gives any error but also not redirect to browser and 
  ShellExecute returns result as "5 = Windows 95 only: The operating system denied access to the specified file"

sAddr := 'c:\text\info.txt';
res := ShellExecute(Handle, nil, PChar(sAddr), nil, nil, SW_SHOW);
showmessage(inttostr(res));

2 个答案:

答案 0 :(得分:0)

我为你写的这个例子,工作得很好(没有错误)。我在Windows 8.1上使用Delphi7进行了测试

您必须知道在操作系统中打开* .txt文件的默认应用程序是什么。该应用程序将尝试打开您的文件。在我的* .txt系统默认应用程序是Notepad ++,这个例子在Notepad ++中打开了文件info.txt

完整源码(pas)代码:

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellApi;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  sAddr : String;
  res : Integer;
begin
  sAddr := 'c:\text\info.txt';
  res := ShellExecute(Handle, 'open', PChar(sAddr), nil, nil, SW_SHOW);
  showmessage(inttostr(res));
end;
end.

此示例适用于管理员和普通用户权限。

答案 1 :(得分:0)

var
file:string;
exe_start_map:string;
 begin
  exe_start_map:=(ExtractFileDir(Application.ExeName));
  file:=exe_start_map+'\samplefile.txt';
  ShellExecute(handle,'open',pchar(file),'','',SW_SHOWnormal);
 end;

您必须在使用列表中添加ShellApi