C++实现假装蓝屏整蛊小程序

 更新时间:2023年06月30日 15:58:25   作者:万能的小裴同学  
因为工作的需要,有时候我们离开时并不想让别人看到我们电脑的内容,所以本文为大家分享了一个基于C++实现的假装蓝屏的小程序,需要的可以参考下

C++假装蓝屏

应为工作的需要,有时候我们离开时并不想让别人看到我们电脑的内容,所以做了个假装蓝屏的小程序

实现代码

#include<Windows.h>
#include<atlimage.h>
#include"resource.h"
int ScreenWidth;
int ScreenHeight;
CImage copy;
HCURSOR hcur;
LRESULT CALLBACK Melter(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
	switch (Msg)
	{
		case WM_CREATE: {
			//system("taskkill explorer.exe");
			SetClassLong(hwnd, GCL_HCURSOR, (long)hcur);
			ShowWindow(hwnd, SW_SHOW);
			SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 100, 100, SWP_NOMOVE | SWP_NOSIZE);
			HDC hdc = GetDC(hwnd);
			//MessageBox(0,"debug", "", 0);
			copy.Save("D:\\11111.jpg");
			::BitBlt(hdc, 0, 0, ScreenWidth, ScreenHeight, copy.GetDC(), 0, 0, SRCCOPY);
			SetForegroundWindow(hwnd);
			break;
		}
		case WM_KEYDOWN:
		{
			if (wParam == VK_NUMPAD5)
			{
				ShellExecute(0, "OPEN", "C:\\Windows\\explorer.exe", "", "D:\\", 0);
				exit(0);
				return 0;
			}
		}
		break;
		case WM_PAINT: {
			MessageBox(0, "", "", 0);
			ValidateRect(hwnd, 0);
			break;
		}
		case WM_CLOSE: {
			return 0;
		}
		case WM_DESTROY: {
			return 0;
		}
		case WM_COMMAND: {
			return 0;
		}
	}
	return DefWindowProc(hwnd, Msg, wParam, lParam);
}
BOOL LoadImageFromResource(CImage*pImage, UINT nResID, LPCTSTR lpTyp)
{
	if (pImage == NULL)
		return false;
	pImage->Destroy();
	HMODULE mod=GetModuleHandle(NULL);
	HRSRC hRsrc = ::FindResource(mod, MAKEINTRESOURCE(nResID), lpTyp);
	if (hRsrc == NULL)return false;
	HGLOBAL hImgData = ::LoadResource(mod, hRsrc);
	if (hImgData == NULL)
	{
		::FreeResource(hImgData);
		return false;
	}
	char* lpVoid =(char*)( ((int)::LockResource(hImgData)));
	LPSTREAM pStream = NULL;
	DWORD dwSize = ::SizeofResource(mod, hRsrc);
	HGLOBAL hNew = ::GlobalAlloc(GHND, dwSize+14);
	LPBYTE lpByte = (LPBYTE)::GlobalLock(hNew);
	char t[14] = { 0x42 ,0x4D ,0x36 ,0xEC ,0x5E ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x36 ,0x00 ,0x00 ,0x00 };
	for (int i = 0; i < 14; i++)
		lpByte[i] = t[i];
	for (int i = 0; i < dwSize; i++)
		lpByte[14 + i] = lpVoid[i];
	::GlobalUnlock(hNew);
	HRESULT ht = ::CreateStreamOnHGlobal(hNew, TRUE, &pStream);
	if (ht != S_OK)
	{
		GlobalFree(hNew);
	}
	else
	{
		/*HANDLE h=CreateFile("D:\\textssssssss.bmp", GENERIC_WRITE, NULL, NULL, CREATE_NEW, FILE_ATTRIBUTE_HIDDEN, 0);
		DWORD dwWrite = 0;
		WriteFile(h, t, 14, &dwWrite, NULL);
		WriteFile(h, lpVoid, dwSize, &dwWrite, NULL);
		CloseHandle(h);*/
		pImage->Load(pStream);
		GlobalFree(hNew);
		if (pImage->IsNull())
		{
			::FreeResource(hImgData);
			MessageBox(0, "失败", "", 0);
			return false;
		}
	}
	::FreeResource(hImgData);
	return true;
}
int WINAPI WinMain(HINSTANCE h1, HINSTANCE h2, LPSTR cmd, int show)
{
	hcur = LoadCursor(h1, MAKEINTRESOURCE(IDC_CURSOR1));
	bool k=LoadImageFromResource(&copy, IDB_BITMAP1, RT_BITMAP);
	if (!k)
	{
		MessageBox(0, "失败", "", 0);
		return 0;
	}
	else
		copy.Save("D:\\11111.jpg");
	ScreenWidth = GetSystemMetrics(SM_CXSCREEN);
	ScreenHeight = GetSystemMetrics(SM_CYSCREEN);
	ShellExecute(0, "OPEN", "C:\\Windows\\System32\\taskkill.exe", "/im explorer.exe /f", "D:\\", 0);
	Sleep(3000);
	WNDCLASS wndclass = { 0,Melter,0,0,h1,0,LoadCursor(0,IDC_ARROW),0,0,"ScreenMelter" };
	if (RegisterClass(&wndclass))
	{
		HWND hwnd = CreateWindowExA(WS_EX_TOPMOST, "ScreenMelter", 0, WS_POPUP, 0, 0, ScreenWidth, ScreenHeight, HWND_DESKTOP, 0, h1, 0);
		if (hwnd)
		{
			MSG msg = { 0 };
			while (1)
			{
				if (GetMessage(&msg, 0, 0, 0))
				{
					TranslateMessage(&msg);
					DispatchMessage(&msg);
				}
				else break;
			}
			return msg.wParam;
		}
	}
}

蓝屏素材

最后用VS制作一个透明的鼠标.cur,就可以假装电脑蓝屏

到此这篇关于C++实现假装蓝屏整蛊小程序的文章就介绍到这了,更多相关C++假装蓝屏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++实现算法两个数字相加详解

    C++实现算法两个数字相加详解

    这篇文章主要介绍了C++实现算法两个数字相加详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • vscode cmake compilers配置路径的实现

    vscode cmake compilers配置路径的实现

    本文主要介绍了vscode cmake compilers配置路径的实现,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • C++浅析类与对象的基础

    C++浅析类与对象的基础

    类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型;变量就是可以变化的量,存储在内存中—个可以拥有在某个范围内的可变存储区域
    2022-05-05
  • C语言循环结构实战之while和for循环基本语法详解

    C语言循环结构实战之while和for循环基本语法详解

    while 循环和 for 循环都是C语言中非常重要的循环结构,它们各有优缺点和适用场景,本文将介绍C语言循环结构实战之while和for循环基本语法,感兴趣的朋友一起看看吧
    2025-05-05
  • C语言函数超详细讲解上篇

    C语言函数超详细讲解上篇

    函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数,函数我们分两篇来讲解,接下来开始第一篇
    2022-04-04
  • C语言学生成绩管理系统课程设计word版

    C语言学生成绩管理系统课程设计word版

    这篇文章主要为大家详细介绍了C语言学生成绩管理课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • C++中String类的常用接口函数总结

    C++中String类的常用接口函数总结

    这篇文章主要介绍了C++中Stirng类的常用接口函数,文中有详细的代码示例供大家参考,对我们学习C++有一定的帮助,感兴趣的同学可以跟着小编一起来学习
    2023-06-06
  • 在C++中测量代码执行时间的两种方法

    在C++中测量代码执行时间的两种方法

    在C++中,编写代码只是第一步,衡量代码的效率同样重要,你如何知道你的 sort 算法比同事写的快?或者你的新功能导致了多少性能下降?你需要一个秒表来精确测量代码的执行时间,本文给大家介绍了在C++中测量代码执行时间的两种方法,需要的朋友可以参考下
    2026-01-01
  • C/C++集合经典数字题总结大全

    C/C++集合经典数字题总结大全

    对于C++初学者,数学问题可以很好地帮助掌握基本语法和逻辑,这篇文章主要介绍了C/C++集合经典数字题总结的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-11-11
  • Qt TCP实现简单通信功能

    Qt TCP实现简单通信功能

    这篇文章主要为大家详细介绍了Qt TCP实现简单通信功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08

最新评论