现学现用 - C++监视热键源代码



和易语言的功能差不多

没用线程和动态数组



int 监视热键(子程序指针 响应事件, /*响应事件(热键标识, 其它...), 事件参数数目不限!如果再次监视热键将响应事件!*/
	整数型 键代码, /*触发事件的基本键, 事件在基本键按下时触发, 负数为放开时触发, 1鼠标左键, 2鼠标右键, 更多查询相关帮助*/
	整数型 功能键状态,  /*1 Alt  2 Ctrl  4 Shift  8 Win 若要两个或以上的状态键, 则把它们的值相加.*/
	整数型 标识  /* 1~100 区分他们  必须填*/
	);//监视一个热键, 当热键被触发时激活响应事件.(成功返回热键标识, 失败返回0).注:必须真实的按键才会触发热键
main()
{

	监视热键(tt /*函数*/, A键/*键代码*/, 1/*功能键状态*/, 1);
	return 0;
}


结构 热键信息
{
	子程序指针 事件子程序;
	整数型 键代码;
	整数型 功能键状态;
	逻辑型 热键执行;
	整数型 标识;
};
int   tt(int a)

{

	MessageBoxA(NULL, "你好a", "对话框(标题)", MB_OK);
	返回 1;
}
#define A键 65


热键信息 监视热键_信息[100];
int 取功能键状态(int 键位);
void 处理热键(int 键代码, int 功能键状态);
void 恢复默认();
void WINAPI 监视热键线程(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime)
{
	整数型 功能键状态;
	int p;
	

	
	
	for (int i = 27; i <= 127; i++)
	{
		p = 测试虚拟键_(i);
	
			功能键状态 = 取功能键状态(i);
			if (p != 0)
			{
				

				处理热键(i, 功能键状态);

			}
	
		
	}		
}
int m_开关;
void 处理热键(int 键代码,int 功能键)
	{

		if (m_开关 = 1)
		{
			m_开关 = 0;
			for (int i = 1; i <= 取数组成员数(监视热键_信息); i++)
			{
				if (监视热键_信息[i].标识 > 0)
				{
					if (监视热键_信息[i].热键执行 == 真 && 键代码 == 监视热键_信息[i].键代码 && 功能键 == 监视热键_信息[i].功能键状态 && 功能键 > 0)
					{
						监视热键_信息[i].热键执行 = 假;
						//调用事件(到整数(监视热键[i].响应事件), 监视热键[i].热键标识);
						MessageBoxA(NULL, "键代码", "对话框(标题)", MB_OK);
					}
					if (键代码 == 监视热键_信息[i].键代码 && 功能键 == 0 && 监视热键_信息[i].热键执行 == 真 && 监视热键_信息[i].功能键状态 == 0)
					{
						监视热键_信息[i].热键执行 = 假;
						子程序指针 响应事件 = 监视热键_信息[i].事件子程序;

						响应事件(2);
					}
				}

				判断循环首(测试虚拟键_(键代码) != 0)
				{
					if (测试虚拟键_(键代码)==0)
					{
						监视热键_信息[i].热键执行 = 真;
					}
				}

			}
		}
		m_开关 = 1;
	}

int 取功能键状态(int 键代码)
	{

		整数型 功能键组合=0;
		if (测试虚拟键_(Alt键) != 0 && 键代码 != Alt键)
		{
			功能键组合 = 1;

		}
		if (测试虚拟键_(Ctrl键) != 0 && 键代码 != Ctrl键)
		{
			功能键组合 = 功能键组合 + 2;
		}
	    
		if (测试虚拟键_(Shift键) != 0 && 键代码 != Shift键)
		{
			功能键组合 = 功能键组合 + 4;
		}	
		
		if (测试虚拟键_(Tab键) != 0 && 键代码 != Tab键)
		{
			功能键组合 = 功能键组合 + 8;
		}	
		if (测试虚拟键_(Win键) != 0 && 键代码 != Win键)
		{
			功能键组合 = 功能键组合 + 16;
		}

		
		返回 功能键组合;

	}

int 监视热键(子程序指针 响应事件, /*响应事件(热键标识, 其它...), 事件参数数目不限!如果再次监视热键将响应事件!*/
	整数型 键代码, /*触发事件的基本键, 事件在基本键按下时触发, 负数为放开时触发, 1鼠标左键, 2鼠标右键, 更多查询相关帮助*/
	整数型 功能键状态,  /*1 Alt  2 Ctrl  4 Shift  8 Win 若要两个或以上的状态键, 则把它们的值相加.*/
	整数型 标识  /* 1~100 区分他们*/
	)//监视一个热键, 当热键被触发时激活响应事件.(成功返回热键标识, 失败返回0).注:必须真实的按键才会触发热键
{
	热键信息 临时热键信息;
	if (键代码 <= 0)
	{
		返回 0;
	}
	
	m_开关 = 1;
	临时热键信息.事件子程序 = 响应事件;
	临时热键信息.键代码 = 键代码;
	临时热键信息.功能键状态 = 功能键状态;
	临时热键信息.标识 = 标识;
	临时热键信息.热键执行 = 真;
	监视热键_信息[标识] = 临时热键信息;
		_创建定时器(0, 16661, 110/*一秒*/, 监视热键线程/*传递回调函数指针*/);

		返回 临时热键信息.标识;


}
差点忘了,中文的问题




#include <stdio.h>
#include <conio.h>
#include<Windows.h>
#include <TlHelp32.h>
#include<tchar.h>


#include<vector>//数组操作
//#define 数组类 vector //数组类<char *>a(10);
#define 成员数 size



#define 长	long

#define 短	short
#define 有符号	signed
#define 无符号	unsigned

typedef int 整数型;
typedef float 小数型;
typedef double 双精度浮点型;
typedef bool 逻辑型;      // C++特有
typedef char 文本型;
typedef wchar_t 宽字符型; // C++特有

//PFunction
typedef int(*子程序指针)(int x); // 函数指针类型,注意返回值和参数列表
typedef int(*PFunction)(int x); // 函数指针类型,注意返回值和参数列表

#define 无符号整数型	UINT


#define 联合	union
#define 自动	auto
#define 无	void
#define 真	true
#define 假	false
#define 若	if
#define 则	else
#define 判断循环首	while

#define 进入	do
#define 循环	for

#define 默认	default
#define 到	goto
#define 返回	return
#define 公开	public
#define 不公开	private
#define 保护	protected
#define 类	class
#define 结构	struct
#define 虚拟	virtual
#define 覆盖	override
#define 运算符	operator
#define 取数组成员数 sizeof
#define 常量	const
#define 静态	static
#define 新建	new
#define 删除	delete
#define 尝试    try
#define 抛出	throw
#define 捕捉	catch
#define 捕获	catch
#define 结束循环 break
#define 判断 switch 
#define 为	case
#define 友元	friend 
#define 枚举型 enum
#define 内联 inline
#define 全局声明 extern
#define 到循环尾 continue


#define 入口 main
#define 使用 using
#define 命名空间 namespace

#define 输出 printf//printf("%d", sizeof(a)); 
#pragma warning(disable:4996)//忽略API被禁用错误
#define 暂停 system//system("pause");


#define 获得键盘字符 getch
#define _判断按键状态 GetAsyncKeyState

#define Ctrl键 17
#define Shift键 16
#define Alt键 18
#define Tab键 9 
#define Win键 91
#define 测试虚拟键_	GetAsyncKeyState

void _创建定时器(int 句柄,
	int id,
	int 定时器周期,
	TIMERPROC 回调函数
	)
{
	(int)
		SetTimer((HWND)句柄, (int)id, (int)定时器周期/*一秒*/, 回调函数/*传递回调函数指针*/);
	
}



#define 取绝对值 abs //fabs()




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值