绝大多数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没有自带而已。

解决方案 »

  1.   

    delphi调用api有两种方式
    五 调用静态载入
    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来设换。
      

  2.   

    调用API,实质上就是DLL文件里的函数!DELPHI的某些单元封装了部分!
      

  3.   

    在www.delphi-jeji.org上有许多Delphi的源码中没有的Windows API封装文件,去找找吧。
      

  4.   

    不好意思,写错了。应该是www.delphi-jedi.org。