[問題]
通常我們按下CTRL+ATL+DEL按鍵組合後,可以看到正在啟動並執行程式或者進程,有沒有辦法讓程式從CTRL+ATL+DEL消失掉呢?也就是說讓正在啟動並執行程式對CTRL+ATL+DEL不可見。
[解答]
答案是肯定的,辦法如下:
使用Win32 API 函數RegisterServiceProcess,但是這個API函數的文檔你是很難找到的。這裡我們要用一下彙編。
#include <windows.h>
HINSTANCE hLibrary;
void *regproc;
void CADInit(void);
void HideApp(void);
void ShowApp(void);
void CADClean(void);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
CADInit(); //載入 DLL 並建立一指向它指標
HideApp(); //隱藏程式
//ShowApp(); //顯示程式
//其他處理或調用
CADClean(); //卸載 DLL
return 0; //retrun 0 因為沒有進入訊息迴圈
}
void CADInit(void)
{
//載入 kernel32.dll
hLibrary = LoadLibrary("kernel32.dll");
//擷取函數RegisterServiceProcess的地址
regproc = GetProcAddress(hLibrary, "RegisterServiceProcess");
}
void HideApp(void)
{
//實現程式的隱藏
__asm
{
push 1
push 0
call regproc
}
return;
}
void ShowApp(void)
{
//恢複狀態
__asm
{
push 0
push 0
call regproc
}
return;
}
void CADClean(void)
{
//卸載 DLL
FreeLibrary(hLibrary);
return;
}
本程式在W2K和Win9x測試通過。