我使用下面给出的相同方式使用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));
我为你写的这个例子,工作得很好(没有错误)。我在Windows 8.1上使用Delphi 7进行了测试
您必须知道在操作系统中打开* .txt文件的默认应用程序是什么。该应用程序将尝试打开您的文件。在我的系统* .txt默认应用程序是Notepad ++,此示例在Notepad ++中打开文件info.txt
完整源代码(非)代码:
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.
此示例适用于管理员和普通用户权限。
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