GetWindowLongPtr и SetWindowLongPtr оба появляются в модуле windows Delphi 2009 (версия 12 компилятора).
{$EXTERNALSYM GetWindowLongPtr}
function GetWindowLongPtr(hWnd: HWND; nIndex: Integer): LONG_PTR; stdcall;
{$EXTERNALSYM SetWindowLongPtr}
function SetWindowLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR; stdcall;
Также объявлены версии API Ansi и Wide, хотя нет никакой разницы, за исключением имени, и вызовы не перенаправляются, как во многих других функциях API, где «неукрашенная» версия MyApiFunction перенаправляется либо на MyApiFunctionA (до D2009) или функция MyApiFunctionW (D2009 +). Как в:
function MyApiFunction; external advapi32 name 'MyApiFunctionW';
function MyApiFunctionA; external advapi32 name 'MyApiFunctionA';
function MyApiFunctionW; external advapi32 name 'MyApiFunctionW';
Если D2006 не определяет их как @Frank Shearer, и проблема была открыта в QC для D2007 и закрыта для версии 12 (D200 (), я думаю, D2009 действительно является версией, в которой были добавлены эти объявления.
Обратите внимание, что вы всегда можете добавить объявление Windows API самостоятельно, если оно не предусмотрено версией Delphi, которую вы используете. И как всегда с функциями API, разумно знать, из какой версии Windows они существуют, чтобы не вызывать API, которые не существуют на платформе, на которой работает ваша программа.