重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
c语言是没法把字符串转换成对应函数的,c语言是结构化语言,程序怎么执行在编译时已经确定,没法像c#之类的托管代码高级语言能够动态绑定或者叫后期绑定。因为托管代码有运行时去选择执行,而c语言编译后的可执行文件为操作系统直接调用了,所以没法动态绑定。
成都创新互联公司是一家专业提供宝兴企业网站建设,专注与网站设计、做网站、H5技术、小程序制作等业务。10年已为宝兴众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
#include "stdafx.h"
#include stdio.h
#include string.h
void replaceChar(char *string, char oldChar, char newChar){
int len = strlen(string);
int i;
for (i = 0; i len; i++){
if (string[i] == oldChar){
string[i] = newChar;
}
}
}
int main(){
char str[] = "test";
char oldChar = 't';
char newChar = 'w';
replaceChar(str, oldChar, newChar);
printf("%s\n", str);
return 0;
}
呵呵,这种情况只能用全局钩子来做,用WH_KEYBOARD类型的键盘钩子就行。在Hook回调函数中修改虚拟键代码就行了~
大概的实现过程在下面讲一下:
先写一个DLL,全局钩子必须放在DLL中才能映射到所有进程的地址空间。
然后先定义回调函数,再定义两个导出函数,用于安装和卸载Hook
这个是回调函数原型,核心部分在这里,注意看哦
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
重点注意wParam,这就是虚拟键代码,你可以判断这的虚拟键代码是否与a的虚拟键代码吻合,如果是,就把他改成b的虚拟键代码,只要该掉这个,你想要的功能就实现了。在函数的最后,别忘了返回CallNextHookEx函数的返回值。
关于Hook机制的详细资料,请看MSDN文档:
(en-us,VS.85).aspx