主页 PC知识 网管技术 黑客帝国 安全技术 开放系统 程序设计 搜索 技术论坛

 

相关联接
 
RHU本级分类

编程语言
程序代码
WIN/*NIX编程
其他类别
JAVA专区

 
RHU阅读排行
·在LinuxShell程序中进行身份验证
·截获流经本机网卡的IP数据包
·枚举进程和杀进程的小工具
·从蓝屏最小的asp木马来看C/S木马的编写
·用tc+iptables+HTB解决ADSL宽带速度瓶颈技术
·通过 Visual C++ 的编程模型和编译器优化增强您的应用程序
·Windows管道技术简述
·利用键盘钩子开发按键发音程序
·一个Linux病毒原型分析
·XP终端服务远程登录批处理

 
 
RHU最新文章
·Webshell下破解计算机管理员密码
·打造XP下可运行的微型PE文件(292字节)
·Win32平台下的Rootkit习作
·Linux如何在系统运行过程中修改内核参数
·Shell编程:Linux系统环境程序设计之路
·汇编创建简单的窗口
·深入浅出Win32多线程程序设计之线程控制
·VC实现Win2000下屏蔽Ctrl+Alt+Del键
·隐藏任意进程 目录/文件 注册表 端口
·Windows 的多线程程序设计初步 

 
 
RHU相关搜索









 
 
RHU广而告之

 
 
>您的位置:首页 -> 程序设计 -> WIN/*NIX编程
DLL绝对新手--开始写你的第一个DLL

作者:RHU-TAC编辑员 来自:RHU网络采集 时间:2005-7-1 双击滚屏 收藏本页 字体:


点击 查看RHU2004全年文章


DLL是Windows的基石。AP没有搭配的DLL,很难玩的起来。小弟对DLL的涉猎有限,不敢写较深度的主题。只是将心得经验以一个DLL绝对新手要如何开始玩的角度来写。

  Delphi有个package,可以说就是Delphi版的DLL。初接触时觉得真是神奇的不得了,久了以后,发现它有些问题,就不怎么玩了。至于问题有那些,因为实在年代久远,都忘光了。各位有兴趣可以到网络上找找几位前辈的文章,讲的很清楚。小弟空时也把其中几篇关键的找贴Link来请大家参考参考。

  其实写DLL很简单,它几乎就像你的DelphiCode一般,没有什么大变化。如果你用的不是很深,不搅什么动态加载或数据共享,那你只要记住几个小原则就可以了。DLL实在太好用了,尤其是长期维护、多人开发的商业成品,更是少不了DLL。再加上它写起来很容易,你很可能会玩的太过火,及至滥用的程度。到时务请记得要收敛些。

来写第一题吧。

一、开使你的第一个DLL专案
1.File->Close all->File->New﹝DLL﹞

代码:


 
//自动产生Code如下
library Project2;

//这边有段废话,不过如果你是第一次写DLL,你要仔细看看
//至关紧要,别忘了。
uses
SysUtils,
Classes;

{$R *.RES}

begin
end.






2.加个Func进来:

代码:



library Project2;
uses
SysUtils,
Classes;

//较好的作法不是放在这,但为了简化及说明方便就放在这
  //别担心,放在这绝对可以跑
  Function MyMax ( X , Y : integer ) : integer ; stdcall ;
begin
  if X > Y then
  Result := X
  else
  Result := Y ;
end ;
//切记:Library 的名字大小写没关系,可是DLL-Func的大小写就有关系了。
  //在 DLL-Func-Name写成MyMax与myMAX是不同的。如果写错了,立即
  //的结果是你叫用到此DLL的AP根本开不起来。
  //参数的大小写就没关系了。甚至不必同名。如原型中是 (X,Y:integer)但引
  //用时写成(A,B:integer),那是没关系的。
  //切记:要再加个stdcall。书上讲,如果你是用Delphi写DLL,且希望不仅给
  // Delphi-AP也希望BCB/VC-AP等使用的话,那你最好加个Stdcall ; 的指示
  //参数型态:Delphi有很多种它自己的变量型态,这些当然不是DLL所喜欢的
  //,Windows/DLL的母语应该是C。所以如果要传进传出DLL的参数,我们
  //尽可能照规矩来用。这两者写起来,后者会麻烦不少。如果你对C不熟
  //的话,那也没关系。我们以后再讲。
{$R *.RES}

begin
end.






3.将这些可共享的Func送出DLL,让外界﹝就是你的Delphi-AP啦﹞使用:光如
此,你的AP还不能用到这些,你还要加个Exports才行。

代码:


 
{$R *.RES}
exports
MyMax ;
begin
end.






4.好了,可以按 Ctrl-F9编译了。此时可不要按F9。DLL不是EXE┌不可单独执行的,如果你按F9,会有ErrorMsg的。这时如果DLL有Error,请修正之。再按Ctrl-F9。此时可能有Warning,不要紧,研究一下,看看就好。再按Ctrl-F9,此时就『Done , Compiled 』。同目录就会有个 *.dll 。恭喜,大功告成了。

二、进行测试:开个新Exe专案:
1.加个TButton

代码:


 
ShowMessage ( IntToStr(MyMax(30,50)) ) ;





2.告知Exe到那里抓个Func

代码:


 
//在Form,interface,var后加
Function MyMax ( X , Y : integer ) : integer ; stdcall ; external 'MyTestDLL.dll' ;
// MyTestDLL.dll为你前时写的DLL项目名字
// DLL名字大小写没关系。不过记得要加 extension的 .DLL。在Win95或NT,
// 是不必加 extension,但这两种OS,可能越来越少了吧。要加extension欧。
 





可以了,简单吧。


OVER

[1] 页 RedHyphone.Union 投稿邮箱
[特别声明]:
本站文章大多搜索转载自网络中,如果侵犯了您的权利,请告之我们。本站将立即删除。
本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
查看评论】【向上滚屏】【关闭窗口】【 打印
-相关文章
  • openSUSE 11.1 Final - 正式发布
  • [视频]Opera Mini 4.2 正式版发布
  • dll注入系统进程(开源代码)
  • 认知盲区 解惑双网卡双线路DNS解析
  • FlashFXP 简体中文版 3.7.5 Build 1303 Beta[烈火]
  • -文章评论 (关闭)
    ·还没有相关的评论!

    网上大名:
    红旋风网络技术联盟 RHUTech.Union
     
    Copyright © 2000-2007 RedHyphone.Union All Rights Reserved. 红旋风联盟版权所有.皖ICP备05011033号
    中国红旋风网络技术联盟 | www.RedHyphone.net
    Mailto:Redhyphone@gamil.com