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++假装蓝屏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • win10环境下vscode Linux C++开发代码自动提示配置(基于WSL)

    win10环境下vscode Linux C++开发代码自动提示配置(基于WSL)

    这篇文章主要介绍了win10环境下vscode Linux C++开发代码自动提示配置(基于WSL),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Qt透明无边框窗口的实现示例

    Qt透明无边框窗口的实现示例

    这篇文章主要介绍了Qt透明无边框窗口的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • C语言常见排序算法之交换排序(冒泡排序,快速排序)

    C语言常见排序算法之交换排序(冒泡排序,快速排序)

    这篇文章主要介绍了C语言常见排序算法之交换排序(冒泡排序,快速排序),冒泡排序即Bubble Sort,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排
    2022-07-07
  • QT5实现电子时钟

    QT5实现电子时钟

    这篇文章主要为大家详细介绍了QT5实现电子时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C语言 结构体数组详解及示例代码

    C语言 结构体数组详解及示例代码

    本文主要介绍C语言 结构体数组,这里整理了相关资料及简单示例代码,以便大家学习参考,有兴趣的小伙伴可以看下
    2016-08-08
  • C/C++实现遍历文件夹最全方法总结

    C/C++实现遍历文件夹最全方法总结

    这篇文章主要为大家介绍了C/C++实现遍历文件夹功能的最全方法总结,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-09-09
  • C语言实现输出1000以内的所有完全数

    C语言实现输出1000以内的所有完全数

    这篇文章主要介绍了C语言实现输出1000以内的所有完全数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • C++基础知识总结

    C++基础知识总结

    本文给大家汇总介绍了C++的一些基础知识,不管是对新手还是老鸟都有些帮助,希望大家能够喜欢
    2017-05-05
  • C++实现ETW进行进程变动监控详解

    C++实现ETW进行进程变动监控详解

    ETW提供了一种对用户层应用程序和内核层驱动创建的事件对象的跟踪记录机制。为开发者提供了一套快速、可靠、通用的一系列事件跟踪特性。本文将利用ETW进行进程变动监控,需要的可以参考一下
    2022-07-07
  • 深度解析三个常见的C语言内存函数

    深度解析三个常见的C语言内存函数

    这篇文章主要深度解析了三个常见的C语言内存函数memcpy,memmove,memcmp,所以本文将对memcpy,memmove,memcmp 三个函数进行详解和模拟实现,需要的朋友可以参考下
    2023-07-07

最新评论