标题中说:不安全的程序。实际上,不是它不安全,而是我们自己制造的一个不安全的情况(或是气氛),是假的,是化学成分的【DUANG~】。
这里需要一点点(对的,只要一点点)WindowsSDK的知识。
如果你是初学者,可以用这个实例锻炼一下自己。
如果你是大佬,可以观摩观摩。
好吧,你可能在疑惑。因为“不安全的情况”我说的太抽象,那么一起跟我先看一看最终效果吧!
效果
最终效果分两种,一种是感染病毒。



之后主窗体保留
没感染病毒



之后程序正常结束
我的想法
首先,随机生成1或0,赋值给变量。
注册窗口类时,用if语句判断随机生成值决定hIcon和hIconSm(图标)是IDI_APPLICATION(程序图标,正常),还是IDI_ERROR(异常图标,病毒)。
以及hbrBackground(背景)是(HBRUSH)GetStockObject(WHITE_BRUSH) 白底,正常还是(HBRUSH)GetStockObject(BLACK_BRUSH)黑底,被感染
之后,在消息处理函数内判断:
如果窗体创建成功,则报告是否有病毒
(0为假,1为真)
如果在消息是WM_CLOSE的情况下:
变量=1 重新弹出窗口,并提示无法关闭;
变量=2 关闭窗口,并提示你走运了;
光谈理论是不行的,那么,我们现在就开始编码吧!
开始编程
首先,在编基本的东西(WinMain,消息处理,Include)之前,我们先弄一个头文件,用于随机抽是不是病毒。
//Virus.h
#ifndef VIRUS_H
#define VIRUS_H
#include <stdlib.h>
#include <time.h>
int i;
//随机
void random()
{
srand((unsigned int)time(NULL)); //将随机数种子重新赋值
i=rand()%2; //随机取0~RAND_MAX值,并除以2取余,把数值控制在0~1之间,赋值给i
}
基本的东西大家都会,这边就不多说,开始吧!
//WinMain.cpp
#include <Windows.h>
#include <tchar.h> //为了使用TCHAR类型
#include "Virus.h"
/*
* TCHAR类型适用于UNICODE和ASCII两种编码
* 两种编码的不同自行百度
*/
HINSTANCE hInstanceTemp; //为了存储实例句柄,以后重新弹出窗口要用
LRESULT CALLBACK WinMessageProc(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam

最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



