请帮我看一下,为什么总出错.(50分)

  • 主题发起人 主题发起人 lovesun
  • 开始时间 开始时间
L

lovesun

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
const RSP_SIMPLE_SERVICE=1;
var
myproc:TFarProc;
handle:THandle;
i:dword;
begin
handle:=LoadLibrary('KERNEL32.DLL');
myProc:=GetProcAddress(handle,'RegisterServiceProcess');
myProc(GetCurrentProcessID,RSP_SIMPLE_SERVICE);
form1.hide;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
const RSP_SIMPLE_SERVICE=1;
var
myproc:TFarProc;
handle:THandle;
i:dword;
begin
handle:=LoadLibrary('KERNEL32.DLL');
myProc:=GetProcAddress(handle,'RegisterServiceProcess');
myProc(GetCurrentProcessID,RSP_SIMPLE_SERVICE);//出错的应该是这一行,函数的调用不对
form1.hide;
end;
 
加上@也不行.加上@后提示left side cann't be assigned to
如果不加@,提示missing operator or semicolon
 
查一查RegisterServiceProcess的调用方法
missing operator or semicolon表示参数不对或表达不对
 
那位高手帮我看看.
 
我也搞不明白,不知道下面的RegisterServiceProcess原代码能不能帮你
#include <kernel9x.h>

BOOL WINAPI RegisterServiceProcess( DWORD dwProcessID, BOOL fRegister )
{
HMODULE hModule = GetModuleHandle( "KERNEL32" );
BOOL fSuccess = FALSE;

if ( hModule )
{
typedef BOOL (WINAPI *RegisterServiceProcess_PROC)( DWORD, BOOL );

RegisterServiceProcess_PROC lpfn = (RegisterServiceProcess_PROC)GetProcAddress( hModule, "RegisterServiceProcess" );

if ( lpfn )
fSuccess = lpfn( dwProcessID, fRegister );
}

return fSuccess;
}
 
你不用load KERNEL32.DLL,这个系统核心库在你程序启动的
时候就自动加载了。
就直接使用API RegisterServiceProcess
 
在delphi5中不支持RegisterServiceProcess
 
在implementation后加上:
function RegisterServiceProcess(dwprocessid,dwtype:integer):integer;
stdcall; external 'kernel32.dll';
调用:RegisterServiceProcess(GetCurrentProcessID,1);
注意这个API只在Win98中能用,在nt/2000中的kernel32.dll中根本没这
个函数.
 
后退
顶部