关于C++BUILDER中的函数声明(30分)

  • 主题发起人 主题发起人 xaojgu
  • 开始时间 开始时间
X

xaojgu

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个函数在DELPHI中是这样声明的
function RegisterServiceProcess(dwProcessId,dwType:dword):
Integer;stdcall;external 'kernel32.dll'
但是我想在BCB中调用,该如何声明,同样是这个函数,请指教

 
int stdcall RegisterServiceProcess(string dwProcessID,dwType);
 
楼上的兄弟,不对,我试过了,那是一个未公开的函数
 
这是一个WINDOWS API,去查查WINDOWS编程资料应该有的。
 
在C++Builder里要比在Delphi中烦多了,因为这个函数不是公开的,在系统的头文件里没有
它的申明,要我们自己去加载kernel32.dll,然后从里面得到这个函数的地址。

首先为RegisterServiceProcess函数指针定义一个类型:
typedef DWORD (__stdcall *pRegFunction)(DWORD, DWORD);

#define RSP_SIMPLE_SERVICE 1
#define RSP_UNREGISTER_SERVICE 0

HINSTANCE hKernelLib = LoadLibrary("kernel32.dll");//加载dll
if(hKernelLib)
{
pRegFunction RegisterServiceProcess =
(pRegFunction)GetProcAddress(hKernelLib,
"RegisterServiceProcess");
//得到函数指针.....

if(RegisterServiceProcess)
RegisterServiceProcess(GetCurrentProcessId(),
RSP_SIMPLE_SERVICE); //调用函数.....
}

不要忘了FreeLibrary,:)
 
多人接受答案了。
 
后退
顶部