请问这几行代码的意思
void HideProcess()
{
HINSTANCE hInst = LoadLibrary("KERNEL32.DLL");
if(hInst)
{
typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);
MYFUNC RegisterServiceProcessFun = NULL;
RegisterServiceProcessFun = (MYFUNC)GetProcAddress(hInst, "RegisterServiceProcess");
if(RegisterServiceProcessFun)
{
RegisterServiceProcessFun(GetCurrentProcessId(),1);
}
FreeLibrary(hInst);
}
}
其中MYFUNC和RegisterServiceProcessFun在msdn里都没找到
请逐行解释好么??
问题点数:10、回复次数:4Top
1 楼jiangping_zhu(娜可露露之风之刃)回复于 2001-09-14 16:00:32 得分 0
我也不懂,估计是载入KERNEL32.DLL,并调用dll的输出函数RegisterServiceProcess来将当前进程注册为服务程序。具体参数的含义就不太清楚了。我也想知道,pushTop
2 楼SingleStar(赵云)回复于 2001-09-14 16:03:06 得分 0
??
typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD)
MYFUNC 是自定义数据类型(代表一个函数指针),返回值为DWORD,有两个参数都是DWORD型
MYFUNC RegisterServiceProcessFun = NULL; //RegisterServiceProcessFun定义的函数指针
RegisterServiceProcessFun = (MYFUNC)GetProcAddress(hInst, "RegisterServiceProcess");//取得hInst中RegisterServiceRrocess函数的位置,现在RegisterServiceProcessFun就是RegisterServiceRrocess函数了。
Top
3 楼cctime()回复于 2001-09-14 16:12:07 得分 10
void HideProcess()
{
HINSTANCE hInst = LoadLibrary("KERNEL32.DLL");
//显示载入KERNEL32.DLL动态连接库
if(hInst)
//如果成功
{
typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);
//定义一个函数类型, 注意只是个类型而已
MYFUNC RegisterServiceProcessFun = NULL;
//定义一个函数变量
RegisterServiceProcessFun = (MYFUNC)GetProcAddress
(hInst, "RegisterServiceProcess");
//取得KERNEL32.DLL动态库中的"RegisterServicePrecess"函数, 并将之赋给函数变量
if(RegisterServiceProcessFun)
//如果取得的函数有效
{
RegisterServiceProcessFun(GetCurrentProcessId(),1);
//以当前进程ID和1(表示注册为服务, 0表示相反)作为参数 调用该函数
}
FreeLibrary(hInst);
//释放动态连接库
}
}
//这段程序的作用是:在98下隐藏进程自己, 使进程管理器(ctrl-alt-del)看不见
//如果程序有可视窗口, 窗口并不隐藏
//RegisterServiceProcess函数在msdn能找到, 但是RegisterServiceProcessFun
//就找不到了, 因为它是自定义的变量名, MYFUNC是自定义的函数类型而已
Top
4 楼frog_sea(日系版手机,给你冲绳用)回复于 2001-09-14 16:20:41 得分 0
谢谢cctime()的详细解答,给分了Top




