请教在DELPHI中如何调用C语言的DLL文件
答案:1 悬赏:50
解决时间 2021-01-19 06:16
- 提问者网友:火车头
- 2021-01-18 09:18
请教在DELPHI中如何调用C语言的DLL文件
最佳答案
- 二级知识专家网友:蕴藏春秋
- 2021-01-18 10:29
DELPHI可以调用任何语言写的DLL文件,调用的方法例子代码:
var
psapi: cardinal;
//下面申明DLL中子程序的原型
EnumProcesses: function (lpidProcess, cb, cbNeeded: DWORD): Integer; stdcall;
EnumProcessModules: function (hProcess: THandle; lphModule: HMODULE; cb, lpcbNeeded: DWORD): Integer; stdcall;
GetModuleBaseNameA: function (hProcess: THandle; HMODULE: HMODULE; lpBaseName: PChar; nSize: DWORD): Integer; stdcall;
GetModuleFileNameExA: function (hProcess: THandle; HMODULE: HMODULE; lpFileName: PChar; nSize: DWORD): Integer; stdcall;
begin
//打开PSAPI.DLL文件
psapi:=LoadLibrary('psapi');
if psapi<>0 then
try
//把函数原型与DLL关联
EnumProcesses:=GetProcAddress(psapi,'EnumProcesses');
EnumProcessModules:=GetProcAddress(psapi,'EnumProcessModules');
GetModuleBaseNameA:=GetProcAddress(psapi,'GetModuleBaseNameA');
GetModuleFileNameExA:=GetProcAddress(psapi,'GetModuleFileNameExA');
//执行审核的函数
if (@GetModuleBaseNameA<>nil) and (@GetModuleFileNameExA<>nil) and (@EnumProcessModules<>nil) and (@EnumProcesses<>nil) then
var
psapi: cardinal;
//下面申明DLL中子程序的原型
EnumProcesses: function (lpidProcess, cb, cbNeeded: DWORD): Integer; stdcall;
EnumProcessModules: function (hProcess: THandle; lphModule: HMODULE; cb, lpcbNeeded: DWORD): Integer; stdcall;
GetModuleBaseNameA: function (hProcess: THandle; HMODULE: HMODULE; lpBaseName: PChar; nSize: DWORD): Integer; stdcall;
GetModuleFileNameExA: function (hProcess: THandle; HMODULE: HMODULE; lpFileName: PChar; nSize: DWORD): Integer; stdcall;
begin
//打开PSAPI.DLL文件
psapi:=LoadLibrary('psapi');
if psapi<>0 then
try
//把函数原型与DLL关联
EnumProcesses:=GetProcAddress(psapi,'EnumProcesses');
EnumProcessModules:=GetProcAddress(psapi,'EnumProcessModules');
GetModuleBaseNameA:=GetProcAddress(psapi,'GetModuleBaseNameA');
GetModuleFileNameExA:=GetProcAddress(psapi,'GetModuleFileNameExA');
//执行审核的函数
if (@GetModuleBaseNameA<>nil) and (@GetModuleFileNameExA<>nil) and (@EnumProcessModules<>nil) and (@EnumProcesses<>nil) then
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息