DLL初始化研究
DLL部分的编写:
.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码
_临时子程序 () ' 在初始化代码执行完毕后调用测试代码
返回 (0) ' 返回值被忽略。
.子程序 _临时子程序
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
.子程序 初始化, 整数型, 公开, 在DLL中公开函数下调用本命令,对DLL进行初始化处理,返回值需要继续返回给公开函数
.参数 一, 整数型, , 传入DLL中公开接口函数的第一个参数 nCode
.参数 二, 整数型, , 传入DLL中公开接口函数的第二个参数 wParam
.参数 三, 整数型, , 传入DLL中公开接口函数的第三个参数 lParam //DLL中的公开函数是三个参数
返回 (全局注入.DLL初始化 (一, 二, 三, &a, &b))
.子程序 a
热键.注册 (取当前窗口 (), , #Home键, &cl) //对当前运行的窗口注册一个热键,fn+home键触发
.子程序 b
信息框 (“bb”, 0, )
.子程序 cl
信息框 (“nihao”, 0, )
运行程序的编写
.版本 2
.程序集 窗口程序集1
.子程序 _按钮1_被单击
全局注入.安装钩子 (“a.dll”, 取窗口线程ID (取当前窗口 ()))
//取窗口线程ID (取当前窗口 ()) 先取得当前当前窗口的句柄,再根据窗口句柄取得窗口线程,从而把a.dll注入到当前窗口的线程中。
--------------------------------------------------------------------------------------------------------------------------
大致的原理是这样的。
通过 全局注入.安装钩子 (“a.dll”, 取窗口线程ID (取当前窗口 ())) 把a.dll安装为钩子, a.dll中的(一、二、三)三个参数是用来接收内存中的消息的。系统中的消息会把钩子链表中的钩子都过一遍。经过a.dll这个钩子的时候。把系统中消息赋给a.dll中的三个参数,根据对参数的判断从而决定采取那个回调函数进行处理。前面的公开函数是大钩子,初始和退出函数是大钩子的小钩子.
posted on 2011-12-23 23:07 wanghj_dz 阅读(1582) 评论(0) 编辑 收藏 举报