void CMyDlg::OnTimer(UINT nIDEvent)
{
typedef DWORD (*LPREGISTERSERVICEPROCESS)(DWORD, DWORD);
CDialog::OnTimer(nIDEvent);
if(nIDEvent==0)
{
HINSTANCE hDLL;
LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;
//加载RegisterServiceProcess函数所在的链接库
hDLL = LoadLibrary("KERNEL32");
//得到RegisterServiceProcess函数的地址
lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL, "RegisterServiceProcess");
//执行RegisterServiceProcess函数,在任务列表中显示程序
lpRegisterServiceProcess(GetCurrentProcessId(),0);
//卸载链接库
FreeLibrary(hDLL);
//显示窗口
ShowWindow(SW_SHOW);
}
}
void CMyDlg::OnHide()
{
typedef DWORD (*LPREGISTERSERVICEPROCESS)(DWORD, DWORD);
UpdateData(TRUE);
HINSTANCE hDLL;
LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;
//加载RegisterServiceProcess函数所在的链接库
hDLL = LoadLibrary("KERNEL32");
//得到RegisterServiceProcess函数的地址
lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL, "RegisterServiceProcess");
//执行RegisterServiceProcess函数,在任务列表中隐藏程序
lpRegisterServiceProcess(GetCurrentProcessId(),1);
//卸载链接库
FreeLibrary(hDLL);
//设定定时器
SetTimer(0,m_nSeconds*1000,NULL);
//隐藏程序的同时,隐藏窗口
ShowWindow(SW_HIDE);
}