现在的位置: 首页 > 综合 > 正文

Delphi2010 API延迟加载

2011年12月05日 ⁄ 综合 ⁄ 共 459字 ⁄ 字号 评论关闭

delayed是Delphi2010中一种新的声明方式,使用它将可以在不适当的环境下绕过不存在的API函数,并且对该API的调用进行“跳过”的处理

来看以下例子:
function GetTouchInputInfo(hTouchInput: THandle; cInputs: UINT;
pInputs: PTouchInput; cbSize: Integer): BOOL; stdcall;
external user32 name 'GetTouchInputInfo' delayed;

这是定义于keyboard单元内的API函数,用于实现Windows 7下触摸屏的消息获取,在Windows 7的user32.dll内定义了这个函数,但是XP下却并没有。于是,在D2010内作此定义,即可在XP下编译执行通过。
若去掉delayed关键字,则XP下可编译但不可运行,会提示无法定位GetTouchInputInfo的入口点

采用此技术,在D2010下能够方便的实现版本差异的控制,也将更容易的避开由于API 或是自己写的DLL不一致所引起的问题

抱歉!评论已关闭.