Delphi2010 API延迟加载

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不一致所引起的问题