放在system32目录下的自己写的dll,如何嵌入?system32目录名是系统变量取回的。 ( 积分: 50 )

  • 主题发起人 主题发起人 336764
  • 开始时间 开始时间
3

336764

Unregistered / Unconfirmed
GUEST, unregistred user!
放在system32目录下的自己写的dll,如何嵌入?

system32目录名是系统变量取回的。

在声明DLL里边的函数的时候,如何声明system32下的dll? 目录如何写??因为windows/system32本身不是固定的,是通过变量取得的。

谢谢。
 
乱猜猜的给你搜了个函数 GetSystemDirectory 能返回系统目录
UINT GetSystemDirectory(

LPTSTR lpBuffer, // address of buffer for system directory
UINT uSize // size of directory buffer
);
lpBuffer

Points to the buffer to receive the null-terminated string containing the path. This path does not end with a backslash unless the system directory is the root directory. For example, if the system directory is named WINDOWS/SYSTEM on drive C, the path of the system directory retrieved by this function is C:/WINDOWS/SYSTEM.

uSize

Specifies the maximum size of the buffer, in characters. This value should be set to at least MAX_PATH.
专门提System32的没找到
 
取得system32目录能取得,能在声明DLL的时候就使用取得system32的那个目录变量麽?
或者说,
声明dll的时候,dll的文件名使用function 设置的变量文件名来声明。
 
System32是系统搜索路径,你的声明只要是
function Name(Parameters):Result; stdcall; external 'mydll.dll';
就可以了,到时候会在System32下找到他并载入的。
 
获取system32目录名:
function GetSystemDir: TFileName;
var
SysDir: array [0..MAX_PATH-1] of char;
begin
SetString(Result, SysDir, GetSystemDirectory(SysDir, MAX_PATH));
if Result = '' then
raise Exception.Create(SysErrorMessage(GetLastError));
end;
 
问题其实不是取不到system32目录,

是,如何在静态声明DLL的时候, DLL文件能使用 变量,
Function Test: Integer; StdCall; External _sDllName; //_sDllName := 'c:/test/Demo.dll';

有人写上边的声明。

但是,赋值的部分,应该写在那里??? 我写在那里都出错。
 
不用指定路径直接使用就可以了,系统会自己检索所在位置:
_sDllName := 'Demo.dll';

Function Test: Integer; StdCall; External _sDllName; //_sDllName := 'Demo.dll';

实际上你看下windows.pas里也产类似这样声名API的
 
多人接受答案了。
 
后退
顶部