本程序是依据原书中第五章随机矩形修改,方向是制作杀不死的全屏随即矩形
程序增加功能:自动检测进程管理器,并杀死。
while(TRUE)
{
//我是杀死进程管理器的代码
HANDLE hSnapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 thePE;
thePE.dwSize = sizeof(PROCESSENTRY32);
//遍历正在运行的第一个系统进程
BOOL Status = Process32First(hSnapShot,&thePE);
BOOL bHaveFlag = FALSE;
DWORD ProcessID = 0;
while(Status)
{
//遍历正在运行的下一个系统进程
Status = Process32Next(hSnapShot,&thePE);
//找到相应的进程 *.exe
if(0 == _tcscmp(thePE.szExeFile, _T("taskmgr.exe")))
{
bHaveFlag = TRUE;
ProcessID = thePE.th32ProcessID;
//结束指定的进程 ProcessID
TerminateProcess(OpenProcess (PROCESS_TERMINATE||PROCESS_QUERY_INFORMATION,false,ProcessID),0);
}
}
CloseHandle(hSnapShot);
/
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if(msg.message==WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
DrawRectangle(hwnd);
}
程序修改功能:创建窗口是修改参数,改为创建全屏窗口,并始终显示在屏幕最上方。
hwnd=CreateWindow(szAppName,TEXT("Random Rectangles"),WS_POPUP,0,0,
::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN),NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
SetWindowPos( hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE||SWP_NOSIZE);
程序增加功能:屏蔽关闭,最小化,还原,最大化等消息。
case WM_SYSCOMMAND:
return 0;
程序一旦运行,就很难关闭,请小心修改。
关闭方法:
我是使用运行中的
taskkill /im 程序进程名。
可能会有人有疑问,该程序一直在屏幕最上方,怎么能在运行中输入命令呢?
虽然该程序一直在屏幕最上方,但是焦点不一定是在该程序上。
欢迎大家多提意见。