C++Windows-SDK实战:写一个“不安全的程序”

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

效果

最终效果分两种,一种是感染病毒

打开后

主窗体
点击右上角关闭键后
之后主窗体保留

没感染病毒

打开后
主窗体
点击关闭后
之后程序正常结束

我的想法

首先,随机生成1或0,赋值给变量。

注册窗口类时,用if语句判断随机生成值决定hIconhIconSm(图标)是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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值