`
Elvis_Wu
  • 浏览: 51408 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

C实现Windows全局钩子

    博客分类:
  • C
阅读更多
KbHook.dll 源代码

#include <windows.h>
#include <stdio.h>

HHOOK g_hkeyboard=NULL;
FILE *fp=NULL;

// 键盘钩子过程
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam) {
	// 将键盘值写入文件中
	fwrite(&wParam, sizeof(char), 1, fp);
	fflush(fp);
	// 把信息传递给下一个钩子过程
	return CallNextHookEx(g_hkeyboard, code, wParam, lParam);
}

// 安装键盘钩子的函数
_declspec(dllexport) void SetKeyboardHook() {
	// 打开文件
	if((fp = fopen("E:\\KbHook.txt", "a")) == NULL) {
		return;
	}
	// 安装键盘钩子
	g_hkeyboard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("KbHook"),0);
}

// 关闭文件
_declspec(dllexport) void CloseFile() {
	if(fp == NULL) {
		return;
	}
	char *str = "\r\n退出程序\r\n";
	fwrite(str, sizeof(char), strlen(str), fp);
	fclose(fp);
}


将KbHook.lib,KbHook.dll复制到要调用的工程下,并在调用工程的“工程-->设置-->Link-->对象/库模块”中添加KbHook.lib。
然后在调用程序中,先进行被调用函数的声明
// 函数声明
_declspec(dllimport) void SetKeyboardHook();
_declspec(dllimport) void CloseFile();


然后向一般函数一样调用即可
// 函数调用
SetKeyboardHook();
CloseFile();

注:开发环境为Visual Studio 6.0


分享到:
评论
1 楼 cloud21 2010-10-20  
为什么我照着写,写不进去,键盘 信息,只有一个退出信息。。

麻烦给与解答。

相关推荐

    用VC_c全局钩子.pdf

    全局钩子在Windows平台上的应用非常广泛,通过使用MFC扩展动态链接库封装全局钩子类,并结合系统任务栏通知区的应用,可以实现更为高效、灵活的消息捕获和处理功能。这对于开发复杂的应用程序具有重要意义。理解全局...

    枚举全局钩子_如何列出当前windows中所有的钩子hook

    在提供的压缩包文件中,`EnumHook.Asm`可能是汇编语言实现的枚举钩子的源代码,`EnumHook.exe`是编译后的可执行文件,`common.inc`可能包含了一些通用的宏定义和常量,`EnumHook.rap`、`EnumHook.Rc`与资源文件相关...

    全局钩子实现键盘监控

    全局钩子(Global Hook)是一种在Windows操作系统中用于拦截系统消息的技术,它可以监听系统中所有线程的特定事件,如键盘输入、鼠标点击等。在本项目“全局钩子实现键盘监控”中,开发者利用这一机制来记录用户的...

    [VB6+C-DLL]全局钩子

    这篇博客文章“[VB6+C-DLL]全局钩子”可能详细介绍了如何使用VB6和C语言混合编程来创建全局钩子。 首先,我们需要理解全局钩子的工作原理。全局钩子允许开发者在所有线程中安装钩子,包括其他应用程序的线程。这种...

    C#全局钩子屏蔽键盘按键Demo

    本项目“C#全局钩子屏蔽键盘按键Demo”就是利用C#编程语言实现的一个实例,能够有效地屏蔽键盘按键以及特定的组合键,如Alt+F4。 1. **C#编程语言**:C#是由微软开发的一种面向对象的编程语言,广泛用于Windows桌面...

    VC全局钩子即系统钩子的例子.rar

    全局钩子和系统钩子是Windows编程中一种重要的技术,主要用来监控系统或特定进程中的事件。在VC++(Visual C++)环境下,我们可以利用Windows API来实现这种功能。本例子将详细介绍如何在C语言中设置全局钩子,并...

    VS2008编写的C键盘鼠标全局钩子程序-带例子

    标题中的“VS2008编写的C键盘鼠标全局钩子程序-带例子”指的是一个使用Visual Studio 2008开发的C语言程序,它实现了全局键盘和鼠标钩子的功能。全局钩子是一种Windows编程技术,允许一个进程监控其他所有进程的键盘...

    c/c++/c#/vb/vb.net全局钩子

    在C/C++、C#、VB/VB.NET等编程语言中,实现全局钩子可以让你的应用程序捕获到整个系统范围内的特定事件,而不仅仅是你自己的应用程序。这种技术在开发调试工具、安全软件、输入法编辑器或监控用户行为的应用程序时...

    c# 全局钩子(使用c++编写的鼠标过程)

    全局钩子是Windows编程中的一种技术,用于监控和拦截系统级事件,比如键盘、鼠标等输入设备的操作。在这个场景中,我们看到标题提到的是“c#全局钩子”,但实现方式是通过C++来编写鼠标过程。这通常涉及到混合编程,...

    阻止全局钩子注入源码

    1. **全局钩子**:全局钩子是Windows API提供的一种机制,通过安装一个钩子函数(Hook Function),可以在系统中任何线程的上下文中运行。常见的全局钩子类型有WH_KEYBOARD_LL(低级键盘钩子)、WH_MOUSE_LL(低级...

    全局按键钢琴音 c#源码 全局钩子

    总结一下,全局按键钢琴音C#源码项目结合了C#编程、Windows全局钩子技术和MIDI音效,创造出一个富有创意的编程环境。通过监听并响应键盘事件,该项目为程序员提供了一种独特的方式来记忆快捷键,同时增加了编程的...

    全局键盘鼠标钩子

    首先,全局钩子是Windows操作系统提供的一种机制,允许应用程序在系统级别捕获特定类型的事件,例如键盘和鼠标输入。通过设置全局钩子,程序可以在任何活动窗口中监控这些事件,而不仅仅是自己的窗口。这对于开发...

    VC++使用dll注入实现全局键盘钩子

    总的来说,VC++使用DLL注入实现全局键盘钩子是一个涉及进程间通信、动态链接库加载以及Windows API调用的复杂过程。理解并熟练掌握这一技术,不仅可以提升编程能力,也有助于深入理解Windows操作系统的工作原理。在...

    全局键盘钩子源码

    在这个场景中,我们关注的是一个使用C++编程语言实现的全局键盘钩子源码项目,它能够悄无声息地运行,不在用户界面上显示任何窗口,却能在后台实时监控键盘输入,并将这些输入数据记录在特定的日志文件中。...

    JAVA实现按键精灵效果

    `swt.win32.extension`库为SWT提供了额外的功能,其中包括对Windows API的封装,因此可以通过它来实现全局钩子。 实现过程大致如下: 1. 引入JNA库:首先在项目中引入JNA库,这样Java就可以调用C语言的函数。 2. ...

    用键盘钩子在Windows平台捕获键盘动作VC编程

    本文档详细介绍了如何使用键盘钩子在Windows平台捕获键盘动作,涵盖了键盘钩子的基本概念、系统钩子和DLL钩子的关系、全局钩子的实现以及VC编程的实践。 一、键盘钩子的基本概念 键盘钩子是Windows平台下的一个...

    使用apihook钩子修改Windows界面,使Windows有些奇妙的变化,如给缺省按钮加图标等.zip

    API钩子主要分为三种类型:全局钩子、线程局部钩子和动态链接库(DLL)钩子。在这个项目中,我们可能看到的是DLL钩子的使用,因为它涉及到创建一个动态链接库(Lg3d32.dll),该库包含被钩住的API函数的替换实现。...

    Windows消息处理机制--钩子实例

    如果为 0,则安装的是全局钩子。 2. **释放钩子**:可以通过调用 `UnhookWindowsHookEx()` 函数来卸载钩子。这个函数接受一个参数,即通过 `SetWindowsHookEx()` 返回的钩子句柄。成功卸载钩子后,系统会释放相关...

    vs2010 键盘钩子代码

    在Windows编程中,键盘钩子通常是通过安装一个低级(Low-Level)键盘钩子来实现的。`SetWindowsHookEx`函数是用于安装这种钩子的关键API,它需要提供一个回调函数,该函数将在每次键盘事件发生时被调用。这个回调...

    java鼠标钩子实现

    然而,Java标准库并不直接支持全局鼠标监听,因此要实现鼠标钩子,我们需要依赖于系统级别的钩子。这通常通过反射和JNI(Java Native Interface)来完成,因为它们允许我们与Java虚拟机之外的本地代码交互。一个常见...

Global site tag (gtag.js) - Google Analytics