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  阅读(1581)  评论(0编辑  收藏  举报

导航