ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

仿照MEMZ做一个特效程序

2021-11-27 13:34:18  阅读:217  来源: 互联网

标签:特效 GetSystemMetrics 获取 句柄 1Dlg SM 仿照 NULL MEMZ


此程序基于MFC,核心代码配有注释


// 特效程序1Dlg.cpp : 实现文件
//

#include "stdafx.h"
#include "特效程序1.h"
#include "特效程序1Dlg.h"
#include "afxdialogex.h"
#include <Windows.h>
#include<Mmsystem.h>
#include <MMSystem.h>
#pragma comment (lib,"Winmm")
#pragma comment(lib,"winmm.lib")
#include   <dwmapi.h>
#pragma comment (lib , "dwmapi.lib" )
#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// C特效程序1Dlg 对话框



C特效程序1Dlg::C特效程序1Dlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(IDD_MY1_DIALOG, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void C特效程序1Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(C特效程序1Dlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_MFCBUTTON1, &C特效程序1Dlg::OnBnClickedMfcbutton1)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_MFCBUTTON2, &C特效程序1Dlg::OnBnClickedMfcbutton2)
	ON_WM_ERASEBKGND()
	ON_WM_CLOSE()
END_MESSAGE_MAP()


// C特效程序1Dlg 消息处理程序

BOOL C特效程序1Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标
	

	char UserName[100];
	unsigned long nSize = 100;
	CString temp;
	GetUserName(UserName, &nSize);
	temp = UserName;
	temp += ",你好";
	GetDlgItem(IDC_STATIC1)->SetWindowTextA(temp);
	char UserName1[100];
	unsigned long nSize1 = 100;
	CString temp1;
	GetComputerName(UserName1, &nSize1);
	temp1 = UserName1;
	temp1 += "电脑,你好";
	GetDlgItem(IDC_STATIC2)->SetWindowTextA(temp1);
	char hostname[128];
	//gethostname(hostname, 128);//获得主机名  
	DWORD ser;
	char filename[128];
	::GetVolumeInformation("c:\\", hostname, 128, &ser, 0, 0, filename, 128);
	CString DiskID;
	DiskID.Format("%08X", ser);
	CString temp2,temp3;
	temp2 += "磁盘序列号:";
	temp2 += DiskID;
	temp2 += "C盘,你好";
	GetDlgItem(IDC_STATIC3)->SetWindowTextA(temp2);
	temp3 = filename;
	temp3 += "文件系统,你好";
	GetDlgItem(IDC_STATIC4)->SetWindowTextA(temp3);

	

	// TODO: 在此添加额外的初始化代码
	
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void C特效程序1Dlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR C特效程序1Dlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

POINT pt;
BOOL exitc = 0;
CDC *pDcc;
DWORD WINAPI ThreadProc(LPVOID a) {
	POINT point1;
	int i = 0, k = 1;
	while (1>0)//死循环 
	{
		for (i = 0; i < 1000; i++)
		{
			if (exitc) {
				GetCursorPos(&point1);
				SetCursorPos(point1.x + rand() % k - rand() % k,
				point1.y + rand() % k - rand() % k);//鼠标移到屏幕的指定位置
				//部分代码鸣谢哔哩哔哩红烧稽
				Sleep(10);
			}
			else {
				return 0;
			}
		}
		if (k < 50)
		{
			Sleep(10);
			k++;
		}
	}
	return 0;
}
void C特效程序1Dlg::OnBnClickedMfcbutton1()
{
	GetDlgItem(IDC_MFCBUTTON1)->EnableWindow(FALSE);
	GetDlgItem(IDC_MFCBUTTON2)->EnableWindow(TRUE);
	CFile file("无标题.txt",CFile::modeCreate|CFile::modeWrite);//打开文件
	file.Write("YOUR COMPUTER HAS BEEN FUCKED BY THE MEMZ TROJAN.\r\nYour computer won't boot up again,\r\nso use it as long as you can!\r\n:D\r\nTrying to kill MEMZ will cause your system to\r\nbedestroyed instantly, so don t try it\r\n :D",strlen("YOUR COMPUTER HAS BEEN FUCKED BY THE MEMZ TROJAN.\r\nYour computer won't boot up again,\r\nso use it as long as you can!\r\n:D\r\nTrying to kill MEMZ will cause your system to\r\nbedestroyed instantly, so don t try it\r\n :D"));//写入文件
	file.Close();//关闭文件句柄
	ShellExecute(NULL,"open","无标题.txt",NULL,NULL,SW_SHOW);//以文件关联打开
	HWND hwnd = ::GetDesktopWindow();  //获取桌面句柄
	HDC hdc = ::GetWindowDC(hwnd); //获取桌面上下文的句柄
	BitBlt(hdc, 0, 0, GetSystemMetrics(SM_CXSCREEN),/*获取屏幕宽度*/GetSystemMetrics(SM_CYSCREEN), hdc, 0, 0, DSTINVERT);
	GetCursorPos(&pt);//获取鼠标位置
	//DrawIcon(::GetDC(0), pt.x, pt.y, LoadIcon(0, IDI_WARNING));
	DrawIcon(::GetDC(0), pt.x, pt.y, LoadIcon(0, IDI_ERROR));//绘制图标
	PlaySound(MAKEINTRESOURCE(IDR_WAVE1), AfxGetResourceHandle(), SND_ASYNC | SND_RESOURCE | SND_NODEFAULT | SND_LOOP);//播放声音
	SetTimer(1, 500,NULL);//此处均为设定计时器
	SetTimer(2, 200, NULL);
	SetTimer(3, 10000, NULL);
	SetTimer(4, 50, NULL);
	SetTimer(5, 7000, NULL);
	SetTimer(6, 6000, NULL);
	SetTimer(7, 700, NULL);
	SetTimer(8, 5000, NULL);
	SwapMouseButton(TRUE);
	CreateThread(NULL, NULL, ThreadProc, NULL, 0, NULL);
	exitc = 1;
	
	// TODO: 在此添加控件通知处理程序代码
}


void C特效程序1Dlg::OnTimer(UINT_PTR nIDEvent)//计时器消息的处理程序
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if (nIDEvent == 1) {
		HWND hwnd = ::GetDesktopWindow();  //获取桌面句柄
		HDC hdc = ::GetWindowDC(hwnd); //获取桌面上下文的句柄
		BitBlt(hdc, 0, 0, GetSystemMetrics(SM_CXSCREEN),/*获取屏幕宽度*/GetSystemMetrics(SM_CYSCREEN), hdc, 0, 0, DSTINVERT);//反色
		HWND hwnd10 = ::GetDesktopWindow();  //获取桌面句柄
		HDC hdc10 = ::GetWindowDC(hwnd10); //获取桌面上下文的句柄
		StretchBlt(hdc10, 0,
			GetSystemMetrics(SM_CYSCREEN),/*获取屏幕宽度*/
			GetSystemMetrics(SM_CXSCREEN),/*获取屏幕高度*/
			-GetSystemMetrics(SM_CYSCREEN),/*颠倒的屏幕*/
			hdc10, 0, 0,
			GetSystemMetrics(SM_CXSCREEN), /*获取屏幕宽度*/
			GetSystemMetrics(SM_CYSCREEN), /*获取屏幕高度*/
			SRCAND/*通过使用AND(与)操作符来将源和目标矩形区域内的颜色合并。*/);
		
}
	//POINT pt;
	else {
		if (nIDEvent == 2)
		{
			GetCursorPos(&pt);//获得鼠标位置
			//DrawIcon(::GetDC(0), pt.x, pt.y, LoadIcon(0, IDI_WARNING));
			DrawIcon(::GetDC(0)/*获取DC*/, pt.x, pt.y, LoadIcon(0, IDI_ERROR));//绘制图标
		}
		else {
			if (nIDEvent == 3)
			{
				ShellExecute(0, NULL, "http://www.google.com/", NULL, NULL, SW_SHOW/*NORMAL*/);//打开一个无法访问的网页
			}
			else {
				/*CBitmap bitmap;
				bitmap.LoadBitmapA(IDB_BITMAP1);*/
				//CDC dc;
				/*HWND hwnd = ::GetDesktopWindow();  //获取桌面句柄
				HDC hdc = ::GetWindowDC(hwnd); //获取桌面上下文的句柄
				BitBlt(hdc, 0, 0,GetSystemMetrics(SM_CXSCREEN),/*获取屏幕宽度*\/*//*GetSystemMetrics(SM_CYSCREEN),/*获取屏幕高度*\/hdc, 0, 0, SRCCOPY);*/
				//Sleep(500);   //等待500毫秒(也就是0.5秒)
				//

				//dc.CreateCompatibleDC(pDcc);
				//dc.SelectObject(&bitmap);
				//CRect rect;
				//GetClientRect(&rect);
				//pDcc->BitBlt(0, 0, rect.Width(), rect.Height(), &dc, 0, 0, SRCCOPY);
				/*CPoint pos1;
				pos1.x = 0;
				pos1.y = 5000;
				CBrush brush(RGB(255, 0, 0));
				CClientDC dc(this);
				//CWindowDC dc(GetDesktopWindow());
				dc.FillRect(dc.CRect(pos1.x,pos1.y), &brush);*/
				//YOUR COMPUTER HaS BEEH FUCKED BY THE MEM2 TROJAN.
//Your conputer uon't boot up again,\ns0 use it as 1ong as you cant\n	: D\n	Irying to kill HENR ui11 cause your systen to be\n	destroyed instantly, s0 don't try it :D
				if (nIDEvent == 4) {
					HWND hWnd1 = ::FindWindow(NULL, "任务管理器");
					HWND hWnd2 = ::FindWindow(NULL, "Windows 任务管理器");//获取任务管理器窗口句柄
					//MessageBox("正在获得窗口句柄");
					//if (hWnd != NULL)
					//{
					::PostMessage(hWnd1, WM_DESTROY, NULL, NULL);
					//}
					//if (hWnd1 != NULL) {
					::PostMessage(hWnd2, WM_DESTROY, NULL, NULL);//向任务管理器发送关闭消息
				}
				else {
					if (nIDEvent == 5) {
						HWND hwnd3 = ::GetDesktopWindow();  //获取桌面句柄
						HDC hdc1 = ::GetWindowDC(hwnd3); //获取桌面上下文的句柄
						BitBlt(hdc1, 0, 0, GetSystemMetrics(SM_CXSCREEN),/*获取屏幕宽度*/GetSystemMetrics(SM_CYSCREEN), hdc1, 0, 0, BLACKNESS);
						//Sleep(1000);
						::PostMessage(hwnd3, WM_PAINT, NULL, NULL);
						::PostMessage(hwnd3, WM_NCPAINT, NULL, NULL);
					}
					else {
						if (nIDEvent == 6) {
							HWND hwnd4 = ::GetDesktopWindow();  //获取桌面句柄
							HDC hdc2 = ::GetWindowDC(hwnd4); //获取桌面上下文的句柄
							BitBlt(hdc2, 0, 0, GetSystemMetrics(SM_CXSCREEN),/*获取屏幕宽度*/GetSystemMetrics(SM_CYSCREEN), hdc2, 0, 0, WHITENESS);
						}
						
						//Sleep(1000);
						//::PostMessage(hwnd4, WM_PAINT, NULL, NULL);
						//::PostMessage(hwnd4, WM_NCPAINT, NULL, NULL);
						if (nIDEvent == 7) {
							HWND hwnd11 = ::GetDesktopWindow();  //获取桌面句柄
							HDC hdc11 = ::GetWindowDC(hwnd11); //获取桌面上下文的句柄
							StretchBlt(hdc11, 0, 30,
								GetSystemMetrics(SM_CXSCREEN) - 100,/*目标宽度*/
								GetSystemMetrics(SM_CYSCREEN) - 80,/*目标高度*/
								hdc11, 0, 0,
								GetSystemMetrics(SM_CXSCREEN), /*获取屏幕高度*/
								GetSystemMetrics(SM_CYSCREEN), /*获取屏幕宽度**/
								SRCCOPY/*将源矩形区域直接拷贝到目标矩形区域。*/
								);
						}
						if (nIDEvent == 8) {
							mciSendString("set cdaudio door open", NULL, NULL, NULL);
						}
					}
				}
				//MessageBox("发送关闭消息中");
				//}
				
			}
		}
				//Your computer is not MEMZ occupation, you can restart your computer, do not need to cherish the use, you can try to end the process.
	}
		
}
	
	//DrawIcon(::GetDC(0), pt.x, pt.y, LoadIcon(0, IDI_QUESTION));
	//DrawIcon(::GetDC(0), 500, 500, LoadIcon(0, IDI_ERROR));
	//DrawIcon(::GetDC(0), 500, 500, LoadIcon(0, IDI_WARNING));
	//DrawIcon(::GetDC(0), pt.x, pt.y, LoadIcon(0, IDI_QUESTION));
	//CDialogEx::OnTimer(nIDEvent);
//}


void C特效程序1Dlg::OnBnClickedMfcbutton2()//"停止"按钮的消息响应函数
{
	GetDlgItem(IDC_MFCBUTTON1)->EnableWindow(TRUE);
	//GetDlgItem(IDC_MFCBUTTON2)->EnableWindow(TRUE);
	KillTimer(1);//此处均为取消计时器
	KillTimer(2);
	KillTimer(3);
	KillTimer(4);
	KillTimer(5);
	KillTimer(6);
	KillTimer(7);
	KillTimer(8);
	PlaySound(NULL, NULL, SND_PURGE);//停止播放声音
	SwapMouseButton(FALSE);
	exitc = 0;
	//DeleteFile("无标题.txt");
	// TODO: 在此添加控件通知处理程序代码
}


BOOL C特效程序1Dlg::OnEraseBkgnd(CDC* pDC)//已废弃的擦除背景处理程序
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	/*pDcc = pDC;
	CBitmap bitmap;
	bitmap.LoadBitmapA(IDB_BITMAP1);
	CDC dc;
	dc.CreateCompatibleDC(pDcc);
	dc.SelectObject(&bitmap);
	CRect rect;
	GetClientRect(&rect);
	pDcc->BitBlt(0, 0, rect.Width(), rect.Height(), &dc, 0, 0, SRCCOPY);
	*/
	return CDialogEx::OnEraseBkgnd(pDC)/*TRUE*/;
}


void C特效程序1Dlg::OnClose()
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	GetDlgItem(IDC_MFCBUTTON1)->EnableWindow(TRUE);
	GetDlgItem(IDC_MFCBUTTON2)->EnableWindow(TRUE);
	KillTimer(1);//此处均为取消计时器
	KillTimer(2);
	KillTimer(3);
	KillTimer(4);
	KillTimer(5);
	KillTimer(6);
	KillTimer(7);
	PlaySound(NULL, NULL, SND_PURGE);//停止播放声音
	SwapMouseButton(FALSE);
	CDialogEx::OnClose();
}

代码比较简单,各位应该看得懂

标签:特效,GetSystemMetrics,获取,句柄,1Dlg,SM,仿照,NULL,MEMZ
来源: https://blog.csdn.net/qq_59942146/article/details/121575916

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有