CJC Delphi 技巧馆's Archiver

cjc Posted at 2018-9-20 10:51

定义新API 函数的正确方法 (cjc, 2011.11.14)

定义新API 函数的正确方法 (cjc, 2011.11.14)

象以下这样直接定义win7的api新函数,那软件到了XP上运行时,就会直接产生运行错。
function PowerCreateRequest(Context: PReason_Context): THandle; stdcall; external kernel32 name 'PowerCreateRequest';

function PowerSetRequest(PowerRequest: THandle; RequestType: TPOWER_REQUEST_TYPE): BOOL; stdcall; external kernel32 name 'PowerSetRequest';



正确例:

function PowerCreateRequest(Context: PReason_Context): THandle;
type
   TPowerCreateRequest = function (Context: PReason_Context): THandle; stdcall;
   {$J+}
const
   First    : Boolean = True;
   MyProc  : TPowerCreateRequest = nil;
   {$J-}
var
   hLib     : Integer;
begin
   if First then
   begin
      First := false;
      hLib := GetModuleHandle(kernel32); // 'kernel32.dll';
      if hLib > 0 then
         MyProc := GetProcAddress(hLib, 'PowerCreateRequest');
   end;
   Result := 0;
   if @MyProc <> nil then Result := MyProc(Context);
end;

Page: [1]
CJC好玩背单词最新版本 - 是目前最好的背单词软件,游戏好玩,功能强大,词库众多,还有真人语音,免费下载,免费试用 !

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.