和易语言的功能差不多
没用线程和动态数组
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()