绝大多数API声明在windows.pas(对应于SDK的windows.h)中,只要uses windows;即可调用,不用类似vb那样声明(烦!)不过,像shell api声明在shellapi.pas中,也有一些api声明在不同单元。不用什么“好的api工具”(所谓api工具本身就不应该产生出来)。生成的程序小,是因为你使用的是静态链接,意思就是这个exe可以完全独立运行(不像vb需要msvbvm60.dll运行库,这个库文件就有3M多),如果你想像vb那样动态链接,delphi同样支持,只是vcl60.bpl之类的动态库,windows没有自带而已。
解决方案 »
- 如何把flash 打包到dll 中,然后利用 ShockwaveFlash1控件播放
- 看见这么多人卖书,我说:我不敢卖书。我奉劝大家也不要卖书。
- 在WebBrowser中,显示图片,为什么显不到边呀
- 这错误是为什么?
- 一个读写表格宽度的奇怪问题:
- 简单的数据库报表打印问题(急...在线等待)
- 关于安装NOkia Data Suite 的问题??——如能解决300分相赠
- 怎么取得用户两次按键之间的间隔,并用此来推算用户的输入速度?
- 新人初来乍到 问候下大家 希望可以共同提高,并向大家虚心求教!
- 一个极为简单的问题,恳请大家帮忙解决!
- 请问如何设置TSocketConnection组件?
- 如何得到treeview所選中的文件的完整路徑??
五 调用静态载入
1 客户端函数声名:
1)大小写敏感。
2)与DLL中的声明一样。
如: showform(form:Tform);Far;external'yproject_dll.dll';
3)调用时传过去的参数类型最好也与windows c++一样。
4)调用时DLL必须在windows搜索路径中,顺序是:当前目录;Path路径;windows;widows\system;windows\ssystem32;六 调用动态载入
1 建立一种过程类型[如果你对过程类型的变量只是一个指针的本质清楚的话,你就知道是怎么回事了]。如:
type
mypointer=procedure(form:Tform);Far;external;
var
Hinst:Thandle;
showform:mypointer;
begin
Hinst:=loadlibrary('yproject_dll');//Load一个Dll,按文件名找。
showform:=getprocaddress(Hinst,'showform');//按函数名找,大小写敏感。如果你知道自动化对象的本质就清楚了。
showform(application.mainform);//找到函数入口指针就调用。
Freelibrary(Hinst);
end;功具就有些,但个人感觉上不怎么样。程序的大小是一个很多人常问的问提,delphi有两种编译方式,一种完全编译程序会大些,另一种是带bpl编译,程序会少些,但要带bpl发布。
你可以通过ide->project->tools->packages的builder with runtimes packeges来设换。