ShellExection 的导出函数到 DLL delphi
Export function of ShellExection to DLL delphi
如何将 ExecuteFile 函数从 ShellExecute 导出到 DLL。如果我通过 DLL 调用它不起作用。但是,如果我在项目中直接使用 ShellExecution,它就可以工作
procedure ExecuteFile(FileName:WideString);stdcall;
begin
ShellExecute(0,nil,PChar(FileName),nil,nil,SW_NORMAL);
end;
procedure ExecuteFile(FileName:WideString);stdcall; external 'my.dll';
您需要两个单独的项目,一个用于 DLL 本身,一个用于使用 DLL 的项目。
在DLL工程中,你使用exports
,eg:
library my;
uses
Shellapi;
{$R *.res}
procedure ExecuteFile(FileName: WideString); stdcall;
begin
ShellExecuteW(0, nil, PWideChar(FileName), nil, nil, SW_NORMAL);
end;
exports
ExecuteFile;
begin
end.
然后,在消费项目中,使用 external
声明从 DLL 导入函数,例如:
procedure ExecuteFile(FileName: WideString); stdcall; external 'my.dll';
然后项目可以像调用任何其他函数一样调用ExecuteFile()
,例如:
ExecuteFile('filename');
只要确保导出的 DLL 是:
位于 OS's search path 的某处,最好与使用应用程序位于同一文件夹中。
编译为使用与消费项目相同的位数(32 位或 64 位)。
否则无法正确加载。
如何将 ExecuteFile 函数从 ShellExecute 导出到 DLL。如果我通过 DLL 调用它不起作用。但是,如果我在项目中直接使用 ShellExecution,它就可以工作
procedure ExecuteFile(FileName:WideString);stdcall;
begin
ShellExecute(0,nil,PChar(FileName),nil,nil,SW_NORMAL);
end;
procedure ExecuteFile(FileName:WideString);stdcall; external 'my.dll';
您需要两个单独的项目,一个用于 DLL 本身,一个用于使用 DLL 的项目。
在DLL工程中,你使用exports
,eg:
library my;
uses
Shellapi;
{$R *.res}
procedure ExecuteFile(FileName: WideString); stdcall;
begin
ShellExecuteW(0, nil, PWideChar(FileName), nil, nil, SW_NORMAL);
end;
exports
ExecuteFile;
begin
end.
然后,在消费项目中,使用 external
声明从 DLL 导入函数,例如:
procedure ExecuteFile(FileName: WideString); stdcall; external 'my.dll';
然后项目可以像调用任何其他函数一样调用ExecuteFile()
,例如:
ExecuteFile('filename');
只要确保导出的 DLL 是:
位于 OS's search path 的某处,最好与使用应用程序位于同一文件夹中。
编译为使用与消费项目相同的位数(32 位或 64 位)。
否则无法正确加载。