调用API(100分)

  • 主题发起人 主题发起人 magy
  • 开始时间 开始时间
M

magy

Unregistered / Unconfirmed
GUEST, unregistred user!
<br>&nbsp; &nbsp; &nbsp;我们买了一个二次开发软件,它提供了一些API函数和类.请问我应该在Delphi里怎么<br>调用这些API函数.如果调windows API只要在uses 中加入 windows 就可以了, 如果调这个<br>二次开发软件的API函数,uses 语句怎么写?这个二次开发软件主要使用C++编的.<br>&nbsp; &nbsp; &nbsp;另外,这个二次开发软件也在API的基础上体统了一些类,请问我使用类好,还使用API<br>好,怎么用
 
先声明,如:<br>以GetCursorPos为例:<br>{$EXTERNALSYM GetCursorPos}<br>function GetCursorPos(var lpPoint: TPoint): BOOL; stdcall;<br>function GetCursorPos; external user32 name 'GetCursorPos';<br><br>好象是这样,你试试吧。<br>另外C++类在Delphi中不能直接使用吧?<br>除非他提供了Delphi类的接口。<br>
 
agree haoxg
 
一般是提供DLL的,要得到函数的声明,你去看一看windows.pas,那样声明一下就行了
 
先声明API及其所在的DLL!如haoxg所述<br>以后就可以正常使用!
 
要是dll的话,用loadlibrary,getprocaddress,freelibrary
 
如果是动态连接库的话:<br>是不是可以:function 函数名(参数列表): 返回类型; stdcall; external '动态连接库名';<br>比如:<br>function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
 
问题是有很多的.dll文件,我也不太清楚到底那个函数数属于那个.dll<br>如果每个函数都需要申明,会很麻烦<br>没有简单一点的方法吗?比如说指定debug的search parth之类的方法<br>另外,如果动态载入动态连接库,像wangxd那样,是不是也需要对每个函数进行申明.
 
首先您还是应该把这些头文件翻译成Delphi的头文件才行,要不怎么调用呢
 
请问怎么译?
 
如果你的源代码是 C++ ,就要用 Delphi 的语法重写一次,否则怎么 uses 呢?<br>就是这样译。
 
你的意思是把所有的.h用Delphi重新写一遍吗?<br>那不是要把VC在学一边.有没有简单一点的方法?<br>有没有方法可以把VC的类转化为Delphi的类?
 
没法,只有这样写了。
 
magy:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。<br>
 
若嫌麻烦,用VC算了:)
 
编译到DLL里就可以用了!
 
可以要求供应商提供
 
必须重新声明,这是Delphi比不上BCB和VC的地方:-(
 
多人接受答案了。
 
后退
顶部