谁帮我写个小程序 就是键盘按V他就自动按Z

 我来答
juetforwork
2012-01-31 · 超过19用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:54万
展开全部
这个很简单,vc用键盘hook,要在所有程序通用就用全局钩子写个dll就可以了。。在hook的回调函数里拦截键盘的V按键,然后用KeyEvent函数产生一个Z按键消息就可以。

以前随便写的一部分,参考下,当然功能部分没帮你改,按照我的思路改就可以了
这个是一个将用户按下的任何一个键记录在一个文本文件里
//写dll文件:
#include "stdafx.h"
#include "keyhook.h"

#pragma data_seg("SharedVar")
//DLL输出的全局变量
extern "C" __declspec(dllexport) HHOOK ShellHook=NULL;
extern "C" __declspec(dllexport) HHOOK hHook=NULL;
extern "C" __declspec(dllexport) HHOOK debugHook=NULL;

#pragma data_seg()
// DLL 自用的全局变量
int sign;
bool start=1;
bool start1=1;
bool start2=1;
CFile file;
CString strFullName;
//DLL输出的勾子函数
extern "C" __declspec(dllexport)

LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
/* unsigned char buffer;
if(start)
{
strFullName = AfxGetApp()->m_pszHelpFilePath;
int count=strFullName.GetLength()-strFullName.ReverseFind('\\');
strFullName=strFullName.Left(count);
strFullName+="keyfile.txt";
file.Open(strFullName,CFile::modeReadWrite|CFile::modeCreate);
//file.Close();
start=0;
}
if(lParam&0x80000000) //按一个键会产生两个事件:WM_KEYDOWN和WM_KEYUP,所以去掉一个
{//如果某键按下
buffer=MapVirtualKey(wParam,2);
//a=char(wParam);
file.SeekToEnd();
file.Write(&buffer,sizeof(buffer));
file.Write(" ",1);
sign++;
if(sign>=20)
{
sign=0;
file.Write("\r\n",2);
}
}
file.Close();
file.Open(strFullName,CFile::modeReadWrite);
*/
return CallNextHookEx(NULL, code, wParam,lParam);
}
匿名用户
2012-01-21
展开全部
ewxn
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式