Bladeren bron

* compilable windows.pp file
still to do :
- findout problems
- findout the correct DLL for each call !!

pierre 27 jaren geleden
bovenliggende
commit
a0eda71f84
15 gewijzigde bestanden met toevoegingen van 30092 en 10405 verwijderingen
  1. 1901 0
      rtl/win32/ascdef.pp
  2. 9 0
      rtl/win32/ascdef.sed
  3. 1901 0
      rtl/win32/ascfun.pp
  4. 1167 467
      rtl/win32/base.pp
  5. 5713 4393
      rtl/win32/defines.pp
  6. 767 0
      rtl/win32/errors.pp
  7. 6712 0
      rtl/win32/func.pp
  8. 17 2
      rtl/win32/makefile
  9. 1162 1008
      rtl/win32/messages.pp
  10. 6797 4527
      rtl/win32/struct.pp
  11. 21 8
      rtl/win32/syswin32.pp
  12. 1922 0
      rtl/win32/unidef.pp
  13. 9 0
      rtl/win32/unidef.sed
  14. 1922 0
      rtl/win32/unifun.pp
  15. 72 0
      rtl/win32/windows.pp

+ 1901 - 0
rtl/win32/ascdef.pp

@@ -0,0 +1,1901 @@
+{
+    $Id$
+    This file is part of the Free Pascal run time library.
+    This unit contains the record definition for the Win32 API
+    Copyright (c) 1993,97 by Florian KLaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
+
+
+{$ifndef windows_include_files}
+
+unit ascdef;
+
+{  Automatically converted by H2PAS.EXE from asciifun.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
+
+
+  interface
+
+   uses
+      base,defines,struct;
+
+{$endif windows_include_files}
+
+{$ifdef read_interface}
+
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     ASCIIFunctions.h
+  
+     Declarations for all the Win32 ASCII Functions
+  
+     Copyright (C) 1996 Free Software Foundation, Inc.
+  
+     Author:  Scott Christley <[email protected]>
+  
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+{$ifndef _GNU_H_WINDOWS32_ASCIIFUNCFIONSDEFAULT}
+{$define _GNU_H_WINDOWS32_ASCIIFUNCFIONSDEFAULT}
+{ C++ extern C conditionnal removed }
+  { __cplusplus  }
+
+  function GetBinaryType(lpApplicationName:LPCSTR; lpBinaryType:LPDWORD):WINBOOL;
+
+  function GetShortPathName(lpszLongPath:LPCSTR; lpszShortPath:LPSTR; cchBuffer:DWORD):DWORD;
+
+  function GetEnvironmentStrings : LPSTR;
+
+  function FreeEnvironmentStrings(_para1:LPSTR):WINBOOL;
+
+  function FormatMessage(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPSTR; 
+             nSize:DWORD; var Arguments:va_list):DWORD;
+
+  function CreateMailslot(lpName:LPCSTR; nMaxMessageSize:DWORD; lReadTimeout:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE;
+
+  function lstrcmp(lpString1:LPCSTR; lpString2:LPCSTR):longint;
+
+  function lstrcmpi(lpString1:LPCSTR; lpString2:LPCSTR):longint;
+
+  function lstrcpyn(lpString1:LPSTR; lpString2:LPCSTR; iMaxLength:longint):LPSTR;
+
+  function lstrcpy(lpString1:LPSTR; lpString2:LPCSTR):LPSTR;
+
+  function lstrcat(lpString1:LPSTR; lpString2:LPCSTR):LPSTR;
+
+  function lstrlen(lpString:LPCSTR):longint;
+
+  function CreateMutex(lpMutexAttributes:LPSECURITY_ATTRIBUTES; bInitialOwner:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function OpenMutex(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function CreateEvent(lpEventAttributes:LPSECURITY_ATTRIBUTES; bManualReset:WINBOOL; bInitialState:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function OpenEvent(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function CreateSemaphore(lpSemaphoreAttributes:LPSECURITY_ATTRIBUTES; lInitialCount:LONG; lMaximumCount:LONG; lpName:LPCSTR):HANDLE;
+
+  function OpenSemaphore(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function CreateFileMapping(hFile:HANDLE; lpFileMappingAttributes:LPSECURITY_ATTRIBUTES; flProtect:DWORD; dwMaximumSizeHigh:DWORD; dwMaximumSizeLow:DWORD; 
+             lpName:LPCSTR):HANDLE;
+
+  function OpenFileMapping(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function GetLogicalDriveStrings(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD;
+
+  function LoadLibrary(lpLibFileName:LPCSTR):HINSTANCE;
+
+  function LoadLibraryEx(lpLibFileName:LPCSTR; hFile:HANDLE; dwFlags:DWORD):HINSTANCE;
+
+  function GetModuleFileName(hModule:HINSTANCE; lpFilename:LPSTR; nSize:DWORD):DWORD;
+
+  function GetModuleHandle(lpModuleName:LPCSTR):HMODULE;
+
+  procedure FatalAppExit(uAction:UINT; lpMessageText:LPCSTR);
+
+  function GetCommandLine : LPSTR;
+
+  function GetEnvironmentVariable(lpName:LPCSTR; lpBuffer:LPSTR; nSize:DWORD):DWORD;
+
+  function SetEnvironmentVariable(lpName:LPCSTR; lpValue:LPCSTR):WINBOOL;
+
+  function ExpandEnvironmentStrings(lpSrc:LPCSTR; lpDst:LPSTR; nSize:DWORD):DWORD;
+
+  procedure OutputDebugString(lpOutputString:LPCSTR);
+
+  function FindResource(hModule:HINSTANCE; lpName:LPCSTR; lpType:LPCSTR):HRSRC;
+
+  function FindResourceEx(hModule:HINSTANCE; lpType:LPCSTR; lpName:LPCSTR; wLanguage:WORD):HRSRC;
+
+  function EnumResourceTypes(hModule:HINSTANCE; lpEnumFunc:ENUMRESTYPEPROC; lParam:LONG):WINBOOL;
+
+  function EnumResourceNames(hModule:HINSTANCE; lpType:LPCSTR; lpEnumFunc:ENUMRESNAMEPROC; lParam:LONG):WINBOOL;
+
+  function EnumResourceLanguages(hModule:HINSTANCE; lpType:LPCSTR; lpName:LPCSTR; lpEnumFunc:ENUMRESLANGPROC; lParam:LONG):WINBOOL;
+
+  function BeginUpdateResource(pFileName:LPCSTR; bDeleteExistingResources:WINBOOL):HANDLE;
+
+  function UpdateResource(hUpdate:HANDLE; lpType:LPCSTR; lpName:LPCSTR; wLanguage:WORD; lpData:LPVOID; 
+             cbData:DWORD):WINBOOL;
+
+  function EndUpdateResource(hUpdate:HANDLE; fDiscard:WINBOOL):WINBOOL;
+
+  function GlobalAddAtom(lpString:LPCSTR):ATOM;
+
+  function GlobalFindAtom(lpString:LPCSTR):ATOM;
+
+  function GlobalGetAtomName(nAtom:ATOM; lpBuffer:LPSTR; nSize:longint):UINT;
+
+  function AddAtom(lpString:LPCSTR):ATOM;
+
+  function FindAtom(lpString:LPCSTR):ATOM;
+
+  function GetAtomName(nAtom:ATOM; lpBuffer:LPSTR; nSize:longint):UINT;
+
+  function GetProfileInt(lpAppName:LPCSTR; lpKeyName:LPCSTR; nDefault:INT):UINT;
+
+  function GetProfileString(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpDefault:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD):DWORD;
+
+  function WriteProfileString(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpString:LPCSTR):WINBOOL;
+
+  function GetProfileSection(lpAppName:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD):DWORD;
+
+  function WriteProfileSection(lpAppName:LPCSTR; lpString:LPCSTR):WINBOOL;
+
+  function GetPrivateProfileInt(lpAppName:LPCSTR; lpKeyName:LPCSTR; nDefault:INT; lpFileName:LPCSTR):UINT;
+
+  function GetPrivateProfileString(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpDefault:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD; 
+             lpFileName:LPCSTR):DWORD;
+
+  function WritePrivateProfileString(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpString:LPCSTR; lpFileName:LPCSTR):WINBOOL;
+
+  function GetPrivateProfileSection(lpAppName:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD; lpFileName:LPCSTR):DWORD;
+
+  function WritePrivateProfileSection(lpAppName:LPCSTR; lpString:LPCSTR; lpFileName:LPCSTR):WINBOOL;
+
+  function GetDriveType(lpRootPathName:LPCSTR):UINT;
+
+  function GetSystemDirectory(lpBuffer:LPSTR; uSize:UINT):UINT;
+
+  function GetTempPath(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD;
+
+  function GetTempFileName(lpPathName:LPCSTR; lpPrefixString:LPCSTR; uUnique:UINT; lpTempFileName:LPSTR):UINT;
+
+  function GetWindowsDirectory(lpBuffer:LPSTR; uSize:UINT):UINT;
+
+  function SetCurrentDirectory(lpPathName:LPCSTR):WINBOOL;
+
+  function GetCurrentDirectory(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD;
+
+  function GetDiskFreeSpace(lpRootPathName:LPCSTR; lpSectorsPerCluster:LPDWORD; lpBytesPerSector:LPDWORD; lpNumberOfFreeClusters:LPDWORD; lpTotalNumberOfClusters:LPDWORD):WINBOOL;
+
+  function CreateDirectory(lpPathName:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL;
+
+  function CreateDirectoryEx(lpTemplateDirectory:LPCSTR; lpNewDirectory:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL;
+
+  function RemoveDirectory(lpPathName:LPCSTR):WINBOOL;
+
+  function GetFullPathName(lpFileName:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR; var lpFilePart:LPSTR):DWORD;
+
+  function DefineDosDevice(dwFlags:DWORD; lpDeviceName:LPCSTR; lpTargetPath:LPCSTR):WINBOOL;
+
+  function QueryDosDevice(lpDeviceName:LPCSTR; lpTargetPath:LPSTR; ucchMax:DWORD):DWORD;
+
+  function CreateFile(lpFileName:LPCSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD; 
+             dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE;
+
+  function SetFileAttributes(lpFileName:LPCSTR; dwFileAttributes:DWORD):WINBOOL;
+
+  function GetFileAttributes(lpFileName:LPCSTR):DWORD;
+
+  function GetCompressedFileSize(lpFileName:LPCSTR; lpFileSizeHigh:LPDWORD):DWORD;
+
+  function DeleteFile(lpFileName:LPCSTR):WINBOOL;
+
+  function SearchPath(lpPath:LPCSTR; lpFileName:LPCSTR; lpExtension:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR; 
+             var lpFilePart:LPSTR):DWORD;
+
+  function CopyFile(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR; bFailIfExists:WINBOOL):WINBOOL;
+
+  function MoveFile(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR):WINBOOL;
+
+  function MoveFileEx(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR; dwFlags:DWORD):WINBOOL;
+
+  function CreateNamedPipe(lpName:LPCSTR; dwOpenMode:DWORD; dwPipeMode:DWORD; nMaxInstances:DWORD; nOutBufferSize:DWORD; 
+             nInBufferSize:DWORD; nDefaultTimeOut:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE;
+
+  function GetNamedPipeHandleState(hNamedPipe:HANDLE; lpState:LPDWORD; lpCurInstances:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD; 
+             lpUserName:LPSTR; nMaxUserNameSize:DWORD):WINBOOL;
+
+  function CallNamedPipe(lpNamedPipeName:LPCSTR; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; nTimeOut:DWORD):WINBOOL;
+
+  function WaitNamedPipe(lpNamedPipeName:LPCSTR; nTimeOut:DWORD):WINBOOL;
+
+  function SetVolumeLabel(lpRootPathName:LPCSTR; lpVolumeName:LPCSTR):WINBOOL;
+
+  function GetVolumeInformation(lpRootPathName:LPCSTR; lpVolumeNameBuffer:LPSTR; nVolumeNameSize:DWORD; lpVolumeSerialNumber:LPDWORD; lpMaximumComponentLength:LPDWORD; 
+             lpFileSystemFlags:LPDWORD; lpFileSystemNameBuffer:LPSTR; nFileSystemNameSize:DWORD):WINBOOL;
+
+  function ClearEventLog(hEventLog:HANDLE; lpBackupFileName:LPCSTR):WINBOOL;
+
+  function BackupEventLog(hEventLog:HANDLE; lpBackupFileName:LPCSTR):WINBOOL;
+
+  function OpenEventLog(lpUNCServerName:LPCSTR; lpSourceName:LPCSTR):HANDLE;
+
+  function RegisterEventSource(lpUNCServerName:LPCSTR; lpSourceName:LPCSTR):HANDLE;
+
+  function OpenBackupEventLog(lpUNCServerName:LPCSTR; lpFileName:LPCSTR):HANDLE;
+
+  function ReadEventLog(hEventLog:HANDLE; dwReadFlags:DWORD; dwRecordOffset:DWORD; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; 
+             var pnBytesRead:DWORD; var pnMinNumberOfBytesNeeded:DWORD):WINBOOL;
+
+  function ReportEvent(hEventLog:HANDLE; wType:WORD; wCategory:WORD; dwEventID:DWORD; lpUserSid:PSID; 
+             wNumStrings:WORD; dwDataSize:DWORD; var lpStrings:LPCSTR; lpRawData:LPVOID):WINBOOL;
+
+  function AccessCheckAndAuditAlarm(SubsystemName:LPCSTR; HandleId:LPVOID; ObjectTypeName:LPSTR; ObjectName:LPSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL;
+
+  function ObjectOpenAuditAlarm(SubsystemName:LPCSTR; HandleId:LPVOID; ObjectTypeName:LPSTR; ObjectName:LPSTR; pSecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             ClientToken:HANDLE; DesiredAccess:DWORD; GrantedAccess:DWORD; Privileges:PPRIVILEGE_SET; ObjectCreation:WINBOOL; 
+             AccessGranted:WINBOOL; GenerateOnClose:LPBOOL):WINBOOL;
+
+  function ObjectPrivilegeAuditAlarm(SubsystemName:LPCSTR; HandleId:LPVOID; ClientToken:HANDLE; DesiredAccess:DWORD; Privileges:PPRIVILEGE_SET; 
+             AccessGranted:WINBOOL):WINBOOL;
+
+  function ObjectCloseAuditAlarm(SubsystemName:LPCSTR; HandleId:LPVOID; GenerateOnClose:WINBOOL):WINBOOL;
+
+  function PrivilegedServiceAuditAlarm(SubsystemName:LPCSTR; ServiceName:LPCSTR; ClientToken:HANDLE; Privileges:PPRIVILEGE_SET; AccessGranted:WINBOOL):WINBOOL;
+
+  function SetFileSecurity(lpFileName:LPCSTR; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL;
+
+  function GetFileSecurity(lpFileName:LPCSTR; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+  function FindFirstChangeNotification(lpPathName:LPCSTR; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD):HANDLE;
+
+  function IsBadStringPtr(lpsz:LPCSTR; ucchMax:UINT):WINBOOL;
+
+  function LookupAccountSid(lpSystemName:LPCSTR; Sid:PSID; Name:LPSTR; cbName:LPDWORD; ReferencedDomainName:LPSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL;
+
+  function LookupAccountName(lpSystemName:LPCSTR; lpAccountName:LPCSTR; Sid:PSID; cbSid:LPDWORD; ReferencedDomainName:LPSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL;
+
+  function LookupPrivilegeValue(lpSystemName:LPCSTR; lpName:LPCSTR; lpLuid:PLUID):WINBOOL;
+
+  function LookupPrivilegeName(lpSystemName:LPCSTR; lpLuid:PLUID; lpName:LPSTR; cbName:LPDWORD):WINBOOL;
+
+  function LookupPrivilegeDisplayName(lpSystemName:LPCSTR; lpName:LPCSTR; lpDisplayName:LPSTR; cbDisplayName:LPDWORD; lpLanguageId:LPDWORD):WINBOOL;
+
+  function BuildCommDCB(lpDef:LPCSTR; lpDCB:LPDCB):WINBOOL;
+
+  function BuildCommDCBAndTimeouts(lpDef:LPCSTR; lpDCB:LPDCB; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL;
+
+  function CommConfigDialog(lpszName:LPCSTR; hWnd:HWND; lpCC:LPCOMMCONFIG):WINBOOL;
+
+  function GetDefaultCommConfig(lpszName:LPCSTR; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL;
+
+  function SetDefaultCommConfig(lpszName:LPCSTR; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL;
+
+  function GetComputerName(lpBuffer:LPSTR; nSize:LPDWORD):WINBOOL;
+
+  function SetComputerName(lpComputerName:LPCSTR):WINBOOL;
+
+  function GetUserName(lpBuffer:LPSTR; nSize:LPDWORD):WINBOOL;
+
+  function wvsprintf(_para1:LPSTR; _para2:LPCSTR; arglist:va_list):longint;
+
+  (* function wsprintf(_para1:LPSTR; _para2:LPCSTR; ...):longint;
+      not allowed in FPC *)
+      
+  function LoadKeyboardLayout(pwszKLID:LPCSTR; Flags:UINT):HKL;
+
+  function GetKeyboardLayoutName(pwszKLID:LPSTR):WINBOOL;
+
+  function CreateDesktop(lpszDesktop:LPSTR; lpszDevice:LPSTR; pDevmode:LPDEVMODE; dwFlags:DWORD; dwDesiredAccess:DWORD; 
+             lpsa:LPSECURITY_ATTRIBUTES):HDESK;
+
+  function OpenDesktop(lpszDesktop:LPSTR; dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK;
+
+  function EnumDesktops(hwinsta:HWINSTA; lpEnumFunc:DESKTOPENUMPROC; lParam:LPARAM):WINBOOL;
+
+  function CreateWindowStation(lpwinsta:LPSTR; dwReserved:DWORD; dwDesiredAccess:DWORD; lpsa:LPSECURITY_ATTRIBUTES):HWINSTA;
+
+  function OpenWindowStation(lpszWinSta:LPSTR; fInherit:WINBOOL; dwDesiredAccess:DWORD):HWINSTA;
+
+  function EnumWindowStations(lpEnumFunc:ENUMWINDOWSTATIONPROC; lParam:LPARAM):WINBOOL;
+
+  function GetUserObjectInformation(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+  function SetUserObjectInformation(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD):WINBOOL;
+
+  function RegisterWindowMessage(lpString:LPCSTR):UINT;
+
+  function GetMessage(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT):WINBOOL;
+
+(* Const before type ignored *)
+  function DispatchMessage(var lpMsg:MSG):LONG;
+
+  function PeekMessage(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT; wRemoveMsg:UINT):WINBOOL;
+
+  function SendMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function SendMessageTimeout(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; fuFlags:UINT; 
+             uTimeout:UINT; lpdwResult:LPDWORD):LRESULT;
+
+  function SendNotifyMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function SendMessageCallback(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; lpResultCallBack:SENDASYNCPROC; 
+             dwData:DWORD):WINBOOL;
+
+  function PostMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function PostThreadMessage(idThread:DWORD; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function DefWindowProc(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CallWindowProc(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+(* Const before type ignored *)
+  function RegisterClass(var lpWndClass:WNDCLASS):ATOM;
+
+  function UnregisterClass(lpClassName:LPCSTR; hInstance:HINSTANCE):WINBOOL;
+
+  function GetClassInfo(hInstance:HINSTANCE; lpClassName:LPCSTR; lpWndClass:LPWNDCLASS):WINBOOL;
+
+(* Const before type ignored *)
+  function RegisterClassEx(var _para1:WNDCLASSEX):ATOM;
+
+  function GetClassInfoEx(_para1:HINSTANCE; _para2:LPCSTR; _para3:LPWNDCLASSEX):WINBOOL;
+
+  function CreateWindowEx(dwExStyle:DWORD; lpClassName:LPCSTR; lpWindowName:LPCSTR; dwStyle:DWORD; X:longint; 
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+
+  function CreateDialogParam(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND;
+
+  function CreateDialogIndirectParam(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND;
+
+  function DialogBoxParam(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint;
+
+  function DialogBoxIndirectParam(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint;
+
+  function SetDlgItemText(hDlg:HWND; nIDDlgItem:longint; lpString:LPCSTR):WINBOOL;
+
+  function GetDlgItemText(hDlg:HWND; nIDDlgItem:longint; lpString:LPSTR; nMaxCount:longint):UINT;
+
+  function SendDlgItemMessage(hDlg:HWND; nIDDlgItem:longint; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LONG;
+
+  function DefDlgProc(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CallMsgFilter(lpMsg:LPMSG; nCode:longint):WINBOOL;
+
+  function RegisterClipboardFormat(lpszFormat:LPCSTR):UINT;
+
+  function GetClipboardFormatName(format:UINT; lpszFormatName:LPSTR; cchMaxCount:longint):longint;
+
+  function CharToOem(lpszSrc:LPCSTR; lpszDst:LPSTR):WINBOOL;
+
+  function OemToChar(lpszSrc:LPCSTR; lpszDst:LPSTR):WINBOOL;
+
+  function CharToOemBuff(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL;
+
+  function OemToCharBuff(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL;
+
+  function CharUpper(lpsz:LPSTR):LPSTR;
+
+  function CharUpperBuff(lpsz:LPSTR; cchLength:DWORD):DWORD;
+
+  function CharLower(lpsz:LPSTR):LPSTR;
+
+  function CharLowerBuff(lpsz:LPSTR; cchLength:DWORD):DWORD;
+
+  function CharNext(lpsz:LPCSTR):LPSTR;
+
+  function CharPrev(lpszStart:LPCSTR; lpszCurrent:LPCSTR):LPSTR;
+
+  function IsCharAlpha(ch:CHAR):WINBOOL;
+
+  function IsCharAlphaNumeric(ch:CHAR):WINBOOL;
+
+  function IsCharUpper(ch:CHAR):WINBOOL;
+
+  function IsCharLower(ch:CHAR):WINBOOL;
+
+  function GetKeyNameText(lParam:LONG; lpString:LPSTR; nSize:longint):longint;
+
+  function VkKeyScan(ch:CHAR):SHORT;
+
+  function VkKeyScanEx(ch:CHAR; dwhkl:HKL):SHORT;
+
+  function MapVirtualKey(uCode:UINT; uMapType:UINT):UINT;
+
+  function MapVirtualKeyEx(uCode:UINT; uMapType:UINT; dwhkl:HKL):UINT;
+
+  function LoadAccelerators(hInstance:HINSTANCE; lpTableName:LPCSTR):HACCEL;
+
+  function CreateAcceleratorTable(_para1:LPACCEL; _para2:longint):HACCEL;
+
+  function CopyAcceleratorTable(hAccelSrc:HACCEL; lpAccelDst:LPACCEL; cAccelEntries:longint):longint;
+
+  function TranslateAccelerator(hWnd:HWND; hAccTable:HACCEL; lpMsg:LPMSG):longint;
+
+  function LoadMenu(hInstance:HINSTANCE; lpMenuName:LPCSTR):HMENU;
+
+(* Const before type ignored *)
+  function LoadMenuIndirect(var lpMenuTemplate:MENUTEMPLATE):HMENU;
+
+  function ChangeMenu(hMenu:HMENU; cmd:UINT; lpszNewItem:LPCSTR; cmdInsert:UINT; flags:UINT):WINBOOL;
+
+  function GetMenuString(hMenu:HMENU; uIDItem:UINT; lpString:LPSTR; nMaxCount:longint; uFlag:UINT):longint;
+
+  function InsertMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL;
+
+  function AppendMenu(hMenu:HMENU; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL;
+
+  function ModifyMenu(hMnu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL;
+
+  function InsertMenuItem(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL;
+
+  function GetMenuItemInfo(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPMENUITEMINFO):WINBOOL;
+
+  function SetMenuItemInfo(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL;
+
+  function DrawText(hDC:HDC; lpString:LPCSTR; nCount:longint; lpRect:LPRECT; uFormat:UINT):longint;
+
+  function DrawTextEx(_para1:HDC; _para2:LPSTR; _para3:longint; _para4:LPRECT; _para5:UINT; 
+             _para6:LPDRAWTEXTPARAMS):longint;
+
+  function GrayString(hDC:HDC; hBrush:HBRUSH; lpOutputFunc:GRAYSTRINGPROC; lpData:LPARAM; nCount:longint; 
+             X:longint; Y:longint; nWidth:longint; nHeight:longint):WINBOOL;
+
+  function DrawState(_para1:HDC; _para2:HBRUSH; _para3:DRAWSTATEPROC; _para4:LPARAM; _para5:WPARAM; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:UINT):WINBOOL;
+
+  function TabbedTextOut(hDC:HDC; X:longint; Y:longint; lpString:LPCSTR; nCount:longint; 
+             nTabPositions:longint; lpnTabStopPositions:LPINT; nTabOrigin:longint):LONG;
+
+  function GetTabbedTextExtent(hDC:HDC; lpString:LPCSTR; nCount:longint; nTabPositions:longint; lpnTabStopPositions:LPINT):DWORD;
+
+  function SetProp(hWnd:HWND; lpString:LPCSTR; hData:HANDLE):WINBOOL;
+
+  function GetProp(hWnd:HWND; lpString:LPCSTR):HANDLE;
+
+  function RemoveProp(hWnd:HWND; lpString:LPCSTR):HANDLE;
+
+  function EnumPropsEx(hWnd:HWND; lpEnumFunc:PROPENUMPROCEX; lParam:LPARAM):longint;
+
+  function EnumProps(hWnd:HWND; lpEnumFunc:PROPENUMPROC):longint;
+
+  function SetWindowText(hWnd:HWND; lpString:LPCSTR):WINBOOL;
+
+  function GetWindowText(hWnd:HWND; lpString:LPSTR; nMaxCount:longint):longint;
+
+  function GetWindowTextLength(hWnd:HWND):longint;
+
+  function MessageBox(hWnd:HWND; lpText:LPCSTR; lpCaption:LPCSTR; uType:UINT):longint;
+
+  function MessageBoxEx(hWnd:HWND; lpText:LPCSTR; lpCaption:LPCSTR; uType:UINT; wLanguageId:WORD):longint;
+
+  function MessageBoxIndirect(_para1:LPMSGBOXPARAMS):longint;
+
+  function GetWindowLong(hWnd:HWND; nIndex:longint):LONG;
+
+  function SetWindowLong(hWnd:HWND; nIndex:longint; dwNewLong:LONG):LONG;
+
+  function GetClassLong(hWnd:HWND; nIndex:longint):DWORD;
+
+  function SetClassLong(hWnd:HWND; nIndex:longint; dwNewLong:LONG):DWORD;
+
+  function FindWindow(lpClassName:LPCSTR; lpWindowName:LPCSTR):HWND;
+
+  function FindWindowEx(_para1:HWND; _para2:HWND; _para3:LPCSTR; _para4:LPCSTR):HWND;
+
+  function GetClassName(hWnd:HWND; lpClassName:LPSTR; nMaxCount:longint):longint;
+
+  function SetWindowsHookEx(idHook:longint; lpfn:HOOKPROC; hmod:HINSTANCE; dwThreadId:DWORD):HHOOK;
+
+  function LoadBitmap(hInstance:HINSTANCE; lpBitmapName:LPCSTR):HBITMAP;
+
+  function LoadCursor(hInstance:HINSTANCE; lpCursorName:LPCSTR):HCURSOR;
+
+  function LoadCursorFromFile(lpFileName:LPCSTR):HCURSOR;
+
+  function LoadIcon(hInstance:HINSTANCE; lpIconName:LPCSTR):HICON;
+
+  function LoadImage(_para1:HINSTANCE; _para2:LPCSTR; _para3:UINT; _para4:longint; _para5:longint; 
+             _para6:UINT):HANDLE;
+
+  function LoadString(hInstance:HINSTANCE; uID:UINT; lpBuffer:LPSTR; nBufferMax:longint):longint;
+
+  function IsDialogMessage(hDlg:HWND; lpMsg:LPMSG):WINBOOL;
+
+  function DlgDirList(hDlg:HWND; lpPathSpec:LPSTR; nIDListBox:longint; nIDStaticPath:longint; uFileType:UINT):longint;
+
+  function DlgDirSelectEx(hDlg:HWND; lpString:LPSTR; nCount:longint; nIDListBox:longint):WINBOOL;
+
+  function DlgDirListComboBox(hDlg:HWND; lpPathSpec:LPSTR; nIDComboBox:longint; nIDStaticPath:longint; uFiletype:UINT):longint;
+
+  function DlgDirSelectComboBoxEx(hDlg:HWND; lpString:LPSTR; nCount:longint; nIDComboBox:longint):WINBOOL;
+
+  function DefFrameProc(hWnd:HWND; hWndMDIClient:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function DefMDIChildProc(hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CreateMDIWindow(lpClassName:LPSTR; lpWindowName:LPSTR; dwStyle:DWORD; X:longint; Y:longint; 
+             nWidth:longint; nHeight:longint; hWndParent:HWND; hInstance:HINSTANCE; lParam:LPARAM):HWND;
+
+  function WinHelp(hWndMain:HWND; lpszHelp:LPCSTR; uCommand:UINT; dwData:DWORD):WINBOOL;
+
+  function ChangeDisplaySettings(lpDevMode:LPDEVMODE; dwFlags:DWORD):LONG;
+
+  function EnumDisplaySettings(lpszDeviceName:LPCSTR; iModeNum:DWORD; lpDevMode:LPDEVMODE):WINBOOL;
+
+  function SystemParametersInfo(uiAction:UINT; uiParam:UINT; pvParam:PVOID; fWinIni:UINT):WINBOOL;
+
+  function AddFontResource(_para1:LPCSTR):longint;
+
+  function CopyMetaFile(_para1:HMETAFILE; _para2:LPCSTR):HMETAFILE;
+
+(* Const before type ignored *)
+  function CreateFontIndirect(var _para1:LOGFONT):HFONT;
+
+(* Const before type ignored *)
+  function CreateIC(_para1:LPCSTR; _para2:LPCSTR; _para3:LPCSTR; var _para4:DEVMODE):HDC;
+
+  function CreateMetaFile(_para1:LPCSTR):HDC;
+
+  function CreateScalableFontResource(_para1:DWORD; _para2:LPCSTR; _para3:LPCSTR; _para4:LPCSTR):WINBOOL;
+
+(* Const before type ignored *)
+  function DeviceCapabilities(_para1:LPCSTR; _para2:LPCSTR; _para3:WORD; _para4:LPSTR; var _para5:DEVMODE):longint;
+
+  function EnumFontFamiliesEx(_para1:HDC; _para2:LPLOGFONT; _para3:FONTENUMEXPROC; _para4:LPARAM; _para5:DWORD):longint;
+
+  function EnumFontFamilies(_para1:HDC; _para2:LPCSTR; _para3:FONTENUMPROC; _para4:LPARAM):longint;
+
+  function EnumFonts(_para1:HDC; _para2:LPCSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint;
+
+  function GetCharWidth(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL;
+
+  function GetCharWidth32(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL;
+
+  function GetCharWidthFloat(_para1:HDC; _para2:UINT; _para3:UINT; _para4:PFLOAT):WINBOOL;
+
+  function GetCharABCWidths(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABC):WINBOOL;
+
+  function GetCharABCWidthsFloat(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABCFLOAT):WINBOOL;
+
+(* Const before type ignored *)
+  function GetGlyphOutline(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPGLYPHMETRICS; _para5:DWORD; 
+             _para6:LPVOID; var _para7:MAT2):DWORD;
+
+  function GetMetaFile(_para1:LPCSTR):HMETAFILE;
+
+  function GetOutlineTextMetrics(_para1:HDC; _para2:UINT; _para3:LPOUTLINETEXTMETRIC):UINT;
+
+  function GetTextExtentPoint(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function GetTextExtentPoint32(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function GetTextExtentExPoint(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:longint; _para5:LPINT; 
+             _para6:LPINT; _para7:LPSIZE):WINBOOL;
+
+  function GetCharacterPlacement(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:longint; _para5:LPGCP_RESULTS; 
+             _para6:DWORD):DWORD;
+
+(* Const before type ignored *)
+  function ResetDC(_para1:HDC; var _para2:DEVMODE):HDC;
+
+  function RemoveFontResource(_para1:LPCSTR):WINBOOL;
+
+  function CopyEnhMetaFile(_para1:HENHMETAFILE; _para2:LPCSTR):HENHMETAFILE;
+
+(* Const before type ignored *)
+  function CreateEnhMetaFile(_para1:HDC; _para2:LPCSTR; var _para3:RECT; _para4:LPCSTR):HDC;
+
+  function GetEnhMetaFile(_para1:LPCSTR):HENHMETAFILE;
+
+  function GetEnhMetaFileDescription(_para1:HENHMETAFILE; _para2:UINT; _para3:LPSTR):UINT;
+
+  function GetTextMetrics(_para1:HDC; _para2:LPTEXTMETRIC):WINBOOL;
+
+(* Const before type ignored *)
+  function StartDoc(_para1:HDC; var _para2:DOCINFO):longint;
+
+  function GetObject(_para1:HGDIOBJ; _para2:longint; _para3:LPVOID):longint;
+
+  function TextOut(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR; _para5:longint):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ExtTextOut(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; var _para5:RECT; 
+             _para6:LPCSTR; _para7:UINT; var _para8:INT):WINBOOL;
+
+(* Const before type ignored *)
+  function PolyTextOut(_para1:HDC; var _para2:POLYTEXT; _para3:longint):WINBOOL;
+
+  function GetTextFace(_para1:HDC; _para2:longint; _para3:LPSTR):longint;
+
+  function GetKerningPairs(_para1:HDC; _para2:DWORD; _para3:LPKERNINGPAIR):DWORD;
+
+  function CreateColorSpace(_para1:LPLOGCOLORSPACE):HCOLORSPACE;
+
+  function GetLogColorSpace(_para1:HCOLORSPACE; _para2:LPLOGCOLORSPACE; _para3:DWORD):WINBOOL;
+
+  function GetICMProfile(_para1:HDC; _para2:DWORD; _para3:LPSTR):WINBOOL;
+
+  function SetICMProfile(_para1:HDC; _para2:LPSTR):WINBOOL;
+
+  function UpdateICMRegKey(_para1:DWORD; _para2:DWORD; _para3:LPSTR; _para4:UINT):WINBOOL;
+
+  function EnumICMProfiles(_para1:HDC; _para2:ICMENUMPROC; _para3:LPARAM):longint;
+
+  function PropertySheet(lppsph:LPCPROPSHEETHEADER):longint;
+
+  function ImageList_LoadImage(hi:HINSTANCE; lpbmp:LPCSTR; cx:longint; cGrow:longint; crMask:COLORREF; 
+             uType:UINT; uFlags:UINT):HIMAGELIST;
+
+  function CreateStatusWindow(style:LONG; lpszText:LPCSTR; hwndParent:HWND; wID:UINT):HWND;
+
+  procedure DrawStatusText(hDC:HDC; lprc:LPRECT; pszText:LPCSTR; uFlags:UINT);
+
+  function GetOpenFileName(_para1:LPOPENFILENAME):WINBOOL;
+
+  function GetSaveFileName(_para1:LPOPENFILENAME):WINBOOL;
+
+  function GetFileTitle(_para1:LPCSTR; _para2:LPSTR; _para3:WORD):integer;
+
+  function ChooseColor(_para1:LPCHOOSECOLOR):WINBOOL;
+
+  function FindText(_para1:LPFINDREPLACE):HWND;
+
+  function ReplaceText(_para1:LPFINDREPLACE):HWND;
+
+  function ChooseFont(_para1:LPCHOOSEFONT):WINBOOL;
+
+  function PrintDlg(_para1:LPPRINTDLG):WINBOOL;
+
+  function PageSetupDlg(_para1:LPPAGESETUPDLG):WINBOOL;
+
+  function CreateProcess(lpApplicationName:LPCSTR; lpCommandLine:LPSTR; lpProcessAttributes:LPSECURITY_ATTRIBUTES; lpThreadAttributes:LPSECURITY_ATTRIBUTES; bInheritHandles:WINBOOL; 
+             dwCreationFlags:DWORD; lpEnvironment:LPVOID; lpCurrentDirectory:LPCSTR; lpStartupInfo:LPSTARTUPINFO; lpProcessInformation:LPPROCESS_INFORMATION):WINBOOL;
+
+  procedure GetStartupInfo(lpStartupInfo:LPSTARTUPINFO);
+
+  function FindFirstFile(lpFileName:LPCSTR; lpFindFileData:LPWIN32_FIND_DATA):HANDLE;
+
+  function FindNextFile(hFindFile:HANDLE; lpFindFileData:LPWIN32_FIND_DATA):WINBOOL;
+
+  function GetVersionEx(lpVersionInformation:LPOSVERSIONINFO):WINBOOL;
+
+  { was #define dname(params) def_expr }
+  function CreateWindow(lpClassName:LPCSTR; lpWindowName:LPCSTR; dwStyle:DWORD; X:longint;
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+
+  { was #define dname(params) def_expr }
+  function CreateDialog(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogIndirect(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+
+  { was #define dname(params) def_expr }
+  function DialogBox(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxIndirect(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+
+(* Const before type ignored *)
+  function CreateDC(_para1:LPCSTR; _para2:LPCSTR; _para3:LPCSTR; var _para4:DEVMODE):HDC;
+
+  function VerInstallFile(uFlags:DWORD; szSrcFileName:LPSTR; szDestFileName:LPSTR; szSrcDir:LPSTR; szDestDir:LPSTR; 
+             szCurDir:LPSTR; szTmpFile:LPSTR; lpuTmpFileLen:PUINT):DWORD;
+
+  function GetFileVersionInfoSize(lptstrFilename:LPSTR; lpdwHandle:LPDWORD):DWORD;
+
+  function GetFileVersionInfo(lptstrFilename:LPSTR; dwHandle:DWORD; dwLen:DWORD; lpData:LPVOID):WINBOOL;
+
+  function VerLanguageName(wLang:DWORD; szLang:LPSTR; nSize:DWORD):DWORD;
+
+(* Const before type ignored *)
+  function VerQueryValue(pBlock:LPVOID; lpSubBlock:LPSTR; var lplpBuffer:LPVOID; puLen:PUINT):WINBOOL;
+
+  function VerFindFile(uFlags:DWORD; szFileName:LPSTR; szWinDir:LPSTR; szAppDir:LPSTR; szCurDir:LPSTR; 
+             lpuCurDirLen:PUINT; szDestDir:LPSTR; lpuDestDirLen:PUINT):DWORD;
+
+  function RegConnectRegistry(lpMachineName:LPSTR; hKey:HKEY; phkResult:PHKEY):LONG;
+
+  function RegCreateKey(hKey:HKEY; lpSubKey:LPCSTR; phkResult:PHKEY):LONG;
+
+  function RegCreateKeyEx(hKey:HKEY; lpSubKey:LPCSTR; Reserved:DWORD; lpClass:LPSTR; dwOptions:DWORD; 
+             samDesired:REGSAM; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; phkResult:PHKEY; lpdwDisposition:LPDWORD):LONG;
+
+  function RegDeleteKey(hKey:HKEY; lpSubKey:LPCSTR):LONG;
+
+  function RegDeleteValue(hKey:HKEY; lpValueName:LPCSTR):LONG;
+
+  function RegEnumKey(hKey:HKEY; dwIndex:DWORD; lpName:LPSTR; cbName:DWORD):LONG;
+
+  function RegEnumKeyEx(hKey:HKEY; dwIndex:DWORD; lpName:LPSTR; lpcbName:LPDWORD; lpReserved:LPDWORD; 
+             lpClass:LPSTR; lpcbClass:LPDWORD; lpftLastWriteTime:PFILETIME):LONG;
+
+  function RegEnumValue(hKey:HKEY; dwIndex:DWORD; lpValueName:LPSTR; lpcbValueName:LPDWORD; lpReserved:LPDWORD; 
+             lpType:LPDWORD; lpData:LPBYTE; lpcbData:LPDWORD):LONG;
+
+  function RegLoadKey(hKey:HKEY; lpSubKey:LPCSTR; lpFile:LPCSTR):LONG;
+
+  function RegOpenKey(hKey:HKEY; lpSubKey:LPCSTR; phkResult:PHKEY):LONG;
+
+  function RegOpenKeyEx(hKey:HKEY; lpSubKey:LPCSTR; ulOptions:DWORD; samDesired:REGSAM; phkResult:PHKEY):LONG;
+
+  function RegQueryInfoKey(hKey:HKEY; lpClass:LPSTR; lpcbClass:LPDWORD; lpReserved:LPDWORD; lpcSubKeys:LPDWORD; 
+             lpcbMaxSubKeyLen:LPDWORD; lpcbMaxClassLen:LPDWORD; lpcValues:LPDWORD; lpcbMaxValueNameLen:LPDWORD; lpcbMaxValueLen:LPDWORD; 
+             lpcbSecurityDescriptor:LPDWORD; lpftLastWriteTime:PFILETIME):LONG;
+
+  function RegQueryValue(hKey:HKEY; lpSubKey:LPCSTR; lpValue:LPSTR; lpcbValue:PLONG):LONG;
+
+  function RegQueryMultipleValues(hKey:HKEY; val_list:PVALENT; num_vals:DWORD; lpValueBuf:LPSTR; ldwTotsize:LPDWORD):LONG;
+
+  function RegQueryValueEx(hKey:HKEY; lpValueName:LPCSTR; lpReserved:LPDWORD; lpType:LPDWORD; lpData:LPBYTE; 
+             lpcbData:LPDWORD):LONG;
+
+  function RegReplaceKey(hKey:HKEY; lpSubKey:LPCSTR; lpNewFile:LPCSTR; lpOldFile:LPCSTR):LONG;
+
+  function RegRestoreKey(hKey:HKEY; lpFile:LPCSTR; dwFlags:DWORD):LONG;
+
+  function RegSaveKey(hKey:HKEY; lpFile:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):LONG;
+
+  function RegSetValue(hKey:HKEY; lpSubKey:LPCSTR; dwType:DWORD; lpData:LPCSTR; cbData:DWORD):LONG;
+
+(* Const before type ignored *)
+  function RegSetValueEx(hKey:HKEY; lpValueName:LPCSTR; Reserved:DWORD; dwType:DWORD; var lpData:BYTE; 
+             cbData:DWORD):LONG;
+
+  function RegUnLoadKey(hKey:HKEY; lpSubKey:LPCSTR):LONG;
+
+  function InitiateSystemShutdown(lpMachineName:LPSTR; lpMessage:LPSTR; dwTimeout:DWORD; bForceAppsClosed:WINBOOL; bRebootAfterShutdown:WINBOOL):WINBOOL;
+
+  function AbortSystemShutdown(lpMachineName:LPSTR):WINBOOL;
+
+  function CompareString(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCSTR; cchCount1:longint; lpString2:LPCSTR; 
+             cchCount2:longint):longint;
+
+  function LCMapString(Locale:LCID; dwMapFlags:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpDestStr:LPSTR; 
+             cchDest:longint):longint;
+
+  function GetLocaleInfo(Locale:LCID; LCType:LCTYPE; lpLCData:LPSTR; cchData:longint):longint;
+
+  function SetLocaleInfo(Locale:LCID; LCType:LCTYPE; lpLCData:LPCSTR):WINBOOL;
+
+(* Const before type ignored *)
+  function GetTimeFormat(Locale:LCID; dwFlags:DWORD; var lpTime:SYSTEMTIME; lpFormat:LPCSTR; lpTimeStr:LPSTR; 
+             cchTime:longint):longint;
+
+(* Const before type ignored *)
+  function GetDateFormat(Locale:LCID; dwFlags:DWORD; var lpDate:SYSTEMTIME; lpFormat:LPCSTR; lpDateStr:LPSTR; 
+             cchDate:longint):longint;
+
+(* Const before type ignored *)
+  function GetNumberFormat(Locale:LCID; dwFlags:DWORD; lpValue:LPCSTR; var lpFormat:NUMBERFMT; lpNumberStr:LPSTR; 
+             cchNumber:longint):longint;
+
+(* Const before type ignored *)
+  function GetCurrencyFormat(Locale:LCID; dwFlags:DWORD; lpValue:LPCSTR; var lpFormat:CURRENCYFMT; lpCurrencyStr:LPSTR; 
+             cchCurrency:longint):longint;
+
+  function EnumCalendarInfo(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL;
+
+  function EnumTimeFormats(lpTimeFmtEnumProc:TIMEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL;
+
+  function EnumDateFormats(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL;
+
+  function GetStringTypeEx(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL;
+
+  function GetStringType(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL;
+
+  function FoldString(dwMapFlags:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpDestStr:LPSTR; cchDest:longint):longint;
+
+  function EnumSystemLocales(lpLocaleEnumProc:LOCALE_ENUMPROC; dwFlags:DWORD):WINBOOL;
+
+  function EnumSystemCodePages(lpCodePageEnumProc:CODEPAGE_ENUMPROC; dwFlags:DWORD):WINBOOL;
+
+  function PeekConsoleInput(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL;
+
+  function ReadConsoleInput(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleInput(hConsoleInput:HANDLE; var lpBuffer:INPUT_RECORD; nLength:DWORD; lpNumberOfEventsWritten:LPDWORD):WINBOOL;
+
+  function ReadConsoleOutput(hConsoleOutput:HANDLE; lpBuffer:PCHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpReadRegion:PSMALL_RECT):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleOutput(hConsoleOutput:HANDLE; var lpBuffer:CHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpWriteRegion:PSMALL_RECT):WINBOOL;
+
+  function ReadConsoleOutputCharacter(hConsoleOutput:HANDLE; lpCharacter:LPSTR; nLength:DWORD; dwReadCoord:COORD; lpNumberOfCharsRead:LPDWORD):WINBOOL;
+
+  function WriteConsoleOutputCharacter(hConsoleOutput:HANDLE; lpCharacter:LPCSTR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL;
+
+  function FillConsoleOutputCharacter(hConsoleOutput:HANDLE; cCharacter:CHAR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ScrollConsoleScreenBuffer(hConsoleOutput:HANDLE; var lpScrollRectangle:SMALL_RECT; var lpClipRectangle:SMALL_RECT; dwDestinationOrigin:COORD; var lpFill:CHAR_INFO):WINBOOL;
+
+  function GetConsoleTitle(lpConsoleTitle:LPSTR; nSize:DWORD):DWORD;
+
+  function SetConsoleTitle(lpConsoleTitle:LPCSTR):WINBOOL;
+
+  function ReadConsole(hConsoleInput:HANDLE; lpBuffer:LPVOID; nNumberOfCharsToRead:DWORD; lpNumberOfCharsRead:LPDWORD; lpReserved:LPVOID):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsole(hConsoleOutput:HANDLE;lpBuffer:pointer; nNumberOfCharsToWrite:DWORD; lpNumberOfCharsWritten:LPDWORD; lpReserved:LPVOID):WINBOOL;
+
+  function WNetAddConnection(lpRemoteName:LPCSTR; lpPassword:LPCSTR; lpLocalName:LPCSTR):DWORD;
+
+  function WNetAddConnection2(lpNetResource:LPNETRESOURCE; lpPassword:LPCSTR; lpUserName:LPCSTR; dwFlags:DWORD):DWORD;
+
+  function WNetAddConnection3(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpPassword:LPCSTR; lpUserName:LPCSTR; dwFlags:DWORD):DWORD;
+
+  function WNetCancelConnection(lpName:LPCSTR; fForce:WINBOOL):DWORD;
+
+  function WNetCancelConnection2(lpName:LPCSTR; dwFlags:DWORD; fForce:WINBOOL):DWORD;
+
+  function WNetGetConnection(lpLocalName:LPCSTR; lpRemoteName:LPSTR; lpnLength:LPDWORD):DWORD;
+
+  function WNetUseConnection(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpUserID:LPCSTR; lpPassword:LPCSTR; dwFlags:DWORD; 
+             lpAccessName:LPSTR; lpBufferSize:LPDWORD; lpResult:LPDWORD):DWORD;
+
+  function WNetSetConnection(lpName:LPCSTR; dwProperties:DWORD; pvValues:LPVOID):DWORD;
+
+  function WNetConnectionDialog1(lpConnDlgStruct:LPCONNECTDLGSTRUCT):DWORD;
+
+  function WNetDisconnectDialog1(lpConnDlgStruct:LPDISCDLGSTRUCT):DWORD;
+
+  function WNetOpenEnum(dwScope:DWORD; dwType:DWORD; dwUsage:DWORD; lpNetResource:LPNETRESOURCE; lphEnum:LPHANDLE):DWORD;
+
+  function WNetEnumResource(hEnum:HANDLE; lpcCount:LPDWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetUniversalName(lpLocalPath:LPCSTR; dwInfoLevel:DWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetUser(lpName:LPCSTR; lpUserName:LPSTR; lpnLength:LPDWORD):DWORD;
+
+  function WNetGetProviderName(dwNetType:DWORD; lpProviderName:LPSTR; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetNetworkInformation(lpProvider:LPCSTR; lpNetInfoStruct:LPNETINFOSTRUCT):DWORD;
+
+  function WNetGetLastError(lpError:LPDWORD; lpErrorBuf:LPSTR; nErrorBufSize:DWORD; lpNameBuf:LPSTR; nNameBufSize:DWORD):DWORD;
+
+  function MultinetGetConnectionPerformance(lpNetResource:LPNETRESOURCE; lpNetConnectInfoStruct:LPNETCONNECTINFOSTRUCT):DWORD;
+
+  function ChangeServiceConfig(hService:SC_HANDLE; dwServiceType:DWORD; dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCSTR; 
+             lpLoadOrderGroup:LPCSTR; lpdwTagId:LPDWORD; lpDependencies:LPCSTR; lpServiceStartName:LPCSTR; lpPassword:LPCSTR; 
+             lpDisplayName:LPCSTR):WINBOOL;
+
+  function CreateService(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; lpDisplayName:LPCSTR; dwDesiredAccess:DWORD; dwServiceType:DWORD; 
+             dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCSTR; lpLoadOrderGroup:LPCSTR; lpdwTagId:LPDWORD; 
+             lpDependencies:LPCSTR; lpServiceStartName:LPCSTR; lpPassword:LPCSTR):SC_HANDLE;
+
+  function EnumDependentServices(hService:SC_HANDLE; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD; 
+             lpServicesReturned:LPDWORD):WINBOOL;
+
+  function EnumServicesStatus(hSCManager:SC_HANDLE; dwServiceType:DWORD; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; 
+             pcbBytesNeeded:LPDWORD; lpServicesReturned:LPDWORD; lpResumeHandle:LPDWORD):WINBOOL;
+
+  function GetServiceKeyName(hSCManager:SC_HANDLE; lpDisplayName:LPCSTR; lpServiceName:LPSTR; lpcchBuffer:LPDWORD):WINBOOL;
+
+  function GetServiceDisplayName(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; lpDisplayName:LPSTR; lpcchBuffer:LPDWORD):WINBOOL;
+
+  function OpenSCManager(lpMachineName:LPCSTR; lpDatabaseName:LPCSTR; dwDesiredAccess:DWORD):SC_HANDLE;
+
+  function OpenService(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; dwDesiredAccess:DWORD):SC_HANDLE;
+
+  function QueryServiceConfig(hService:SC_HANDLE; lpServiceConfig:LPQUERY_SERVICE_CONFIG; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+
+  function QueryServiceLockStatus(hSCManager:SC_HANDLE; lpLockStatus:LPQUERY_SERVICE_LOCK_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+
+  function RegisterServiceCtrlHandler(lpServiceName:LPCSTR; lpHandlerProc:LPHANDLER_FUNCTION):SERVICE_STATUS_HANDLE;
+
+  function StartServiceCtrlDispatcher(lpServiceStartTable:LPSERVICE_TABLE_ENTRY):WINBOOL;
+
+  function StartService(hService:SC_HANDLE; dwNumServiceArgs:DWORD; var lpServiceArgVectors:LPCSTR):WINBOOL;
+
+  { Extensions to OpenGL  }
+  function wglUseFontBitmaps(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD):WINBOOL;
+
+  function wglUseFontOutlines(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT; _para7:longint; _para8:LPGLYPHMETRICSFLOAT):WINBOOL;
+
+  { -------------------------------------  }
+  { From shellapi.h in old Cygnus headers  }
+  function DragQueryFile(_para1:HDROP; _para2:cardinal; var _para3:char; _para4:cardinal):cardinal;
+
+  function ExtractAssociatedIcon(_para1:HINSTANCE; var _para2:char; var _para3:WORD):HICON;
+
+(* Const before type ignored *)
+  function ExtractIcon(_para1:HINSTANCE; var _para2:char; _para3:cardinal):HICON;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function FindExecutable(var _para1:char; var _para2:char; var _para3:char):HINSTANCE;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ShellAbout(_para1:HWND; var _para2:char; var _para3:char; _para4:HICON):longint;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ShellExecute(_para1:HWND; var _para2:char; var _para3:char; var _para4:char; var _para5:char; 
+             _para6:longint):HINSTANCE;
+
+  { end of stuff from shellapi.h in old Cygnus headers  }
+  { --------------------------------------------------  }
+  { From ddeml.h in old Cygnus headers  }
+  function DdeCreateStringHandle(_para1:DWORD; var _para2:char; _para3:longint):HSZ;
+
+  function DdeInitialize(var _para1:DWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT;
+
+  function DdeQueryString(_para1:DWORD; _para2:HSZ; var _para3:char; _para4:DWORD; _para5:longint):DWORD;
+
+  { end of stuff from ddeml.h in old Cygnus headers  }
+  { -----------------------------------------------  }
+  function LogonUser(_para1:LPSTR; _para2:LPSTR; _para3:LPSTR; _para4:DWORD; _para5:DWORD; 
+             var _para6:HANDLE):WINBOOL;
+
+  function CreateProcessAsUser(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; var _para4:SECURITY_ATTRIBUTES; var _para5:SECURITY_ATTRIBUTES; 
+             _para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCTSTR; var _para10:STARTUPINFO; 
+             var _para11:PROCESS_INFORMATION):WINBOOL;
+
+{ C++ end of extern C conditionnal removed }
+  { __cplusplus  }
+{$endif}
+  { _GNU_H_WINDOWS32_ASCIIFUNCFIONSDEFAULT  }
+
+{$endif read_interface}
+
+{$ifndef windows_include_files}
+  implementation
+
+    const External_library='kernel32'; {Setup as you need!}
+
+{$endif not windows_include_files}
+
+{$ifdef read_implementation}
+
+  function GetBinaryType(lpApplicationName:LPCSTR; lpBinaryType:LPDWORD):WINBOOL; external External_library name 'GetBinaryTypeA';
+
+  function GetShortPathName(lpszLongPath:LPCSTR; lpszShortPath:LPSTR; cchBuffer:DWORD):DWORD; external External_library name 'GetShortPathNameA';
+
+  function GetEnvironmentStrings : LPSTR; external External_library name 'GetEnvironmentStringsA';
+
+  function FreeEnvironmentStrings(_para1:LPSTR):WINBOOL; external External_library name 'FreeEnvironmentStringsA';
+
+  function FormatMessage(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPSTR; 
+             nSize:DWORD; var Arguments:va_list):DWORD; external External_library name 'FormatMessageA';
+
+  function CreateMailslot(lpName:LPCSTR; nMaxMessageSize:DWORD; lReadTimeout:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE; external External_library name 'CreateMailslotA';
+
+  function lstrcmp(lpString1:LPCSTR; lpString2:LPCSTR):longint; external External_library name 'lstrcmpA';
+
+  function lstrcmpi(lpString1:LPCSTR; lpString2:LPCSTR):longint; external External_library name 'lstrcmpiA';
+
+  function lstrcpyn(lpString1:LPSTR; lpString2:LPCSTR; iMaxLength:longint):LPSTR; external External_library name 'lstrcpynA';
+
+  function lstrcpy(lpString1:LPSTR; lpString2:LPCSTR):LPSTR; external External_library name 'lstrcpyA';
+
+  function lstrcat(lpString1:LPSTR; lpString2:LPCSTR):LPSTR; external External_library name 'lstrcatA';
+
+  function lstrlen(lpString:LPCSTR):longint; external External_library name 'lstrlenA';
+
+  function CreateMutex(lpMutexAttributes:LPSECURITY_ATTRIBUTES; bInitialOwner:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'CreateMutexA';
+
+  function OpenMutex(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'OpenMutexA';
+
+  function CreateEvent(lpEventAttributes:LPSECURITY_ATTRIBUTES; bManualReset:WINBOOL; bInitialState:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'CreateEventA';
+
+  function OpenEvent(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'OpenEventA';
+
+  function CreateSemaphore(lpSemaphoreAttributes:LPSECURITY_ATTRIBUTES; lInitialCount:LONG; lMaximumCount:LONG; lpName:LPCSTR):HANDLE; external External_library name 'CreateSemaphoreA';
+
+  function OpenSemaphore(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'OpenSemaphoreA';
+
+  function CreateFileMapping(hFile:HANDLE; lpFileMappingAttributes:LPSECURITY_ATTRIBUTES; flProtect:DWORD; dwMaximumSizeHigh:DWORD; dwMaximumSizeLow:DWORD; 
+             lpName:LPCSTR):HANDLE; external External_library name 'CreateFileMappingA';
+
+  function OpenFileMapping(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'OpenFileMappingA';
+
+  function GetLogicalDriveStrings(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD; external External_library name 'GetLogicalDriveStringsA';
+
+  function LoadLibrary(lpLibFileName:LPCSTR):HINSTANCE; external External_library name 'LoadLibraryA';
+
+  function LoadLibraryEx(lpLibFileName:LPCSTR; hFile:HANDLE; dwFlags:DWORD):HINSTANCE; external External_library name 'LoadLibraryExA';
+
+  function GetModuleFileName(hModule:HINSTANCE; lpFilename:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetModuleFileNameA';
+
+  function GetModuleHandle(lpModuleName:LPCSTR):HMODULE; external External_library name 'GetModuleHandleA';
+
+  procedure FatalAppExit(uAction:UINT; lpMessageText:LPCSTR); external External_library name 'FatalAppExitA';
+
+  function GetCommandLine : LPSTR; external External_library name 'GetCommandLineA';
+
+  function GetEnvironmentVariable(lpName:LPCSTR; lpBuffer:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetEnvironmentVariableA';
+
+  function SetEnvironmentVariable(lpName:LPCSTR; lpValue:LPCSTR):WINBOOL; external External_library name 'SetEnvironmentVariableA';
+
+  function ExpandEnvironmentStrings(lpSrc:LPCSTR; lpDst:LPSTR; nSize:DWORD):DWORD; external External_library name 'ExpandEnvironmentStringsA';
+
+  procedure OutputDebugString(lpOutputString:LPCSTR); external External_library name 'OutputDebugStringA';
+
+  function FindResource(hModule:HINSTANCE; lpName:LPCSTR; lpType:LPCSTR):HRSRC; external External_library name 'FindResourceA';
+
+  function FindResourceEx(hModule:HINSTANCE; lpType:LPCSTR; lpName:LPCSTR; wLanguage:WORD):HRSRC; external External_library name 'FindResourceExA';
+
+  function EnumResourceTypes(hModule:HINSTANCE; lpEnumFunc:ENUMRESTYPEPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceTypesA';
+
+  function EnumResourceNames(hModule:HINSTANCE; lpType:LPCSTR; lpEnumFunc:ENUMRESNAMEPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceNamesA';
+
+  function EnumResourceLanguages(hModule:HINSTANCE; lpType:LPCSTR; lpName:LPCSTR; lpEnumFunc:ENUMRESLANGPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceLanguagesA';
+
+  function BeginUpdateResource(pFileName:LPCSTR; bDeleteExistingResources:WINBOOL):HANDLE; external External_library name 'BeginUpdateResourceA';
+
+  function UpdateResource(hUpdate:HANDLE; lpType:LPCSTR; lpName:LPCSTR; wLanguage:WORD; lpData:LPVOID; 
+             cbData:DWORD):WINBOOL; external External_library name 'UpdateResourceA';
+
+  function EndUpdateResource(hUpdate:HANDLE; fDiscard:WINBOOL):WINBOOL; external External_library name 'EndUpdateResourceA';
+
+  function GlobalAddAtom(lpString:LPCSTR):ATOM; external External_library name 'GlobalAddAtomA';
+
+  function GlobalFindAtom(lpString:LPCSTR):ATOM; external External_library name 'GlobalFindAtomA';
+
+  function GlobalGetAtomName(nAtom:ATOM; lpBuffer:LPSTR; nSize:longint):UINT; external External_library name 'GlobalGetAtomNameA';
+
+  function AddAtom(lpString:LPCSTR):ATOM; external External_library name 'AddAtomA';
+
+  function FindAtom(lpString:LPCSTR):ATOM; external External_library name 'FindAtomA';
+
+  function GetAtomName(nAtom:ATOM; lpBuffer:LPSTR; nSize:longint):UINT; external External_library name 'GetAtomNameA';
+
+  function GetProfileInt(lpAppName:LPCSTR; lpKeyName:LPCSTR; nDefault:INT):UINT; external External_library name 'GetProfileIntA';
+
+  function GetProfileString(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpDefault:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetProfileStringA';
+
+  function WriteProfileString(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpString:LPCSTR):WINBOOL; external External_library name 'WriteProfileStringA';
+
+  function GetProfileSection(lpAppName:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetProfileSectionA';
+
+  function WriteProfileSection(lpAppName:LPCSTR; lpString:LPCSTR):WINBOOL; external External_library name 'WriteProfileSectionA';
+
+  function GetPrivateProfileInt(lpAppName:LPCSTR; lpKeyName:LPCSTR; nDefault:INT; lpFileName:LPCSTR):UINT; external External_library name 'GetPrivateProfileIntA';
+
+  function GetPrivateProfileString(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpDefault:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD; 
+             lpFileName:LPCSTR):DWORD; external External_library name 'GetPrivateProfileStringA';
+
+  function WritePrivateProfileString(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpString:LPCSTR; lpFileName:LPCSTR):WINBOOL; external External_library name 'WritePrivateProfileStringA';
+
+  function GetPrivateProfileSection(lpAppName:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD; lpFileName:LPCSTR):DWORD; external External_library name 'GetPrivateProfileSectionA';
+
+  function WritePrivateProfileSection(lpAppName:LPCSTR; lpString:LPCSTR; lpFileName:LPCSTR):WINBOOL; external External_library name 'WritePrivateProfileSectionA';
+
+  function GetDriveType(lpRootPathName:LPCSTR):UINT; external External_library name 'GetDriveTypeA';
+
+  function GetSystemDirectory(lpBuffer:LPSTR; uSize:UINT):UINT; external External_library name 'GetSystemDirectoryA';
+
+  function GetTempPath(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD; external External_library name 'GetTempPathA';
+
+  function GetTempFileName(lpPathName:LPCSTR; lpPrefixString:LPCSTR; uUnique:UINT; lpTempFileName:LPSTR):UINT; external External_library name 'GetTempFileNameA';
+
+  function GetWindowsDirectory(lpBuffer:LPSTR; uSize:UINT):UINT; external External_library name 'GetWindowsDirectoryA';
+
+  function SetCurrentDirectory(lpPathName:LPCSTR):WINBOOL; external External_library name 'SetCurrentDirectoryA';
+
+  function GetCurrentDirectory(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD; external External_library name 'GetCurrentDirectoryA';
+
+  function GetDiskFreeSpace(lpRootPathName:LPCSTR; lpSectorsPerCluster:LPDWORD; lpBytesPerSector:LPDWORD; lpNumberOfFreeClusters:LPDWORD; lpTotalNumberOfClusters:LPDWORD):WINBOOL; external External_library name 'GetDiskFreeSpaceA';
+
+  function CreateDirectory(lpPathName:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL; external External_library name 'CreateDirectoryA';
+
+  function CreateDirectoryEx(lpTemplateDirectory:LPCSTR; lpNewDirectory:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL; external External_library name 'CreateDirectoryExA';
+
+  function RemoveDirectory(lpPathName:LPCSTR):WINBOOL; external External_library name 'RemoveDirectoryA';
+
+  function GetFullPathName(lpFileName:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR; var lpFilePart:LPSTR):DWORD; external External_library name 'GetFullPathNameA';
+
+  function DefineDosDevice(dwFlags:DWORD; lpDeviceName:LPCSTR; lpTargetPath:LPCSTR):WINBOOL; external External_library name 'DefineDosDeviceA';
+
+  function QueryDosDevice(lpDeviceName:LPCSTR; lpTargetPath:LPSTR; ucchMax:DWORD):DWORD; external External_library name 'QueryDosDeviceA';
+
+  function CreateFile(lpFileName:LPCSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD; 
+             dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE; external External_library name 'CreateFileA';
+
+  function SetFileAttributes(lpFileName:LPCSTR; dwFileAttributes:DWORD):WINBOOL; external External_library name 'SetFileAttributesA';
+
+  function GetFileAttributes(lpFileName:LPCSTR):DWORD; external External_library name 'GetFileAttributesA';
+
+  function GetCompressedFileSize(lpFileName:LPCSTR; lpFileSizeHigh:LPDWORD):DWORD; external External_library name 'GetCompressedFileSizeA';
+
+  function DeleteFile(lpFileName:LPCSTR):WINBOOL; external External_library name 'DeleteFileA';
+
+  function SearchPath(lpPath:LPCSTR; lpFileName:LPCSTR; lpExtension:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR; 
+             var lpFilePart:LPSTR):DWORD; external External_library name 'SearchPathA';
+
+  function CopyFile(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR; bFailIfExists:WINBOOL):WINBOOL; external External_library name 'CopyFileA';
+
+  function MoveFile(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR):WINBOOL; external External_library name 'MoveFileA';
+
+  function MoveFileEx(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR; dwFlags:DWORD):WINBOOL; external External_library name 'MoveFileExA';
+
+  function CreateNamedPipe(lpName:LPCSTR; dwOpenMode:DWORD; dwPipeMode:DWORD; nMaxInstances:DWORD; nOutBufferSize:DWORD; 
+             nInBufferSize:DWORD; nDefaultTimeOut:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE; external External_library name 'CreateNamedPipeA';
+
+  function GetNamedPipeHandleState(hNamedPipe:HANDLE; lpState:LPDWORD; lpCurInstances:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD; 
+             lpUserName:LPSTR; nMaxUserNameSize:DWORD):WINBOOL; external External_library name 'GetNamedPipeHandleStateA';
+
+  function CallNamedPipe(lpNamedPipeName:LPCSTR; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; nTimeOut:DWORD):WINBOOL; external External_library name 'CallNamedPipeA';
+
+  function WaitNamedPipe(lpNamedPipeName:LPCSTR; nTimeOut:DWORD):WINBOOL; external External_library name 'WaitNamedPipeA';
+
+  function SetVolumeLabel(lpRootPathName:LPCSTR; lpVolumeName:LPCSTR):WINBOOL; external External_library name 'SetVolumeLabelA';
+
+  function GetVolumeInformation(lpRootPathName:LPCSTR; lpVolumeNameBuffer:LPSTR; nVolumeNameSize:DWORD; lpVolumeSerialNumber:LPDWORD; lpMaximumComponentLength:LPDWORD; 
+             lpFileSystemFlags:LPDWORD; lpFileSystemNameBuffer:LPSTR; nFileSystemNameSize:DWORD):WINBOOL; external External_library name 'GetVolumeInformationA';
+
+  function ClearEventLog(hEventLog:HANDLE; lpBackupFileName:LPCSTR):WINBOOL; external External_library name 'ClearEventLogA';
+
+  function BackupEventLog(hEventLog:HANDLE; lpBackupFileName:LPCSTR):WINBOOL; external External_library name 'BackupEventLogA';
+
+  function OpenEventLog(lpUNCServerName:LPCSTR; lpSourceName:LPCSTR):HANDLE; external External_library name 'OpenEventLogA';
+
+  function RegisterEventSource(lpUNCServerName:LPCSTR; lpSourceName:LPCSTR):HANDLE; external External_library name 'RegisterEventSourceA';
+
+  function OpenBackupEventLog(lpUNCServerName:LPCSTR; lpFileName:LPCSTR):HANDLE; external External_library name 'OpenBackupEventLogA';
+
+  function ReadEventLog(hEventLog:HANDLE; dwReadFlags:DWORD; dwRecordOffset:DWORD; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; 
+             var pnBytesRead:DWORD; var pnMinNumberOfBytesNeeded:DWORD):WINBOOL; external External_library name 'ReadEventLogA';
+
+  function ReportEvent(hEventLog:HANDLE; wType:WORD; wCategory:WORD; dwEventID:DWORD; lpUserSid:PSID; 
+             wNumStrings:WORD; dwDataSize:DWORD; var lpStrings:LPCSTR; lpRawData:LPVOID):WINBOOL; external External_library name 'ReportEventA';
+
+  function AccessCheckAndAuditAlarm(SubsystemName:LPCSTR; HandleId:LPVOID; ObjectTypeName:LPSTR; ObjectName:LPSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL; external External_library name 'AccessCheckAndAuditAlarmA';
+
+  function ObjectOpenAuditAlarm(SubsystemName:LPCSTR; HandleId:LPVOID; ObjectTypeName:LPSTR; ObjectName:LPSTR; pSecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             ClientToken:HANDLE; DesiredAccess:DWORD; GrantedAccess:DWORD; Privileges:PPRIVILEGE_SET; ObjectCreation:WINBOOL; 
+             AccessGranted:WINBOOL; GenerateOnClose:LPBOOL):WINBOOL; external External_library name 'ObjectOpenAuditAlarmA';
+
+  function ObjectPrivilegeAuditAlarm(SubsystemName:LPCSTR; HandleId:LPVOID; ClientToken:HANDLE; DesiredAccess:DWORD; Privileges:PPRIVILEGE_SET; 
+             AccessGranted:WINBOOL):WINBOOL; external External_library name 'ObjectPrivilegeAuditAlarmA';
+
+  function ObjectCloseAuditAlarm(SubsystemName:LPCSTR; HandleId:LPVOID; GenerateOnClose:WINBOOL):WINBOOL; external External_library name 'ObjectCloseAuditAlarmA';
+
+  function PrivilegedServiceAuditAlarm(SubsystemName:LPCSTR; ServiceName:LPCSTR; ClientToken:HANDLE; Privileges:PPRIVILEGE_SET; AccessGranted:WINBOOL):WINBOOL; external External_library name 'PrivilegedServiceAuditAlarmA';
+
+  function SetFileSecurity(lpFileName:LPCSTR; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL; external External_library name 'SetFileSecurityA';
+
+  function GetFileSecurity(lpFileName:LPCSTR; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetFileSecurityA';
+
+  function FindFirstChangeNotification(lpPathName:LPCSTR; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD):HANDLE; external External_library name 'FindFirstChangeNotificationA';
+
+  function IsBadStringPtr(lpsz:LPCSTR; ucchMax:UINT):WINBOOL; external External_library name 'IsBadStringPtrA';
+
+  function LookupAccountSid(lpSystemName:LPCSTR; Sid:PSID; Name:LPSTR; cbName:LPDWORD; ReferencedDomainName:LPSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL; external External_library name 'LookupAccountSidA';
+
+  function LookupAccountName(lpSystemName:LPCSTR; lpAccountName:LPCSTR; Sid:PSID; cbSid:LPDWORD; ReferencedDomainName:LPSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL; external External_library name 'LookupAccountNameA';
+
+  function LookupPrivilegeValue(lpSystemName:LPCSTR; lpName:LPCSTR; lpLuid:PLUID):WINBOOL; external External_library name 'LookupPrivilegeValueA';
+
+  function LookupPrivilegeName(lpSystemName:LPCSTR; lpLuid:PLUID; lpName:LPSTR; cbName:LPDWORD):WINBOOL; external External_library name 'LookupPrivilegeNameA';
+
+  function LookupPrivilegeDisplayName(lpSystemName:LPCSTR; lpName:LPCSTR; lpDisplayName:LPSTR; cbDisplayName:LPDWORD; lpLanguageId:LPDWORD):WINBOOL; external External_library name 'LookupPrivilegeDisplayNameA';
+
+  function BuildCommDCB(lpDef:LPCSTR; lpDCB:LPDCB):WINBOOL; external External_library name 'BuildCommDCBA';
+
+  function BuildCommDCBAndTimeouts(lpDef:LPCSTR; lpDCB:LPDCB; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL; external External_library name 'BuildCommDCBAndTimeoutsA';
+
+  function CommConfigDialog(lpszName:LPCSTR; hWnd:HWND; lpCC:LPCOMMCONFIG):WINBOOL; external External_library name 'CommConfigDialogA';
+
+  function GetDefaultCommConfig(lpszName:LPCSTR; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL; external External_library name 'GetDefaultCommConfigA';
+
+  function SetDefaultCommConfig(lpszName:LPCSTR; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL; external External_library name 'SetDefaultCommConfigA';
+
+  function GetComputerName(lpBuffer:LPSTR; nSize:LPDWORD):WINBOOL; external External_library name 'GetComputerNameA';
+
+  function SetComputerName(lpComputerName:LPCSTR):WINBOOL; external External_library name 'SetComputerNameA';
+
+  function GetUserName(lpBuffer:LPSTR; nSize:LPDWORD):WINBOOL; external External_library name 'GetUserNameA';
+
+  function wvsprintf(_para1:LPSTR; _para2:LPCSTR; arglist:va_list):longint; external External_library name 'wvsprintfA';
+
+(*  function wsprintf(_para1:LPSTR; _para2:LPCSTR; ...):longint;CDECL; external External_library name 'wsprintfA';
+  not implemented *)
+  
+  function LoadKeyboardLayout(pwszKLID:LPCSTR; Flags:UINT):HKL; external External_library name 'LoadKeyboardLayoutA';
+
+  function GetKeyboardLayoutName(pwszKLID:LPSTR):WINBOOL; external External_library name 'GetKeyboardLayoutNameA';
+
+  function CreateDesktop(lpszDesktop:LPSTR; lpszDevice:LPSTR; pDevmode:LPDEVMODE; dwFlags:DWORD; dwDesiredAccess:DWORD; 
+             lpsa:LPSECURITY_ATTRIBUTES):HDESK; external External_library name 'CreateDesktopA';
+
+  function OpenDesktop(lpszDesktop:LPSTR; dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK; external External_library name 'OpenDesktopA';
+
+  function EnumDesktops(hwinsta:HWINSTA; lpEnumFunc:DESKTOPENUMPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumDesktopsA';
+
+  function CreateWindowStation(lpwinsta:LPSTR; dwReserved:DWORD; dwDesiredAccess:DWORD; lpsa:LPSECURITY_ATTRIBUTES):HWINSTA; external External_library name 'CreateWindowStationA';
+
+  function OpenWindowStation(lpszWinSta:LPSTR; fInherit:WINBOOL; dwDesiredAccess:DWORD):HWINSTA; external External_library name 'OpenWindowStationA';
+
+  function EnumWindowStations(lpEnumFunc:ENUMWINDOWSTATIONPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumWindowStationsA';
+
+  function GetUserObjectInformation(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetUserObjectInformationA';
+
+  function SetUserObjectInformation(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD):WINBOOL; external External_library name 'SetUserObjectInformationA';
+
+  function RegisterWindowMessage(lpString:LPCSTR):UINT; external External_library name 'RegisterWindowMessageA';
+
+  function GetMessage(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT):WINBOOL; external External_library name 'GetMessageA';
+
+  function DispatchMessage(var lpMsg:MSG):LONG; external External_library name 'DispatchMessageA';
+
+  function PeekMessage(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT; wRemoveMsg:UINT):WINBOOL; external External_library name 'PeekMessageA';
+
+  function SendMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'SendMessageA';
+
+  function SendMessageTimeout(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; fuFlags:UINT; 
+             uTimeout:UINT; lpdwResult:LPDWORD):LRESULT; external External_library name 'SendMessageTimeoutA';
+
+  function SendNotifyMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'SendNotifyMessageA';
+
+  function SendMessageCallback(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; lpResultCallBack:SENDASYNCPROC; 
+             dwData:DWORD):WINBOOL; external External_library name 'SendMessageCallbackA';
+
+  function PostMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'PostMessageA';
+
+  function PostThreadMessage(idThread:DWORD; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'PostThreadMessageA';
+
+  function DefWindowProc(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefWindowProcA';
+
+  function CallWindowProc(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'CallWindowProcA';
+
+  function RegisterClass(var lpWndClass:WNDCLASS):ATOM; external External_library name 'RegisterClassA';
+
+  function UnregisterClass(lpClassName:LPCSTR; hInstance:HINSTANCE):WINBOOL; external External_library name 'UnregisterClassA';
+
+  function GetClassInfo(hInstance:HINSTANCE; lpClassName:LPCSTR; lpWndClass:LPWNDCLASS):WINBOOL; external External_library name 'GetClassInfoA';
+
+  function RegisterClassEx(var _para1:WNDCLASSEX):ATOM; external External_library name 'RegisterClassExA';
+
+  function GetClassInfoEx(_para1:HINSTANCE; _para2:LPCSTR; _para3:LPWNDCLASSEX):WINBOOL; external External_library name 'GetClassInfoExA';
+
+  function CreateWindowEx(dwExStyle:DWORD; lpClassName:LPCSTR; lpWindowName:LPCSTR; dwStyle:DWORD; X:longint; 
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND; external External_library name 'CreateWindowExA';
+
+  function CreateDialogParam(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND; external External_library name 'CreateDialogParamA';
+
+  function CreateDialogIndirectParam(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND; external External_library name 'CreateDialogIndirectParamA';
+
+  function DialogBoxParam(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint; external External_library name 'DialogBoxParamA';
+
+  function DialogBoxIndirectParam(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint; external External_library name 'DialogBoxIndirectParamA';
+
+  function SetDlgItemText(hDlg:HWND; nIDDlgItem:longint; lpString:LPCSTR):WINBOOL; external External_library name 'SetDlgItemTextA';
+
+  function GetDlgItemText(hDlg:HWND; nIDDlgItem:longint; lpString:LPSTR; nMaxCount:longint):UINT; external External_library name 'GetDlgItemTextA';
+
+  function SendDlgItemMessage(hDlg:HWND; nIDDlgItem:longint; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LONG; external External_library name 'SendDlgItemMessageA';
+
+  function DefDlgProc(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefDlgProcA';
+
+  function CallMsgFilter(lpMsg:LPMSG; nCode:longint):WINBOOL; external External_library name 'CallMsgFilterA';
+
+  function RegisterClipboardFormat(lpszFormat:LPCSTR):UINT; external External_library name 'RegisterClipboardFormatA';
+
+  function GetClipboardFormatName(format:UINT; lpszFormatName:LPSTR; cchMaxCount:longint):longint; external External_library name 'GetClipboardFormatNameA';
+
+  function CharToOem(lpszSrc:LPCSTR; lpszDst:LPSTR):WINBOOL; external External_library name 'CharToOemA';
+
+  function OemToChar(lpszSrc:LPCSTR; lpszDst:LPSTR):WINBOOL; external External_library name 'OemToCharA';
+
+  function CharToOemBuff(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL; external External_library name 'CharToOemBuffA';
+
+  function OemToCharBuff(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL; external External_library name 'OemToCharBuffA';
+
+  function CharUpper(lpsz:LPSTR):LPSTR; external External_library name 'CharUpperA';
+
+  function CharUpperBuff(lpsz:LPSTR; cchLength:DWORD):DWORD; external External_library name 'CharUpperBuffA';
+
+  function CharLower(lpsz:LPSTR):LPSTR; external External_library name 'CharLowerA';
+
+  function CharLowerBuff(lpsz:LPSTR; cchLength:DWORD):DWORD; external External_library name 'CharLowerBuffA';
+
+  function CharNext(lpsz:LPCSTR):LPSTR; external External_library name 'CharNextA';
+
+  function CharPrev(lpszStart:LPCSTR; lpszCurrent:LPCSTR):LPSTR; external External_library name 'CharPrevA';
+
+  function IsCharAlpha(ch:CHAR):WINBOOL; external External_library name 'IsCharAlphaA';
+
+  function IsCharAlphaNumeric(ch:CHAR):WINBOOL; external External_library name 'IsCharAlphaNumericA';
+
+  function IsCharUpper(ch:CHAR):WINBOOL; external External_library name 'IsCharUpperA';
+
+  function IsCharLower(ch:CHAR):WINBOOL; external External_library name 'IsCharLowerA';
+
+  function GetKeyNameText(lParam:LONG; lpString:LPSTR; nSize:longint):longint; external External_library name 'GetKeyNameTextA';
+
+  function VkKeyScan(ch:CHAR):SHORT; external External_library name 'VkKeyScanA';
+
+  function VkKeyScanEx(ch:CHAR; dwhkl:HKL):SHORT; external External_library name 'VkKeyScanExA';
+
+  function MapVirtualKey(uCode:UINT; uMapType:UINT):UINT; external External_library name 'MapVirtualKeyA';
+
+  function MapVirtualKeyEx(uCode:UINT; uMapType:UINT; dwhkl:HKL):UINT; external External_library name 'MapVirtualKeyExA';
+
+  function LoadAccelerators(hInstance:HINSTANCE; lpTableName:LPCSTR):HACCEL; external External_library name 'LoadAcceleratorsA';
+
+  function CreateAcceleratorTable(_para1:LPACCEL; _para2:longint):HACCEL; external External_library name 'CreateAcceleratorTableA';
+
+  function CopyAcceleratorTable(hAccelSrc:HACCEL; lpAccelDst:LPACCEL; cAccelEntries:longint):longint; external External_library name 'CopyAcceleratorTableA';
+
+  function TranslateAccelerator(hWnd:HWND; hAccTable:HACCEL; lpMsg:LPMSG):longint; external External_library name 'TranslateAcceleratorA';
+
+  function LoadMenu(hInstance:HINSTANCE; lpMenuName:LPCSTR):HMENU; external External_library name 'LoadMenuA';
+
+  function LoadMenuIndirect(var lpMenuTemplate:MENUTEMPLATE):HMENU; external External_library name 'LoadMenuIndirectA';
+
+  function ChangeMenu(hMenu:HMENU; cmd:UINT; lpszNewItem:LPCSTR; cmdInsert:UINT; flags:UINT):WINBOOL; external External_library name 'ChangeMenuA';
+
+  function GetMenuString(hMenu:HMENU; uIDItem:UINT; lpString:LPSTR; nMaxCount:longint; uFlag:UINT):longint; external External_library name 'GetMenuStringA';
+
+  function InsertMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL; external External_library name 'InsertMenuA';
+
+  function AppendMenu(hMenu:HMENU; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL; external External_library name 'AppendMenuA';
+
+  function ModifyMenu(hMnu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL; external External_library name 'ModifyMenuA';
+
+  function InsertMenuItem(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL; external External_library name 'InsertMenuItemA';
+
+  function GetMenuItemInfo(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPMENUITEMINFO):WINBOOL; external External_library name 'GetMenuItemInfoA';
+
+  function SetMenuItemInfo(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL; external External_library name 'SetMenuItemInfoA';
+
+  function DrawText(hDC:HDC; lpString:LPCSTR; nCount:longint; lpRect:LPRECT; uFormat:UINT):longint; external External_library name 'DrawTextA';
+
+  function DrawTextEx(_para1:HDC; _para2:LPSTR; _para3:longint; _para4:LPRECT; _para5:UINT; 
+             _para6:LPDRAWTEXTPARAMS):longint; external External_library name 'DrawTextExA';
+
+  function GrayString(hDC:HDC; hBrush:HBRUSH; lpOutputFunc:GRAYSTRINGPROC; lpData:LPARAM; nCount:longint; 
+             X:longint; Y:longint; nWidth:longint; nHeight:longint):WINBOOL; external External_library name 'GrayStringA';
+
+  function DrawState(_para1:HDC; _para2:HBRUSH; _para3:DRAWSTATEPROC; _para4:LPARAM; _para5:WPARAM; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:UINT):WINBOOL; external External_library name 'DrawStateA';
+
+  function TabbedTextOut(hDC:HDC; X:longint; Y:longint; lpString:LPCSTR; nCount:longint; 
+             nTabPositions:longint; lpnTabStopPositions:LPINT; nTabOrigin:longint):LONG; external External_library name 'TabbedTextOutA';
+
+  function GetTabbedTextExtent(hDC:HDC; lpString:LPCSTR; nCount:longint; nTabPositions:longint; lpnTabStopPositions:LPINT):DWORD; external External_library name 'GetTabbedTextExtentA';
+
+  function SetProp(hWnd:HWND; lpString:LPCSTR; hData:HANDLE):WINBOOL; external External_library name 'SetPropA';
+
+  function GetProp(hWnd:HWND; lpString:LPCSTR):HANDLE; external External_library name 'GetPropA';
+
+  function RemoveProp(hWnd:HWND; lpString:LPCSTR):HANDLE; external External_library name 'RemovePropA';
+
+  function EnumPropsEx(hWnd:HWND; lpEnumFunc:PROPENUMPROCEX; lParam:LPARAM):longint; external External_library name 'EnumPropsExA';
+
+  function EnumProps(hWnd:HWND; lpEnumFunc:PROPENUMPROC):longint; external External_library name 'EnumPropsA';
+
+  function SetWindowText(hWnd:HWND; lpString:LPCSTR):WINBOOL; external External_library name 'SetWindowTextA';
+
+  function GetWindowText(hWnd:HWND; lpString:LPSTR; nMaxCount:longint):longint; external External_library name 'GetWindowTextA';
+
+  function GetWindowTextLength(hWnd:HWND):longint; external External_library name 'GetWindowTextLengthA';
+
+  function MessageBox(hWnd:HWND; lpText:LPCSTR; lpCaption:LPCSTR; uType:UINT):longint; external External_library name 'MessageBoxA';
+
+  function MessageBoxEx(hWnd:HWND; lpText:LPCSTR; lpCaption:LPCSTR; uType:UINT; wLanguageId:WORD):longint; external External_library name 'MessageBoxExA';
+
+  function MessageBoxIndirect(_para1:LPMSGBOXPARAMS):longint; external External_library name 'MessageBoxIndirectA';
+
+  function GetWindowLong(hWnd:HWND; nIndex:longint):LONG; external External_library name 'GetWindowLongA';
+
+  function SetWindowLong(hWnd:HWND; nIndex:longint; dwNewLong:LONG):LONG; external External_library name 'SetWindowLongA';
+
+  function GetClassLong(hWnd:HWND; nIndex:longint):DWORD; external External_library name 'GetClassLongA';
+
+  function SetClassLong(hWnd:HWND; nIndex:longint; dwNewLong:LONG):DWORD; external External_library name 'SetClassLongA';
+
+  function FindWindow(lpClassName:LPCSTR; lpWindowName:LPCSTR):HWND; external External_library name 'FindWindowA';
+
+  function FindWindowEx(_para1:HWND; _para2:HWND; _para3:LPCSTR; _para4:LPCSTR):HWND; external External_library name 'FindWindowExA';
+
+  function GetClassName(hWnd:HWND; lpClassName:LPSTR; nMaxCount:longint):longint; external External_library name 'GetClassNameA';
+
+  function SetWindowsHookEx(idHook:longint; lpfn:HOOKPROC; hmod:HINSTANCE; dwThreadId:DWORD):HHOOK; external External_library name 'SetWindowsHookExA';
+
+  function LoadBitmap(hInstance:HINSTANCE; lpBitmapName:LPCSTR):HBITMAP; external External_library name 'LoadBitmapA';
+
+  function LoadCursor(hInstance:HINSTANCE; lpCursorName:LPCSTR):HCURSOR; external External_library name 'LoadCursorA';
+
+  function LoadCursorFromFile(lpFileName:LPCSTR):HCURSOR; external External_library name 'LoadCursorFromFileA';
+
+  function LoadIcon(hInstance:HINSTANCE; lpIconName:LPCSTR):HICON; external External_library name 'LoadIconA';
+
+  function LoadImage(_para1:HINSTANCE; _para2:LPCSTR; _para3:UINT; _para4:longint; _para5:longint; 
+             _para6:UINT):HANDLE; external External_library name 'LoadImageA';
+
+  function LoadString(hInstance:HINSTANCE; uID:UINT; lpBuffer:LPSTR; nBufferMax:longint):longint; external External_library name 'LoadStringA';
+
+  function IsDialogMessage(hDlg:HWND; lpMsg:LPMSG):WINBOOL; external External_library name 'IsDialogMessageA';
+
+  function DlgDirList(hDlg:HWND; lpPathSpec:LPSTR; nIDListBox:longint; nIDStaticPath:longint; uFileType:UINT):longint; external External_library name 'DlgDirListA';
+
+  function DlgDirSelectEx(hDlg:HWND; lpString:LPSTR; nCount:longint; nIDListBox:longint):WINBOOL; external External_library name 'DlgDirSelectExA';
+
+  function DlgDirListComboBox(hDlg:HWND; lpPathSpec:LPSTR; nIDComboBox:longint; nIDStaticPath:longint; uFiletype:UINT):longint; external External_library name 'DlgDirListComboBoxA';
+
+  function DlgDirSelectComboBoxEx(hDlg:HWND; lpString:LPSTR; nCount:longint; nIDComboBox:longint):WINBOOL; external External_library name 'DlgDirSelectComboBoxExA';
+
+  function DefFrameProc(hWnd:HWND; hWndMDIClient:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefFrameProcA';
+
+  function DefMDIChildProc(hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefMDIChildProcA';
+
+  function CreateMDIWindow(lpClassName:LPSTR; lpWindowName:LPSTR; dwStyle:DWORD; X:longint; Y:longint; 
+             nWidth:longint; nHeight:longint; hWndParent:HWND; hInstance:HINSTANCE; lParam:LPARAM):HWND; external External_library name 'CreateMDIWindowA';
+
+  function WinHelp(hWndMain:HWND; lpszHelp:LPCSTR; uCommand:UINT; dwData:DWORD):WINBOOL; external External_library name 'WinHelpA';
+
+  function ChangeDisplaySettings(lpDevMode:LPDEVMODE; dwFlags:DWORD):LONG; external External_library name 'ChangeDisplaySettingsA';
+
+  function EnumDisplaySettings(lpszDeviceName:LPCSTR; iModeNum:DWORD; lpDevMode:LPDEVMODE):WINBOOL; external External_library name 'EnumDisplaySettingsA';
+
+  function SystemParametersInfo(uiAction:UINT; uiParam:UINT; pvParam:PVOID; fWinIni:UINT):WINBOOL; external External_library name 'SystemParametersInfoA';
+
+  function AddFontResource(_para1:LPCSTR):longint; external External_library name 'AddFontResourceA';
+
+  function CopyMetaFile(_para1:HMETAFILE; _para2:LPCSTR):HMETAFILE; external External_library name 'CopyMetaFileA';
+
+  function CreateFontIndirect(var _para1:LOGFONT):HFONT; external External_library name 'CreateFontIndirectA';
+
+  function CreateIC(_para1:LPCSTR; _para2:LPCSTR; _para3:LPCSTR; var _para4:DEVMODE):HDC; external External_library name 'CreateICA';
+
+  function CreateMetaFile(_para1:LPCSTR):HDC; external External_library name 'CreateMetaFileA';
+
+  function CreateScalableFontResource(_para1:DWORD; _para2:LPCSTR; _para3:LPCSTR; _para4:LPCSTR):WINBOOL; external External_library name 'CreateScalableFontResourceA';
+
+  function DeviceCapabilities(_para1:LPCSTR; _para2:LPCSTR; _para3:WORD; _para4:LPSTR; var _para5:DEVMODE):longint; external External_library name 'DeviceCapabilitiesA';
+
+  function EnumFontFamiliesEx(_para1:HDC; _para2:LPLOGFONT; _para3:FONTENUMEXPROC; _para4:LPARAM; _para5:DWORD):longint; external External_library name 'EnumFontFamiliesExA';
+
+  function EnumFontFamilies(_para1:HDC; _para2:LPCSTR; _para3:FONTENUMPROC; _para4:LPARAM):longint; external External_library name 'EnumFontFamiliesA';
+
+  function EnumFonts(_para1:HDC; _para2:LPCSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external External_library name 'EnumFontsA';
+
+  function GetCharWidth(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL; external External_library name 'GetCharWidthA';
+
+  function GetCharWidth32(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL; external External_library name 'GetCharWidth32A';
+
+  function GetCharWidthFloat(_para1:HDC; _para2:UINT; _para3:UINT; _para4:PFLOAT):WINBOOL; external External_library name 'GetCharWidthFloatA';
+
+  function GetCharABCWidths(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABC):WINBOOL; external External_library name 'GetCharABCWidthsA';
+
+  function GetCharABCWidthsFloat(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABCFLOAT):WINBOOL; external External_library name 'GetCharABCWidthsFloatA';
+
+  function GetGlyphOutline(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPGLYPHMETRICS; _para5:DWORD; 
+             _para6:LPVOID; var _para7:MAT2):DWORD; external External_library name 'GetGlyphOutlineA';
+
+  function GetMetaFile(_para1:LPCSTR):HMETAFILE; external External_library name 'GetMetaFileA';
+
+  function GetOutlineTextMetrics(_para1:HDC; _para2:UINT; _para3:LPOUTLINETEXTMETRIC):UINT; external External_library name 'GetOutlineTextMetricsA';
+
+  function GetTextExtentPoint(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'GetTextExtentPointA';
+
+  function GetTextExtentPoint32(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'GetTextExtentPoint32A';
+
+  function GetTextExtentExPoint(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:longint; _para5:LPINT; 
+             _para6:LPINT; _para7:LPSIZE):WINBOOL; external External_library name 'GetTextExtentExPointA';
+
+  function GetCharacterPlacement(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:longint; _para5:LPGCP_RESULTS; 
+             _para6:DWORD):DWORD; external External_library name 'GetCharacterPlacementA';
+
+  function ResetDC(_para1:HDC; var _para2:DEVMODE):HDC; external External_library name 'ResetDCA';
+
+  function RemoveFontResource(_para1:LPCSTR):WINBOOL; external External_library name 'RemoveFontResourceA';
+
+  function CopyEnhMetaFile(_para1:HENHMETAFILE; _para2:LPCSTR):HENHMETAFILE; external External_library name 'CopyEnhMetaFileA';
+
+  function CreateEnhMetaFile(_para1:HDC; _para2:LPCSTR; var _para3:RECT; _para4:LPCSTR):HDC; external External_library name 'CreateEnhMetaFileA';
+
+  function GetEnhMetaFile(_para1:LPCSTR):HENHMETAFILE; external External_library name 'GetEnhMetaFileA';
+
+  function GetEnhMetaFileDescription(_para1:HENHMETAFILE; _para2:UINT; _para3:LPSTR):UINT; external External_library name 'GetEnhMetaFileDescriptionA';
+
+  function GetTextMetrics(_para1:HDC; _para2:LPTEXTMETRIC):WINBOOL; external External_library name 'GetTextMetricsA';
+
+  function StartDoc(_para1:HDC; var _para2:DOCINFO):longint; external External_library name 'StartDocA';
+
+  function GetObject(_para1:HGDIOBJ; _para2:longint; _para3:LPVOID):longint; external External_library name 'GetObjectA';
+
+  function TextOut(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR; _para5:longint):WINBOOL; external External_library name 'TextOutA';
+
+  function ExtTextOut(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; var _para5:RECT; 
+             _para6:LPCSTR; _para7:UINT; var _para8:INT):WINBOOL; external External_library name 'ExtTextOutA';
+
+  function PolyTextOut(_para1:HDC; var _para2:POLYTEXT; _para3:longint):WINBOOL; external External_library name 'PolyTextOutA';
+
+  function GetTextFace(_para1:HDC; _para2:longint; _para3:LPSTR):longint; external External_library name 'GetTextFaceA';
+
+  function GetKerningPairs(_para1:HDC; _para2:DWORD; _para3:LPKERNINGPAIR):DWORD; external External_library name 'GetKerningPairsA';
+
+  function CreateColorSpace(_para1:LPLOGCOLORSPACE):HCOLORSPACE; external External_library name 'CreateColorSpaceA';
+
+  function GetLogColorSpace(_para1:HCOLORSPACE; _para2:LPLOGCOLORSPACE; _para3:DWORD):WINBOOL; external External_library name 'GetLogColorSpaceA';
+
+  function GetICMProfile(_para1:HDC; _para2:DWORD; _para3:LPSTR):WINBOOL; external External_library name 'GetICMProfileA';
+
+  function SetICMProfile(_para1:HDC; _para2:LPSTR):WINBOOL; external External_library name 'SetICMProfileA';
+
+  function UpdateICMRegKey(_para1:DWORD; _para2:DWORD; _para3:LPSTR; _para4:UINT):WINBOOL; external External_library name 'UpdateICMRegKeyA';
+
+  function EnumICMProfiles(_para1:HDC; _para2:ICMENUMPROC; _para3:LPARAM):longint; external External_library name 'EnumICMProfilesA';
+
+  function PropertySheet(lppsph:LPCPROPSHEETHEADER):longint; external External_library name 'PropertySheetA';
+
+  function ImageList_LoadImage(hi:HINSTANCE; lpbmp:LPCSTR; cx:longint; cGrow:longint; crMask:COLORREF; 
+             uType:UINT; uFlags:UINT):HIMAGELIST; external External_library name 'ImageList_LoadImageA';
+
+  function CreateStatusWindow(style:LONG; lpszText:LPCSTR; hwndParent:HWND; wID:UINT):HWND; external External_library name 'CreateStatusWindowA';
+
+  procedure DrawStatusText(hDC:HDC; lprc:LPRECT; pszText:LPCSTR; uFlags:UINT); external External_library name 'DrawStatusTextA';
+
+  function GetOpenFileName(_para1:LPOPENFILENAME):WINBOOL; external External_library name 'GetOpenFileNameA';
+
+  function GetSaveFileName(_para1:LPOPENFILENAME):WINBOOL; external External_library name 'GetSaveFileNameA';
+
+  function GetFileTitle(_para1:LPCSTR; _para2:LPSTR; _para3:WORD):integer; external External_library name 'GetFileTitleA';
+
+  function ChooseColor(_para1:LPCHOOSECOLOR):WINBOOL; external External_library name 'ChooseColorA';
+
+  function FindText(_para1:LPFINDREPLACE):HWND; external External_library name 'FindTextA';
+
+  function ReplaceText(_para1:LPFINDREPLACE):HWND; external External_library name 'ReplaceTextA';
+
+  function ChooseFont(_para1:LPCHOOSEFONT):WINBOOL; external External_library name 'ChooseFontA';
+
+  function PrintDlg(_para1:LPPRINTDLG):WINBOOL; external External_library name 'PrintDlgA';
+
+  function PageSetupDlg(_para1:LPPAGESETUPDLG):WINBOOL; external External_library name 'PageSetupDlgA';
+
+  function CreateProcess(lpApplicationName:LPCSTR; lpCommandLine:LPSTR; lpProcessAttributes:LPSECURITY_ATTRIBUTES; lpThreadAttributes:LPSECURITY_ATTRIBUTES; bInheritHandles:WINBOOL; 
+             dwCreationFlags:DWORD; lpEnvironment:LPVOID; lpCurrentDirectory:LPCSTR; lpStartupInfo:LPSTARTUPINFO; lpProcessInformation:LPPROCESS_INFORMATION):WINBOOL; external External_library name 'CreateProcessA';
+
+  procedure GetStartupInfo(lpStartupInfo:LPSTARTUPINFO); external External_library name 'GetStartupInfoA';
+
+  function FindFirstFile(lpFileName:LPCSTR; lpFindFileData:LPWIN32_FIND_DATA):HANDLE; external External_library name 'FindFirstFileA';
+
+  function FindNextFile(hFindFile:HANDLE; lpFindFileData:LPWIN32_FIND_DATA):WINBOOL; external External_library name 'FindNextFileA';
+
+  function GetVersionEx(lpVersionInformation:LPOSVERSIONINFO):WINBOOL; external External_library name 'GetVersionExA';
+
+  { was #define dname(params) def_expr }
+  function CreateWindow(lpClassName:LPCSTR; lpWindowName:LPCSTR; dwStyle:DWORD; X:longint;
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+    begin
+       CreateWindow:=CreateWindowExA(0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam);
+    end;
+
+  { was #define dname(params) def_expr }
+  function CreateDialog(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+    begin
+       CreateDialog:=CreateDialogParamA(hInstance,lpTemplateName,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogIndirect(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+    begin
+       CreateDialogIndirect:=CreateDialogIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function DialogBox(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+    begin
+       DialogBox:=DialogBoxParamA(hInstance,lpTemplateName,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxIndirect(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+    begin
+       DialogBoxIndirect:=DialogBoxIndirectParamA(hInstance,hDialogTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  function CreateDC(_para1:LPCSTR; _para2:LPCSTR; _para3:LPCSTR; var _para4:DEVMODE):HDC; external External_library name 'CreateDCA';
+
+  function VerInstallFile(uFlags:DWORD; szSrcFileName:LPSTR; szDestFileName:LPSTR; szSrcDir:LPSTR; szDestDir:LPSTR; 
+             szCurDir:LPSTR; szTmpFile:LPSTR; lpuTmpFileLen:PUINT):DWORD; external External_library name 'VerInstallFileA';
+
+  function GetFileVersionInfoSize(lptstrFilename:LPSTR; lpdwHandle:LPDWORD):DWORD; external External_library name 'GetFileVersionInfoSizeA';
+
+  function GetFileVersionInfo(lptstrFilename:LPSTR; dwHandle:DWORD; dwLen:DWORD; lpData:LPVOID):WINBOOL; external External_library name 'GetFileVersionInfoA';
+
+  function VerLanguageName(wLang:DWORD; szLang:LPSTR; nSize:DWORD):DWORD; external External_library name 'VerLanguageNameA';
+
+  function VerQueryValue(pBlock:LPVOID; lpSubBlock:LPSTR; var lplpBuffer:LPVOID; puLen:PUINT):WINBOOL; external External_library name 'VerQueryValueA';
+
+  function VerFindFile(uFlags:DWORD; szFileName:LPSTR; szWinDir:LPSTR; szAppDir:LPSTR; szCurDir:LPSTR; 
+             lpuCurDirLen:PUINT; szDestDir:LPSTR; lpuDestDirLen:PUINT):DWORD; external External_library name 'VerFindFileA';
+
+  function RegConnectRegistry(lpMachineName:LPSTR; hKey:HKEY; phkResult:PHKEY):LONG; external External_library name 'RegConnectRegistryA';
+
+  function RegCreateKey(hKey:HKEY; lpSubKey:LPCSTR; phkResult:PHKEY):LONG; external External_library name 'RegCreateKeyA';
+
+  function RegCreateKeyEx(hKey:HKEY; lpSubKey:LPCSTR; Reserved:DWORD; lpClass:LPSTR; dwOptions:DWORD; 
+             samDesired:REGSAM; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; phkResult:PHKEY; lpdwDisposition:LPDWORD):LONG; external External_library name 'RegCreateKeyExA';
+
+  function RegDeleteKey(hKey:HKEY; lpSubKey:LPCSTR):LONG; external External_library name 'RegDeleteKeyA';
+
+  function RegDeleteValue(hKey:HKEY; lpValueName:LPCSTR):LONG; external External_library name 'RegDeleteValueA';
+
+  function RegEnumKey(hKey:HKEY; dwIndex:DWORD; lpName:LPSTR; cbName:DWORD):LONG; external External_library name 'RegEnumKeyA';
+
+  function RegEnumKeyEx(hKey:HKEY; dwIndex:DWORD; lpName:LPSTR; lpcbName:LPDWORD; lpReserved:LPDWORD; 
+             lpClass:LPSTR; lpcbClass:LPDWORD; lpftLastWriteTime:PFILETIME):LONG; external External_library name 'RegEnumKeyExA';
+
+  function RegEnumValue(hKey:HKEY; dwIndex:DWORD; lpValueName:LPSTR; lpcbValueName:LPDWORD; lpReserved:LPDWORD; 
+             lpType:LPDWORD; lpData:LPBYTE; lpcbData:LPDWORD):LONG; external External_library name 'RegEnumValueA';
+
+  function RegLoadKey(hKey:HKEY; lpSubKey:LPCSTR; lpFile:LPCSTR):LONG; external External_library name 'RegLoadKeyA';
+
+  function RegOpenKey(hKey:HKEY; lpSubKey:LPCSTR; phkResult:PHKEY):LONG; external External_library name 'RegOpenKeyA';
+
+  function RegOpenKeyEx(hKey:HKEY; lpSubKey:LPCSTR; ulOptions:DWORD; samDesired:REGSAM; phkResult:PHKEY):LONG; external External_library name 'RegOpenKeyExA';
+
+  function RegQueryInfoKey(hKey:HKEY; lpClass:LPSTR; lpcbClass:LPDWORD; lpReserved:LPDWORD; lpcSubKeys:LPDWORD; 
+             lpcbMaxSubKeyLen:LPDWORD; lpcbMaxClassLen:LPDWORD; lpcValues:LPDWORD; lpcbMaxValueNameLen:LPDWORD; lpcbMaxValueLen:LPDWORD; 
+             lpcbSecurityDescriptor:LPDWORD; lpftLastWriteTime:PFILETIME):LONG; external External_library name 'RegQueryInfoKeyA';
+
+  function RegQueryValue(hKey:HKEY; lpSubKey:LPCSTR; lpValue:LPSTR; lpcbValue:PLONG):LONG; external External_library name 'RegQueryValueA';
+
+  function RegQueryMultipleValues(hKey:HKEY; val_list:PVALENT; num_vals:DWORD; lpValueBuf:LPSTR; ldwTotsize:LPDWORD):LONG; external External_library name 'RegQueryMultipleValuesA';
+
+  function RegQueryValueEx(hKey:HKEY; lpValueName:LPCSTR; lpReserved:LPDWORD; lpType:LPDWORD; lpData:LPBYTE; 
+             lpcbData:LPDWORD):LONG; external External_library name 'RegQueryValueExA';
+
+  function RegReplaceKey(hKey:HKEY; lpSubKey:LPCSTR; lpNewFile:LPCSTR; lpOldFile:LPCSTR):LONG; external External_library name 'RegReplaceKeyA';
+
+  function RegRestoreKey(hKey:HKEY; lpFile:LPCSTR; dwFlags:DWORD):LONG; external External_library name 'RegRestoreKeyA';
+
+  function RegSaveKey(hKey:HKEY; lpFile:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):LONG; external External_library name 'RegSaveKeyA';
+
+  function RegSetValue(hKey:HKEY; lpSubKey:LPCSTR; dwType:DWORD; lpData:LPCSTR; cbData:DWORD):LONG; external External_library name 'RegSetValueA';
+
+  function RegSetValueEx(hKey:HKEY; lpValueName:LPCSTR; Reserved:DWORD; dwType:DWORD; var lpData:BYTE; 
+             cbData:DWORD):LONG; external External_library name 'RegSetValueExA';
+
+  function RegUnLoadKey(hKey:HKEY; lpSubKey:LPCSTR):LONG; external External_library name 'RegUnLoadKeyA';
+
+  function InitiateSystemShutdown(lpMachineName:LPSTR; lpMessage:LPSTR; dwTimeout:DWORD; bForceAppsClosed:WINBOOL; bRebootAfterShutdown:WINBOOL):WINBOOL; external External_library name 'InitiateSystemShutdownA';
+
+  function AbortSystemShutdown(lpMachineName:LPSTR):WINBOOL; external External_library name 'AbortSystemShutdownA';
+
+  function CompareString(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCSTR; cchCount1:longint; lpString2:LPCSTR; 
+             cchCount2:longint):longint; external External_library name 'CompareStringA';
+
+  function LCMapString(Locale:LCID; dwMapFlags:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpDestStr:LPSTR; 
+             cchDest:longint):longint; external External_library name 'LCMapStringA';
+
+  function GetLocaleInfo(Locale:LCID; LCType:LCTYPE; lpLCData:LPSTR; cchData:longint):longint; external External_library name 'GetLocaleInfoA';
+
+  function SetLocaleInfo(Locale:LCID; LCType:LCTYPE; lpLCData:LPCSTR):WINBOOL; external External_library name 'SetLocaleInfoA';
+
+  function GetTimeFormat(Locale:LCID; dwFlags:DWORD; var lpTime:SYSTEMTIME; lpFormat:LPCSTR; lpTimeStr:LPSTR; 
+             cchTime:longint):longint; external External_library name 'GetTimeFormatA';
+
+  function GetDateFormat(Locale:LCID; dwFlags:DWORD; var lpDate:SYSTEMTIME; lpFormat:LPCSTR; lpDateStr:LPSTR; 
+             cchDate:longint):longint; external External_library name 'GetDateFormatA';
+
+  function GetNumberFormat(Locale:LCID; dwFlags:DWORD; lpValue:LPCSTR; var lpFormat:NUMBERFMT; lpNumberStr:LPSTR; 
+             cchNumber:longint):longint; external External_library name 'GetNumberFormatA';
+
+  function GetCurrencyFormat(Locale:LCID; dwFlags:DWORD; lpValue:LPCSTR; var lpFormat:CURRENCYFMT; lpCurrencyStr:LPSTR; 
+             cchCurrency:longint):longint; external External_library name 'GetCurrencyFormatA';
+
+  function EnumCalendarInfo(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL; external External_library name 'EnumCalendarInfoA';
+
+  function EnumTimeFormats(lpTimeFmtEnumProc:TIMEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external External_library name 'EnumTimeFormatsA';
+
+  function EnumDateFormats(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external External_library name 'EnumDateFormatsA';
+
+  function GetStringTypeEx(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL; external External_library name 'GetStringTypeExA';
+
+  function GetStringType(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL; external External_library name 'GetStringTypeA';
+
+  function FoldString(dwMapFlags:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpDestStr:LPSTR; cchDest:longint):longint; external External_library name 'FoldStringA';
+
+  function EnumSystemLocales(lpLocaleEnumProc:LOCALE_ENUMPROC; dwFlags:DWORD):WINBOOL; external External_library name 'EnumSystemLocalesA';
+
+  function EnumSystemCodePages(lpCodePageEnumProc:CODEPAGE_ENUMPROC; dwFlags:DWORD):WINBOOL; external External_library name 'EnumSystemCodePagesA';
+
+  function PeekConsoleInput(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL; external External_library name 'PeekConsoleInputA';
+
+  function ReadConsoleInput(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL; external External_library name 'ReadConsoleInputA';
+
+  function WriteConsoleInput(hConsoleInput:HANDLE; var lpBuffer:INPUT_RECORD; nLength:DWORD; lpNumberOfEventsWritten:LPDWORD):WINBOOL; external External_library name 'WriteConsoleInputA';
+
+  function ReadConsoleOutput(hConsoleOutput:HANDLE; lpBuffer:PCHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpReadRegion:PSMALL_RECT):WINBOOL; external External_library name 'ReadConsoleOutputA';
+
+  function WriteConsoleOutput(hConsoleOutput:HANDLE; var lpBuffer:CHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpWriteRegion:PSMALL_RECT):WINBOOL; external External_library name 'WriteConsoleOutputA';
+
+  function ReadConsoleOutputCharacter(hConsoleOutput:HANDLE; lpCharacter:LPSTR; nLength:DWORD; dwReadCoord:COORD; lpNumberOfCharsRead:LPDWORD):WINBOOL; external External_library name 'ReadConsoleOutputCharacterA';
+
+  function WriteConsoleOutputCharacter(hConsoleOutput:HANDLE; lpCharacter:LPCSTR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL; external External_library name 'WriteConsoleOutputCharacterA';
+
+  function FillConsoleOutputCharacter(hConsoleOutput:HANDLE; cCharacter:CHAR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL; external External_library name 'FillConsoleOutputCharacterA';
+
+  function ScrollConsoleScreenBuffer(hConsoleOutput:HANDLE; var lpScrollRectangle:SMALL_RECT; var lpClipRectangle:SMALL_RECT; dwDestinationOrigin:COORD; var lpFill:CHAR_INFO):WINBOOL; external External_library name 'ScrollConsoleScreenBufferA';
+
+  function GetConsoleTitle(lpConsoleTitle:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetConsoleTitleA';
+
+  function SetConsoleTitle(lpConsoleTitle:LPCSTR):WINBOOL; external External_library name 'SetConsoleTitleA';
+
+  function ReadConsole(hConsoleInput:HANDLE; lpBuffer:LPVOID; nNumberOfCharsToRead:DWORD; lpNumberOfCharsRead:LPDWORD; lpReserved:LPVOID):WINBOOL; external External_library name 'ReadConsoleA';
+
+  function WriteConsole(hConsoleOutput:HANDLE;lpBuffer:pointer; nNumberOfCharsToWrite:DWORD; lpNumberOfCharsWritten:LPDWORD; lpReserved:LPVOID):WINBOOL; external External_library name 'WriteConsoleA';
+
+  function WNetAddConnection(lpRemoteName:LPCSTR; lpPassword:LPCSTR; lpLocalName:LPCSTR):DWORD; external External_library name 'WNetAddConnectionA';
+
+  function WNetAddConnection2(lpNetResource:LPNETRESOURCE; lpPassword:LPCSTR; lpUserName:LPCSTR; dwFlags:DWORD):DWORD; external External_library name 'WNetAddConnection2A';
+
+  function WNetAddConnection3(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpPassword:LPCSTR; lpUserName:LPCSTR; dwFlags:DWORD):DWORD; external External_library name 'WNetAddConnection3A';
+
+  function WNetCancelConnection(lpName:LPCSTR; fForce:WINBOOL):DWORD; external External_library name 'WNetCancelConnectionA';
+
+  function WNetCancelConnection2(lpName:LPCSTR; dwFlags:DWORD; fForce:WINBOOL):DWORD; external External_library name 'WNetCancelConnection2A';
+
+  function WNetGetConnection(lpLocalName:LPCSTR; lpRemoteName:LPSTR; lpnLength:LPDWORD):DWORD; external External_library name 'WNetGetConnectionA';
+
+  function WNetUseConnection(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpUserID:LPCSTR; lpPassword:LPCSTR; dwFlags:DWORD; 
+             lpAccessName:LPSTR; lpBufferSize:LPDWORD; lpResult:LPDWORD):DWORD; external External_library name 'WNetUseConnectionA';
+
+  function WNetSetConnection(lpName:LPCSTR; dwProperties:DWORD; pvValues:LPVOID):DWORD; external External_library name 'WNetSetConnectionA';
+
+  function WNetConnectionDialog1(lpConnDlgStruct:LPCONNECTDLGSTRUCT):DWORD; external External_library name 'WNetConnectionDialog1A';
+
+  function WNetDisconnectDialog1(lpConnDlgStruct:LPDISCDLGSTRUCT):DWORD; external External_library name 'WNetDisconnectDialog1A';
+
+  function WNetOpenEnum(dwScope:DWORD; dwType:DWORD; dwUsage:DWORD; lpNetResource:LPNETRESOURCE; lphEnum:LPHANDLE):DWORD; external External_library name 'WNetOpenEnumA';
+
+  function WNetEnumResource(hEnum:HANDLE; lpcCount:LPDWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetEnumResourceA';
+
+  function WNetGetUniversalName(lpLocalPath:LPCSTR; dwInfoLevel:DWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetGetUniversalNameA';
+
+  function WNetGetUser(lpName:LPCSTR; lpUserName:LPSTR; lpnLength:LPDWORD):DWORD; external External_library name 'WNetGetUserA';
+
+  function WNetGetProviderName(dwNetType:DWORD; lpProviderName:LPSTR; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetGetProviderNameA';
+
+  function WNetGetNetworkInformation(lpProvider:LPCSTR; lpNetInfoStruct:LPNETINFOSTRUCT):DWORD; external External_library name 'WNetGetNetworkInformationA';
+
+  function WNetGetLastError(lpError:LPDWORD; lpErrorBuf:LPSTR; nErrorBufSize:DWORD; lpNameBuf:LPSTR; nNameBufSize:DWORD):DWORD; external External_library name 'WNetGetLastErrorA';
+
+  function MultinetGetConnectionPerformance(lpNetResource:LPNETRESOURCE; lpNetConnectInfoStruct:LPNETCONNECTINFOSTRUCT):DWORD; external External_library name 'MultinetGetConnectionPerformanceA';
+
+  function ChangeServiceConfig(hService:SC_HANDLE; dwServiceType:DWORD; dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCSTR; 
+             lpLoadOrderGroup:LPCSTR; lpdwTagId:LPDWORD; lpDependencies:LPCSTR; lpServiceStartName:LPCSTR; lpPassword:LPCSTR; 
+             lpDisplayName:LPCSTR):WINBOOL; external External_library name 'ChangeServiceConfigA';
+
+  function CreateService(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; lpDisplayName:LPCSTR; dwDesiredAccess:DWORD; dwServiceType:DWORD; 
+             dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCSTR; lpLoadOrderGroup:LPCSTR; lpdwTagId:LPDWORD; 
+             lpDependencies:LPCSTR; lpServiceStartName:LPCSTR; lpPassword:LPCSTR):SC_HANDLE; external External_library name 'CreateServiceA';
+
+  function EnumDependentServices(hService:SC_HANDLE; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD; 
+             lpServicesReturned:LPDWORD):WINBOOL; external External_library name 'EnumDependentServicesA';
+
+  function EnumServicesStatus(hSCManager:SC_HANDLE; dwServiceType:DWORD; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; 
+             pcbBytesNeeded:LPDWORD; lpServicesReturned:LPDWORD; lpResumeHandle:LPDWORD):WINBOOL; external External_library name 'EnumServicesStatusA';
+
+  function GetServiceKeyName(hSCManager:SC_HANDLE; lpDisplayName:LPCSTR; lpServiceName:LPSTR; lpcchBuffer:LPDWORD):WINBOOL; external External_library name 'GetServiceKeyNameA';
+
+  function GetServiceDisplayName(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; lpDisplayName:LPSTR; lpcchBuffer:LPDWORD):WINBOOL; external External_library name 'GetServiceDisplayNameA';
+
+  function OpenSCManager(lpMachineName:LPCSTR; lpDatabaseName:LPCSTR; dwDesiredAccess:DWORD):SC_HANDLE; external External_library name 'OpenSCManagerA';
+
+  function OpenService(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; dwDesiredAccess:DWORD):SC_HANDLE; external External_library name 'OpenServiceA';
+
+  function QueryServiceConfig(hService:SC_HANDLE; lpServiceConfig:LPQUERY_SERVICE_CONFIG; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL; external External_library name 'QueryServiceConfigA';
+
+  function QueryServiceLockStatus(hSCManager:SC_HANDLE; lpLockStatus:LPQUERY_SERVICE_LOCK_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL; external External_library name 'QueryServiceLockStatusA';
+
+  function RegisterServiceCtrlHandler(lpServiceName:LPCSTR; lpHandlerProc:LPHANDLER_FUNCTION):SERVICE_STATUS_HANDLE; external External_library name 'RegisterServiceCtrlHandlerA';
+
+  function StartServiceCtrlDispatcher(lpServiceStartTable:LPSERVICE_TABLE_ENTRY):WINBOOL; external External_library name 'StartServiceCtrlDispatcherA';
+
+  function StartService(hService:SC_HANDLE; dwNumServiceArgs:DWORD; var lpServiceArgVectors:LPCSTR):WINBOOL; external External_library name 'StartServiceA';
+
+  function wglUseFontBitmaps(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD):WINBOOL; external External_library name 'wglUseFontBitmapsA';
+
+  function wglUseFontOutlines(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT; _para7:longint; _para8:LPGLYPHMETRICSFLOAT):WINBOOL; external External_library name 'wglUseFontOutlinesA';
+
+  function DragQueryFile(_para1:HDROP; _para2:cardinal; var _para3:char; _para4:cardinal):cardinal; external External_library name 'DragQueryFileA';
+
+  function ExtractAssociatedIcon(_para1:HINSTANCE; var _para2:char; var _para3:WORD):HICON; external External_library name 'ExtractAssociatedIconA';
+
+  function ExtractIcon(_para1:HINSTANCE; var _para2:char; _para3:cardinal):HICON; external External_library name 'ExtractIconA';
+
+  function FindExecutable(var _para1:char; var _para2:char; var _para3:char):HINSTANCE; external External_library name 'FindExecutableA';
+
+  function ShellAbout(_para1:HWND; var _para2:char; var _para3:char; _para4:HICON):longint; external External_library name 'ShellAboutA';
+
+  function ShellExecute(_para1:HWND; var _para2:char; var _para3:char; var _para4:char; var _para5:char; 
+             _para6:longint):HINSTANCE; external External_library name 'ShellExecuteA';
+
+  function DdeCreateStringHandle(_para1:DWORD; var _para2:char; _para3:longint):HSZ; external External_library name 'DdeCreateStringHandleA';
+
+  function DdeInitialize(var _para1:DWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT; external External_library name 'DdeInitializeA';
+
+  function DdeQueryString(_para1:DWORD; _para2:HSZ; var _para3:char; _para4:DWORD; _para5:longint):DWORD; external External_library name 'DdeQueryStringA';
+
+  function LogonUser(_para1:LPSTR; _para2:LPSTR; _para3:LPSTR; _para4:DWORD; _para5:DWORD; 
+             var _para6:HANDLE):WINBOOL; external External_library name 'LogonUserA';
+
+  function CreateProcessAsUser(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; var _para4:SECURITY_ATTRIBUTES; var _para5:SECURITY_ATTRIBUTES; 
+             _para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCTSTR; var _para10:STARTUPINFO; 
+             var _para11:PROCESS_INFORMATION):WINBOOL; external External_library name 'CreateProcessAsUserA';
+
+{$endif read_implementation}
+
+{$ifndef windows_include_files}
+end.
+{$endif not windows_include_files}
+{
+  $Log$
+  Revision 1.1  1998-08-31 11:53:53  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+}

+ 9 - 0
rtl/win32/ascdef.sed

@@ -0,0 +1,9 @@
+s/function \([^(]*\)A *(/function \1(/
+s/procedure \([^(]*\)A *(/procedure \1(/
+s/function \([^:(]*\)A *: */function \1 : /
+s/procedure \([^;(]*\)A *;/procedure \1;/
+s/\([^ \t]*\)A *:=/\1:=/
+s/ascfun;/ascdef;/
+s/ascfun.pp,v/ascdef.pp,v/
+s/ASCIIFUNCTIONS/ASCIIFUNCFIONSDEFAULT/
+

+ 1901 - 0
rtl/win32/ascfun.pp

@@ -0,0 +1,1901 @@
+{
+    $Id$
+    This file is part of the Free Pascal run time library.
+    This unit contains the record definition for the Win32 API
+    Copyright (c) 1993,97 by Florian KLaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
+
+
+{$ifndef windows_include_files}
+
+unit ascfun;
+
+{  Automatically converted by H2PAS.EXE from asciifun.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
+
+
+  interface
+
+   uses
+      base,defines,struct;
+
+{$endif windows_include_files}
+
+{$ifdef read_interface}
+
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     ASCIIFunctions.h
+  
+     Declarations for all the Win32 ASCII Functions
+  
+     Copyright (C) 1996 Free Software Foundation, Inc.
+  
+     Author:  Scott Christley <[email protected]>
+  
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+{$ifndef _GNU_H_WINDOWS32_ASCIIFUNCTIONS}
+{$define _GNU_H_WINDOWS32_ASCIIFUNCTIONS}
+{ C++ extern C conditionnal removed }
+  { __cplusplus  }
+
+  function GetBinaryTypeA(lpApplicationName:LPCSTR; lpBinaryType:LPDWORD):WINBOOL;
+
+  function GetShortPathNameA(lpszLongPath:LPCSTR; lpszShortPath:LPSTR; cchBuffer:DWORD):DWORD;
+
+  function GetEnvironmentStringsA:LPSTR;
+
+  function FreeEnvironmentStringsA(_para1:LPSTR):WINBOOL;
+
+  function FormatMessageA(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPSTR; 
+             nSize:DWORD; var Arguments:va_list):DWORD;
+
+  function CreateMailslotA(lpName:LPCSTR; nMaxMessageSize:DWORD; lReadTimeout:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE;
+
+  function lstrcmpA(lpString1:LPCSTR; lpString2:LPCSTR):longint;
+
+  function lstrcmpiA(lpString1:LPCSTR; lpString2:LPCSTR):longint;
+
+  function lstrcpynA(lpString1:LPSTR; lpString2:LPCSTR; iMaxLength:longint):LPSTR;
+
+  function lstrcpyA(lpString1:LPSTR; lpString2:LPCSTR):LPSTR;
+
+  function lstrcatA(lpString1:LPSTR; lpString2:LPCSTR):LPSTR;
+
+  function lstrlenA(lpString:LPCSTR):longint;
+
+  function CreateMutexA(lpMutexAttributes:LPSECURITY_ATTRIBUTES; bInitialOwner:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function OpenMutexA(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function CreateEventA(lpEventAttributes:LPSECURITY_ATTRIBUTES; bManualReset:WINBOOL; bInitialState:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function OpenEventA(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function CreateSemaphoreA(lpSemaphoreAttributes:LPSECURITY_ATTRIBUTES; lInitialCount:LONG; lMaximumCount:LONG; lpName:LPCSTR):HANDLE;
+
+  function OpenSemaphoreA(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function CreateFileMappingA(hFile:HANDLE; lpFileMappingAttributes:LPSECURITY_ATTRIBUTES; flProtect:DWORD; dwMaximumSizeHigh:DWORD; dwMaximumSizeLow:DWORD; 
+             lpName:LPCSTR):HANDLE;
+
+  function OpenFileMappingA(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE;
+
+  function GetLogicalDriveStringsA(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD;
+
+  function LoadLibraryA(lpLibFileName:LPCSTR):HINSTANCE;
+
+  function LoadLibraryExA(lpLibFileName:LPCSTR; hFile:HANDLE; dwFlags:DWORD):HINSTANCE;
+
+  function GetModuleFileNameA(hModule:HINSTANCE; lpFilename:LPSTR; nSize:DWORD):DWORD;
+
+  function GetModuleHandleA(lpModuleName:LPCSTR):HMODULE;
+
+  procedure FatalAppExitA(uAction:UINT; lpMessageText:LPCSTR);
+
+  function GetCommandLineA:LPSTR;
+
+  function GetEnvironmentVariableA(lpName:LPCSTR; lpBuffer:LPSTR; nSize:DWORD):DWORD;
+
+  function SetEnvironmentVariableA(lpName:LPCSTR; lpValue:LPCSTR):WINBOOL;
+
+  function ExpandEnvironmentStringsA(lpSrc:LPCSTR; lpDst:LPSTR; nSize:DWORD):DWORD;
+
+  procedure OutputDebugStringA(lpOutputString:LPCSTR);
+
+  function FindResourceA(hModule:HINSTANCE; lpName:LPCSTR; lpType:LPCSTR):HRSRC;
+
+  function FindResourceExA(hModule:HINSTANCE; lpType:LPCSTR; lpName:LPCSTR; wLanguage:WORD):HRSRC;
+
+  function EnumResourceTypesA(hModule:HINSTANCE; lpEnumFunc:ENUMRESTYPEPROC; lParam:LONG):WINBOOL;
+
+  function EnumResourceNamesA(hModule:HINSTANCE; lpType:LPCSTR; lpEnumFunc:ENUMRESNAMEPROC; lParam:LONG):WINBOOL;
+
+  function EnumResourceLanguagesA(hModule:HINSTANCE; lpType:LPCSTR; lpName:LPCSTR; lpEnumFunc:ENUMRESLANGPROC; lParam:LONG):WINBOOL;
+
+  function BeginUpdateResourceA(pFileName:LPCSTR; bDeleteExistingResources:WINBOOL):HANDLE;
+
+  function UpdateResourceA(hUpdate:HANDLE; lpType:LPCSTR; lpName:LPCSTR; wLanguage:WORD; lpData:LPVOID; 
+             cbData:DWORD):WINBOOL;
+
+  function EndUpdateResourceA(hUpdate:HANDLE; fDiscard:WINBOOL):WINBOOL;
+
+  function GlobalAddAtomA(lpString:LPCSTR):ATOM;
+
+  function GlobalFindAtomA(lpString:LPCSTR):ATOM;
+
+  function GlobalGetAtomNameA(nAtom:ATOM; lpBuffer:LPSTR; nSize:longint):UINT;
+
+  function AddAtomA(lpString:LPCSTR):ATOM;
+
+  function FindAtomA(lpString:LPCSTR):ATOM;
+
+  function GetAtomNameA(nAtom:ATOM; lpBuffer:LPSTR; nSize:longint):UINT;
+
+  function GetProfileIntA(lpAppName:LPCSTR; lpKeyName:LPCSTR; nDefault:INT):UINT;
+
+  function GetProfileStringA(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpDefault:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD):DWORD;
+
+  function WriteProfileStringA(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpString:LPCSTR):WINBOOL;
+
+  function GetProfileSectionA(lpAppName:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD):DWORD;
+
+  function WriteProfileSectionA(lpAppName:LPCSTR; lpString:LPCSTR):WINBOOL;
+
+  function GetPrivateProfileIntA(lpAppName:LPCSTR; lpKeyName:LPCSTR; nDefault:INT; lpFileName:LPCSTR):UINT;
+
+  function GetPrivateProfileStringA(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpDefault:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD; 
+             lpFileName:LPCSTR):DWORD;
+
+  function WritePrivateProfileStringA(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpString:LPCSTR; lpFileName:LPCSTR):WINBOOL;
+
+  function GetPrivateProfileSectionA(lpAppName:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD; lpFileName:LPCSTR):DWORD;
+
+  function WritePrivateProfileSectionA(lpAppName:LPCSTR; lpString:LPCSTR; lpFileName:LPCSTR):WINBOOL;
+
+  function GetDriveTypeA(lpRootPathName:LPCSTR):UINT;
+
+  function GetSystemDirectoryA(lpBuffer:LPSTR; uSize:UINT):UINT;
+
+  function GetTempPathA(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD;
+
+  function GetTempFileNameA(lpPathName:LPCSTR; lpPrefixString:LPCSTR; uUnique:UINT; lpTempFileName:LPSTR):UINT;
+
+  function GetWindowsDirectoryA(lpBuffer:LPSTR; uSize:UINT):UINT;
+
+  function SetCurrentDirectoryA(lpPathName:LPCSTR):WINBOOL;
+
+  function GetCurrentDirectoryA(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD;
+
+  function GetDiskFreeSpaceA(lpRootPathName:LPCSTR; lpSectorsPerCluster:LPDWORD; lpBytesPerSector:LPDWORD; lpNumberOfFreeClusters:LPDWORD; lpTotalNumberOfClusters:LPDWORD):WINBOOL;
+
+  function CreateDirectoryA(lpPathName:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL;
+
+  function CreateDirectoryExA(lpTemplateDirectory:LPCSTR; lpNewDirectory:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL;
+
+  function RemoveDirectoryA(lpPathName:LPCSTR):WINBOOL;
+
+  function GetFullPathNameA(lpFileName:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR; var lpFilePart:LPSTR):DWORD;
+
+  function DefineDosDeviceA(dwFlags:DWORD; lpDeviceName:LPCSTR; lpTargetPath:LPCSTR):WINBOOL;
+
+  function QueryDosDeviceA(lpDeviceName:LPCSTR; lpTargetPath:LPSTR; ucchMax:DWORD):DWORD;
+
+  function CreateFileA(lpFileName:LPCSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD; 
+             dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE;
+
+  function SetFileAttributesA(lpFileName:LPCSTR; dwFileAttributes:DWORD):WINBOOL;
+
+  function GetFileAttributesA(lpFileName:LPCSTR):DWORD;
+
+  function GetCompressedFileSizeA(lpFileName:LPCSTR; lpFileSizeHigh:LPDWORD):DWORD;
+
+  function DeleteFileA(lpFileName:LPCSTR):WINBOOL;
+
+  function SearchPathA(lpPath:LPCSTR; lpFileName:LPCSTR; lpExtension:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR; 
+             var lpFilePart:LPSTR):DWORD;
+
+  function CopyFileA(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR; bFailIfExists:WINBOOL):WINBOOL;
+
+  function MoveFileA(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR):WINBOOL;
+
+  function MoveFileExA(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR; dwFlags:DWORD):WINBOOL;
+
+  function CreateNamedPipeA(lpName:LPCSTR; dwOpenMode:DWORD; dwPipeMode:DWORD; nMaxInstances:DWORD; nOutBufferSize:DWORD; 
+             nInBufferSize:DWORD; nDefaultTimeOut:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE;
+
+  function GetNamedPipeHandleStateA(hNamedPipe:HANDLE; lpState:LPDWORD; lpCurInstances:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD; 
+             lpUserName:LPSTR; nMaxUserNameSize:DWORD):WINBOOL;
+
+  function CallNamedPipeA(lpNamedPipeName:LPCSTR; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; nTimeOut:DWORD):WINBOOL;
+
+  function WaitNamedPipeA(lpNamedPipeName:LPCSTR; nTimeOut:DWORD):WINBOOL;
+
+  function SetVolumeLabelA(lpRootPathName:LPCSTR; lpVolumeName:LPCSTR):WINBOOL;
+
+  function GetVolumeInformationA(lpRootPathName:LPCSTR; lpVolumeNameBuffer:LPSTR; nVolumeNameSize:DWORD; lpVolumeSerialNumber:LPDWORD; lpMaximumComponentLength:LPDWORD; 
+             lpFileSystemFlags:LPDWORD; lpFileSystemNameBuffer:LPSTR; nFileSystemNameSize:DWORD):WINBOOL;
+
+  function ClearEventLogA(hEventLog:HANDLE; lpBackupFileName:LPCSTR):WINBOOL;
+
+  function BackupEventLogA(hEventLog:HANDLE; lpBackupFileName:LPCSTR):WINBOOL;
+
+  function OpenEventLogA(lpUNCServerName:LPCSTR; lpSourceName:LPCSTR):HANDLE;
+
+  function RegisterEventSourceA(lpUNCServerName:LPCSTR; lpSourceName:LPCSTR):HANDLE;
+
+  function OpenBackupEventLogA(lpUNCServerName:LPCSTR; lpFileName:LPCSTR):HANDLE;
+
+  function ReadEventLogA(hEventLog:HANDLE; dwReadFlags:DWORD; dwRecordOffset:DWORD; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; 
+             var pnBytesRead:DWORD; var pnMinNumberOfBytesNeeded:DWORD):WINBOOL;
+
+  function ReportEventA(hEventLog:HANDLE; wType:WORD; wCategory:WORD; dwEventID:DWORD; lpUserSid:PSID; 
+             wNumStrings:WORD; dwDataSize:DWORD; var lpStrings:LPCSTR; lpRawData:LPVOID):WINBOOL;
+
+  function AccessCheckAndAuditAlarmA(SubsystemName:LPCSTR; HandleId:LPVOID; ObjectTypeName:LPSTR; ObjectName:LPSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL;
+
+  function ObjectOpenAuditAlarmA(SubsystemName:LPCSTR; HandleId:LPVOID; ObjectTypeName:LPSTR; ObjectName:LPSTR; pSecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             ClientToken:HANDLE; DesiredAccess:DWORD; GrantedAccess:DWORD; Privileges:PPRIVILEGE_SET; ObjectCreation:WINBOOL; 
+             AccessGranted:WINBOOL; GenerateOnClose:LPBOOL):WINBOOL;
+
+  function ObjectPrivilegeAuditAlarmA(SubsystemName:LPCSTR; HandleId:LPVOID; ClientToken:HANDLE; DesiredAccess:DWORD; Privileges:PPRIVILEGE_SET; 
+             AccessGranted:WINBOOL):WINBOOL;
+
+  function ObjectCloseAuditAlarmA(SubsystemName:LPCSTR; HandleId:LPVOID; GenerateOnClose:WINBOOL):WINBOOL;
+
+  function PrivilegedServiceAuditAlarmA(SubsystemName:LPCSTR; ServiceName:LPCSTR; ClientToken:HANDLE; Privileges:PPRIVILEGE_SET; AccessGranted:WINBOOL):WINBOOL;
+
+  function SetFileSecurityA(lpFileName:LPCSTR; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL;
+
+  function GetFileSecurityA(lpFileName:LPCSTR; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+  function FindFirstChangeNotificationA(lpPathName:LPCSTR; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD):HANDLE;
+
+  function IsBadStringPtrA(lpsz:LPCSTR; ucchMax:UINT):WINBOOL;
+
+  function LookupAccountSidA(lpSystemName:LPCSTR; Sid:PSID; Name:LPSTR; cbName:LPDWORD; ReferencedDomainName:LPSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL;
+
+  function LookupAccountNameA(lpSystemName:LPCSTR; lpAccountName:LPCSTR; Sid:PSID; cbSid:LPDWORD; ReferencedDomainName:LPSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL;
+
+  function LookupPrivilegeValueA(lpSystemName:LPCSTR; lpName:LPCSTR; lpLuid:PLUID):WINBOOL;
+
+  function LookupPrivilegeNameA(lpSystemName:LPCSTR; lpLuid:PLUID; lpName:LPSTR; cbName:LPDWORD):WINBOOL;
+
+  function LookupPrivilegeDisplayNameA(lpSystemName:LPCSTR; lpName:LPCSTR; lpDisplayName:LPSTR; cbDisplayName:LPDWORD; lpLanguageId:LPDWORD):WINBOOL;
+
+  function BuildCommDCBA(lpDef:LPCSTR; lpDCB:LPDCB):WINBOOL;
+
+  function BuildCommDCBAndTimeoutsA(lpDef:LPCSTR; lpDCB:LPDCB; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL;
+
+  function CommConfigDialogA(lpszName:LPCSTR; hWnd:HWND; lpCC:LPCOMMCONFIG):WINBOOL;
+
+  function GetDefaultCommConfigA(lpszName:LPCSTR; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL;
+
+  function SetDefaultCommConfigA(lpszName:LPCSTR; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL;
+
+  function GetComputerNameA(lpBuffer:LPSTR; nSize:LPDWORD):WINBOOL;
+
+  function SetComputerNameA(lpComputerName:LPCSTR):WINBOOL;
+
+  function GetUserNameA(lpBuffer:LPSTR; nSize:LPDWORD):WINBOOL;
+
+  function wvsprintfA(_para1:LPSTR; _para2:LPCSTR; arglist:va_list):longint;
+
+  (* function wsprintfA(_para1:LPSTR; _para2:LPCSTR; ...):longint;
+      not allowed in FPC *)
+      
+  function LoadKeyboardLayoutA(pwszKLID:LPCSTR; Flags:UINT):HKL;
+
+  function GetKeyboardLayoutNameA(pwszKLID:LPSTR):WINBOOL;
+
+  function CreateDesktopA(lpszDesktop:LPSTR; lpszDevice:LPSTR; pDevmode:LPDEVMODE; dwFlags:DWORD; dwDesiredAccess:DWORD; 
+             lpsa:LPSECURITY_ATTRIBUTES):HDESK;
+
+  function OpenDesktopA(lpszDesktop:LPSTR; dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK;
+
+  function EnumDesktopsA(hwinsta:HWINSTA; lpEnumFunc:DESKTOPENUMPROC; lParam:LPARAM):WINBOOL;
+
+  function CreateWindowStationA(lpwinsta:LPSTR; dwReserved:DWORD; dwDesiredAccess:DWORD; lpsa:LPSECURITY_ATTRIBUTES):HWINSTA;
+
+  function OpenWindowStationA(lpszWinSta:LPSTR; fInherit:WINBOOL; dwDesiredAccess:DWORD):HWINSTA;
+
+  function EnumWindowStationsA(lpEnumFunc:ENUMWINDOWSTATIONPROC; lParam:LPARAM):WINBOOL;
+
+  function GetUserObjectInformationA(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+  function SetUserObjectInformationA(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD):WINBOOL;
+
+  function RegisterWindowMessageA(lpString:LPCSTR):UINT;
+
+  function GetMessageA(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT):WINBOOL;
+
+(* Const before type ignored *)
+  function DispatchMessageA(var lpMsg:MSG):LONG;
+
+  function PeekMessageA(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT; wRemoveMsg:UINT):WINBOOL;
+
+  function SendMessageA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function SendMessageTimeoutA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; fuFlags:UINT; 
+             uTimeout:UINT; lpdwResult:LPDWORD):LRESULT;
+
+  function SendNotifyMessageA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function SendMessageCallbackA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; lpResultCallBack:SENDASYNCPROC; 
+             dwData:DWORD):WINBOOL;
+
+  function PostMessageA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function PostThreadMessageA(idThread:DWORD; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function DefWindowProcA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CallWindowProcA(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+(* Const before type ignored *)
+  function RegisterClassA(var lpWndClass:WNDCLASS):ATOM;
+
+  function UnregisterClassA(lpClassName:LPCSTR; hInstance:HINSTANCE):WINBOOL;
+
+  function GetClassInfoA(hInstance:HINSTANCE; lpClassName:LPCSTR; lpWndClass:LPWNDCLASS):WINBOOL;
+
+(* Const before type ignored *)
+  function RegisterClassExA(var _para1:WNDCLASSEX):ATOM;
+
+  function GetClassInfoExA(_para1:HINSTANCE; _para2:LPCSTR; _para3:LPWNDCLASSEX):WINBOOL;
+
+  function CreateWindowExA(dwExStyle:DWORD; lpClassName:LPCSTR; lpWindowName:LPCSTR; dwStyle:DWORD; X:longint; 
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+
+  function CreateDialogParamA(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND;
+
+  function CreateDialogIndirectParamA(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND;
+
+  function DialogBoxParamA(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint;
+
+  function DialogBoxIndirectParamA(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint;
+
+  function SetDlgItemTextA(hDlg:HWND; nIDDlgItem:longint; lpString:LPCSTR):WINBOOL;
+
+  function GetDlgItemTextA(hDlg:HWND; nIDDlgItem:longint; lpString:LPSTR; nMaxCount:longint):UINT;
+
+  function SendDlgItemMessageA(hDlg:HWND; nIDDlgItem:longint; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LONG;
+
+  function DefDlgProcA(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CallMsgFilterA(lpMsg:LPMSG; nCode:longint):WINBOOL;
+
+  function RegisterClipboardFormatA(lpszFormat:LPCSTR):UINT;
+
+  function GetClipboardFormatNameA(format:UINT; lpszFormatName:LPSTR; cchMaxCount:longint):longint;
+
+  function CharToOemA(lpszSrc:LPCSTR; lpszDst:LPSTR):WINBOOL;
+
+  function OemToCharA(lpszSrc:LPCSTR; lpszDst:LPSTR):WINBOOL;
+
+  function CharToOemBuffA(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL;
+
+  function OemToCharBuffA(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL;
+
+  function CharUpperA(lpsz:LPSTR):LPSTR;
+
+  function CharUpperBuffA(lpsz:LPSTR; cchLength:DWORD):DWORD;
+
+  function CharLowerA(lpsz:LPSTR):LPSTR;
+
+  function CharLowerBuffA(lpsz:LPSTR; cchLength:DWORD):DWORD;
+
+  function CharNextA(lpsz:LPCSTR):LPSTR;
+
+  function CharPrevA(lpszStart:LPCSTR; lpszCurrent:LPCSTR):LPSTR;
+
+  function IsCharAlphaA(ch:CHAR):WINBOOL;
+
+  function IsCharAlphaNumericA(ch:CHAR):WINBOOL;
+
+  function IsCharUpperA(ch:CHAR):WINBOOL;
+
+  function IsCharLowerA(ch:CHAR):WINBOOL;
+
+  function GetKeyNameTextA(lParam:LONG; lpString:LPSTR; nSize:longint):longint;
+
+  function VkKeyScanA(ch:CHAR):SHORT;
+
+  function VkKeyScanExA(ch:CHAR; dwhkl:HKL):SHORT;
+
+  function MapVirtualKeyA(uCode:UINT; uMapType:UINT):UINT;
+
+  function MapVirtualKeyExA(uCode:UINT; uMapType:UINT; dwhkl:HKL):UINT;
+
+  function LoadAcceleratorsA(hInstance:HINSTANCE; lpTableName:LPCSTR):HACCEL;
+
+  function CreateAcceleratorTableA(_para1:LPACCEL; _para2:longint):HACCEL;
+
+  function CopyAcceleratorTableA(hAccelSrc:HACCEL; lpAccelDst:LPACCEL; cAccelEntries:longint):longint;
+
+  function TranslateAcceleratorA(hWnd:HWND; hAccTable:HACCEL; lpMsg:LPMSG):longint;
+
+  function LoadMenuA(hInstance:HINSTANCE; lpMenuName:LPCSTR):HMENU;
+
+(* Const before type ignored *)
+  function LoadMenuIndirectA(var lpMenuTemplate:MENUTEMPLATE):HMENU;
+
+  function ChangeMenuA(hMenu:HMENU; cmd:UINT; lpszNewItem:LPCSTR; cmdInsert:UINT; flags:UINT):WINBOOL;
+
+  function GetMenuStringA(hMenu:HMENU; uIDItem:UINT; lpString:LPSTR; nMaxCount:longint; uFlag:UINT):longint;
+
+  function InsertMenuA(hMenu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL;
+
+  function AppendMenuA(hMenu:HMENU; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL;
+
+  function ModifyMenuA(hMnu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL;
+
+  function InsertMenuItemA(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL;
+
+  function GetMenuItemInfoA(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPMENUITEMINFO):WINBOOL;
+
+  function SetMenuItemInfoA(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL;
+
+  function DrawTextA(hDC:HDC; lpString:LPCSTR; nCount:longint; lpRect:LPRECT; uFormat:UINT):longint;
+
+  function DrawTextExA(_para1:HDC; _para2:LPSTR; _para3:longint; _para4:LPRECT; _para5:UINT; 
+             _para6:LPDRAWTEXTPARAMS):longint;
+
+  function GrayStringA(hDC:HDC; hBrush:HBRUSH; lpOutputFunc:GRAYSTRINGPROC; lpData:LPARAM; nCount:longint; 
+             X:longint; Y:longint; nWidth:longint; nHeight:longint):WINBOOL;
+
+  function DrawStateA(_para1:HDC; _para2:HBRUSH; _para3:DRAWSTATEPROC; _para4:LPARAM; _para5:WPARAM; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:UINT):WINBOOL;
+
+  function TabbedTextOutA(hDC:HDC; X:longint; Y:longint; lpString:LPCSTR; nCount:longint; 
+             nTabPositions:longint; lpnTabStopPositions:LPINT; nTabOrigin:longint):LONG;
+
+  function GetTabbedTextExtentA(hDC:HDC; lpString:LPCSTR; nCount:longint; nTabPositions:longint; lpnTabStopPositions:LPINT):DWORD;
+
+  function SetPropA(hWnd:HWND; lpString:LPCSTR; hData:HANDLE):WINBOOL;
+
+  function GetPropA(hWnd:HWND; lpString:LPCSTR):HANDLE;
+
+  function RemovePropA(hWnd:HWND; lpString:LPCSTR):HANDLE;
+
+  function EnumPropsExA(hWnd:HWND; lpEnumFunc:PROPENUMPROCEX; lParam:LPARAM):longint;
+
+  function EnumPropsA(hWnd:HWND; lpEnumFunc:PROPENUMPROC):longint;
+
+  function SetWindowTextA(hWnd:HWND; lpString:LPCSTR):WINBOOL;
+
+  function GetWindowTextA(hWnd:HWND; lpString:LPSTR; nMaxCount:longint):longint;
+
+  function GetWindowTextLengthA(hWnd:HWND):longint;
+
+  function MessageBoxA(hWnd:HWND; lpText:LPCSTR; lpCaption:LPCSTR; uType:UINT):longint;
+
+  function MessageBoxExA(hWnd:HWND; lpText:LPCSTR; lpCaption:LPCSTR; uType:UINT; wLanguageId:WORD):longint;
+
+  function MessageBoxIndirectA(_para1:LPMSGBOXPARAMS):longint;
+
+  function GetWindowLongA(hWnd:HWND; nIndex:longint):LONG;
+
+  function SetWindowLongA(hWnd:HWND; nIndex:longint; dwNewLong:LONG):LONG;
+
+  function GetClassLongA(hWnd:HWND; nIndex:longint):DWORD;
+
+  function SetClassLongA(hWnd:HWND; nIndex:longint; dwNewLong:LONG):DWORD;
+
+  function FindWindowA(lpClassName:LPCSTR; lpWindowName:LPCSTR):HWND;
+
+  function FindWindowExA(_para1:HWND; _para2:HWND; _para3:LPCSTR; _para4:LPCSTR):HWND;
+
+  function GetClassNameA(hWnd:HWND; lpClassName:LPSTR; nMaxCount:longint):longint;
+
+  function SetWindowsHookExA(idHook:longint; lpfn:HOOKPROC; hmod:HINSTANCE; dwThreadId:DWORD):HHOOK;
+
+  function LoadBitmapA(hInstance:HINSTANCE; lpBitmapName:LPCSTR):HBITMAP;
+
+  function LoadCursorA(hInstance:HINSTANCE; lpCursorName:LPCSTR):HCURSOR;
+
+  function LoadCursorFromFileA(lpFileName:LPCSTR):HCURSOR;
+
+  function LoadIconA(hInstance:HINSTANCE; lpIconName:LPCSTR):HICON;
+
+  function LoadImageA(_para1:HINSTANCE; _para2:LPCSTR; _para3:UINT; _para4:longint; _para5:longint; 
+             _para6:UINT):HANDLE;
+
+  function LoadStringA(hInstance:HINSTANCE; uID:UINT; lpBuffer:LPSTR; nBufferMax:longint):longint;
+
+  function IsDialogMessageA(hDlg:HWND; lpMsg:LPMSG):WINBOOL;
+
+  function DlgDirListA(hDlg:HWND; lpPathSpec:LPSTR; nIDListBox:longint; nIDStaticPath:longint; uFileType:UINT):longint;
+
+  function DlgDirSelectExA(hDlg:HWND; lpString:LPSTR; nCount:longint; nIDListBox:longint):WINBOOL;
+
+  function DlgDirListComboBoxA(hDlg:HWND; lpPathSpec:LPSTR; nIDComboBox:longint; nIDStaticPath:longint; uFiletype:UINT):longint;
+
+  function DlgDirSelectComboBoxExA(hDlg:HWND; lpString:LPSTR; nCount:longint; nIDComboBox:longint):WINBOOL;
+
+  function DefFrameProcA(hWnd:HWND; hWndMDIClient:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function DefMDIChildProcA(hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CreateMDIWindowA(lpClassName:LPSTR; lpWindowName:LPSTR; dwStyle:DWORD; X:longint; Y:longint; 
+             nWidth:longint; nHeight:longint; hWndParent:HWND; hInstance:HINSTANCE; lParam:LPARAM):HWND;
+
+  function WinHelpA(hWndMain:HWND; lpszHelp:LPCSTR; uCommand:UINT; dwData:DWORD):WINBOOL;
+
+  function ChangeDisplaySettingsA(lpDevMode:LPDEVMODE; dwFlags:DWORD):LONG;
+
+  function EnumDisplaySettingsA(lpszDeviceName:LPCSTR; iModeNum:DWORD; lpDevMode:LPDEVMODE):WINBOOL;
+
+  function SystemParametersInfoA(uiAction:UINT; uiParam:UINT; pvParam:PVOID; fWinIni:UINT):WINBOOL;
+
+  function AddFontResourceA(_para1:LPCSTR):longint;
+
+  function CopyMetaFileA(_para1:HMETAFILE; _para2:LPCSTR):HMETAFILE;
+
+(* Const before type ignored *)
+  function CreateFontIndirectA(var _para1:LOGFONT):HFONT;
+
+(* Const before type ignored *)
+  function CreateICA(_para1:LPCSTR; _para2:LPCSTR; _para3:LPCSTR; var _para4:DEVMODE):HDC;
+
+  function CreateMetaFileA(_para1:LPCSTR):HDC;
+
+  function CreateScalableFontResourceA(_para1:DWORD; _para2:LPCSTR; _para3:LPCSTR; _para4:LPCSTR):WINBOOL;
+
+(* Const before type ignored *)
+  function DeviceCapabilitiesA(_para1:LPCSTR; _para2:LPCSTR; _para3:WORD; _para4:LPSTR; var _para5:DEVMODE):longint;
+
+  function EnumFontFamiliesExA(_para1:HDC; _para2:LPLOGFONT; _para3:FONTENUMEXPROC; _para4:LPARAM; _para5:DWORD):longint;
+
+  function EnumFontFamiliesA(_para1:HDC; _para2:LPCSTR; _para3:FONTENUMPROC; _para4:LPARAM):longint;
+
+  function EnumFontsA(_para1:HDC; _para2:LPCSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint;
+
+  function GetCharWidthA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL;
+
+  function GetCharWidth32A(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL;
+
+  function GetCharWidthFloatA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:PFLOAT):WINBOOL;
+
+  function GetCharABCWidthsA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABC):WINBOOL;
+
+  function GetCharABCWidthsFloatA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABCFLOAT):WINBOOL;
+
+(* Const before type ignored *)
+  function GetGlyphOutlineA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPGLYPHMETRICS; _para5:DWORD; 
+             _para6:LPVOID; var _para7:MAT2):DWORD;
+
+  function GetMetaFileA(_para1:LPCSTR):HMETAFILE;
+
+  function GetOutlineTextMetricsA(_para1:HDC; _para2:UINT; _para3:LPOUTLINETEXTMETRIC):UINT;
+
+  function GetTextExtentPointA(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function GetTextExtentPoint32A(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function GetTextExtentExPointA(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:longint; _para5:LPINT; 
+             _para6:LPINT; _para7:LPSIZE):WINBOOL;
+
+  function GetCharacterPlacementA(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:longint; _para5:LPGCP_RESULTS; 
+             _para6:DWORD):DWORD;
+
+(* Const before type ignored *)
+  function ResetDCA(_para1:HDC; var _para2:DEVMODE):HDC;
+
+  function RemoveFontResourceA(_para1:LPCSTR):WINBOOL;
+
+  function CopyEnhMetaFileA(_para1:HENHMETAFILE; _para2:LPCSTR):HENHMETAFILE;
+
+(* Const before type ignored *)
+  function CreateEnhMetaFileA(_para1:HDC; _para2:LPCSTR; var _para3:RECT; _para4:LPCSTR):HDC;
+
+  function GetEnhMetaFileA(_para1:LPCSTR):HENHMETAFILE;
+
+  function GetEnhMetaFileDescriptionA(_para1:HENHMETAFILE; _para2:UINT; _para3:LPSTR):UINT;
+
+  function GetTextMetricsA(_para1:HDC; _para2:LPTEXTMETRIC):WINBOOL;
+
+(* Const before type ignored *)
+  function StartDocA(_para1:HDC; var _para2:DOCINFO):longint;
+
+  function GetObjectA(_para1:HGDIOBJ; _para2:longint; _para3:LPVOID):longint;
+
+  function TextOutA(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR; _para5:longint):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ExtTextOutA(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; var _para5:RECT; 
+             _para6:LPCSTR; _para7:UINT; var _para8:INT):WINBOOL;
+
+(* Const before type ignored *)
+  function PolyTextOutA(_para1:HDC; var _para2:POLYTEXT; _para3:longint):WINBOOL;
+
+  function GetTextFaceA(_para1:HDC; _para2:longint; _para3:LPSTR):longint;
+
+  function GetKerningPairsA(_para1:HDC; _para2:DWORD; _para3:LPKERNINGPAIR):DWORD;
+
+  function CreateColorSpaceA(_para1:LPLOGCOLORSPACE):HCOLORSPACE;
+
+  function GetLogColorSpaceA(_para1:HCOLORSPACE; _para2:LPLOGCOLORSPACE; _para3:DWORD):WINBOOL;
+
+  function GetICMProfileA(_para1:HDC; _para2:DWORD; _para3:LPSTR):WINBOOL;
+
+  function SetICMProfileA(_para1:HDC; _para2:LPSTR):WINBOOL;
+
+  function UpdateICMRegKeyA(_para1:DWORD; _para2:DWORD; _para3:LPSTR; _para4:UINT):WINBOOL;
+
+  function EnumICMProfilesA(_para1:HDC; _para2:ICMENUMPROC; _para3:LPARAM):longint;
+
+  function PropertySheetA(lppsph:LPCPROPSHEETHEADER):longint;
+
+  function ImageList_LoadImageA(hi:HINSTANCE; lpbmp:LPCSTR; cx:longint; cGrow:longint; crMask:COLORREF; 
+             uType:UINT; uFlags:UINT):HIMAGELIST;
+
+  function CreateStatusWindowA(style:LONG; lpszText:LPCSTR; hwndParent:HWND; wID:UINT):HWND;
+
+  procedure DrawStatusTextA(hDC:HDC; lprc:LPRECT; pszText:LPCSTR; uFlags:UINT);
+
+  function GetOpenFileNameA(_para1:LPOPENFILENAME):WINBOOL;
+
+  function GetSaveFileNameA(_para1:LPOPENFILENAME):WINBOOL;
+
+  function GetFileTitleA(_para1:LPCSTR; _para2:LPSTR; _para3:WORD):integer;
+
+  function ChooseColorA(_para1:LPCHOOSECOLOR):WINBOOL;
+
+  function FindTextA(_para1:LPFINDREPLACE):HWND;
+
+  function ReplaceTextA(_para1:LPFINDREPLACE):HWND;
+
+  function ChooseFontA(_para1:LPCHOOSEFONT):WINBOOL;
+
+  function PrintDlgA(_para1:LPPRINTDLG):WINBOOL;
+
+  function PageSetupDlgA(_para1:LPPAGESETUPDLG):WINBOOL;
+
+  function CreateProcessA(lpApplicationName:LPCSTR; lpCommandLine:LPSTR; lpProcessAttributes:LPSECURITY_ATTRIBUTES; lpThreadAttributes:LPSECURITY_ATTRIBUTES; bInheritHandles:WINBOOL; 
+             dwCreationFlags:DWORD; lpEnvironment:LPVOID; lpCurrentDirectory:LPCSTR; lpStartupInfo:LPSTARTUPINFO; lpProcessInformation:LPPROCESS_INFORMATION):WINBOOL;
+
+  procedure GetStartupInfoA(lpStartupInfo:LPSTARTUPINFO);
+
+  function FindFirstFileA(lpFileName:LPCSTR; lpFindFileData:LPWIN32_FIND_DATA):HANDLE;
+
+  function FindNextFileA(hFindFile:HANDLE; lpFindFileData:LPWIN32_FIND_DATA):WINBOOL;
+
+  function GetVersionExA(lpVersionInformation:LPOSVERSIONINFO):WINBOOL;
+
+  { was #define dname(params) def_expr }
+  function CreateWindowA(lpClassName:LPCSTR; lpWindowName:LPCSTR; dwStyle:DWORD; X:longint;
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogA(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogIndirectA(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxA(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxIndirectA(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+
+(* Const before type ignored *)
+  function CreateDCA(_para1:LPCSTR; _para2:LPCSTR; _para3:LPCSTR; var _para4:DEVMODE):HDC;
+
+  function VerInstallFileA(uFlags:DWORD; szSrcFileName:LPSTR; szDestFileName:LPSTR; szSrcDir:LPSTR; szDestDir:LPSTR; 
+             szCurDir:LPSTR; szTmpFile:LPSTR; lpuTmpFileLen:PUINT):DWORD;
+
+  function GetFileVersionInfoSizeA(lptstrFilename:LPSTR; lpdwHandle:LPDWORD):DWORD;
+
+  function GetFileVersionInfoA(lptstrFilename:LPSTR; dwHandle:DWORD; dwLen:DWORD; lpData:LPVOID):WINBOOL;
+
+  function VerLanguageNameA(wLang:DWORD; szLang:LPSTR; nSize:DWORD):DWORD;
+
+(* Const before type ignored *)
+  function VerQueryValueA(pBlock:LPVOID; lpSubBlock:LPSTR; var lplpBuffer:LPVOID; puLen:PUINT):WINBOOL;
+
+  function VerFindFileA(uFlags:DWORD; szFileName:LPSTR; szWinDir:LPSTR; szAppDir:LPSTR; szCurDir:LPSTR; 
+             lpuCurDirLen:PUINT; szDestDir:LPSTR; lpuDestDirLen:PUINT):DWORD;
+
+  function RegConnectRegistryA(lpMachineName:LPSTR; hKey:HKEY; phkResult:PHKEY):LONG;
+
+  function RegCreateKeyA(hKey:HKEY; lpSubKey:LPCSTR; phkResult:PHKEY):LONG;
+
+  function RegCreateKeyExA(hKey:HKEY; lpSubKey:LPCSTR; Reserved:DWORD; lpClass:LPSTR; dwOptions:DWORD; 
+             samDesired:REGSAM; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; phkResult:PHKEY; lpdwDisposition:LPDWORD):LONG;
+
+  function RegDeleteKeyA(hKey:HKEY; lpSubKey:LPCSTR):LONG;
+
+  function RegDeleteValueA(hKey:HKEY; lpValueName:LPCSTR):LONG;
+
+  function RegEnumKeyA(hKey:HKEY; dwIndex:DWORD; lpName:LPSTR; cbName:DWORD):LONG;
+
+  function RegEnumKeyExA(hKey:HKEY; dwIndex:DWORD; lpName:LPSTR; lpcbName:LPDWORD; lpReserved:LPDWORD; 
+             lpClass:LPSTR; lpcbClass:LPDWORD; lpftLastWriteTime:PFILETIME):LONG;
+
+  function RegEnumValueA(hKey:HKEY; dwIndex:DWORD; lpValueName:LPSTR; lpcbValueName:LPDWORD; lpReserved:LPDWORD; 
+             lpType:LPDWORD; lpData:LPBYTE; lpcbData:LPDWORD):LONG;
+
+  function RegLoadKeyA(hKey:HKEY; lpSubKey:LPCSTR; lpFile:LPCSTR):LONG;
+
+  function RegOpenKeyA(hKey:HKEY; lpSubKey:LPCSTR; phkResult:PHKEY):LONG;
+
+  function RegOpenKeyExA(hKey:HKEY; lpSubKey:LPCSTR; ulOptions:DWORD; samDesired:REGSAM; phkResult:PHKEY):LONG;
+
+  function RegQueryInfoKeyA(hKey:HKEY; lpClass:LPSTR; lpcbClass:LPDWORD; lpReserved:LPDWORD; lpcSubKeys:LPDWORD; 
+             lpcbMaxSubKeyLen:LPDWORD; lpcbMaxClassLen:LPDWORD; lpcValues:LPDWORD; lpcbMaxValueNameLen:LPDWORD; lpcbMaxValueLen:LPDWORD; 
+             lpcbSecurityDescriptor:LPDWORD; lpftLastWriteTime:PFILETIME):LONG;
+
+  function RegQueryValueA(hKey:HKEY; lpSubKey:LPCSTR; lpValue:LPSTR; lpcbValue:PLONG):LONG;
+
+  function RegQueryMultipleValuesA(hKey:HKEY; val_list:PVALENT; num_vals:DWORD; lpValueBuf:LPSTR; ldwTotsize:LPDWORD):LONG;
+
+  function RegQueryValueExA(hKey:HKEY; lpValueName:LPCSTR; lpReserved:LPDWORD; lpType:LPDWORD; lpData:LPBYTE; 
+             lpcbData:LPDWORD):LONG;
+
+  function RegReplaceKeyA(hKey:HKEY; lpSubKey:LPCSTR; lpNewFile:LPCSTR; lpOldFile:LPCSTR):LONG;
+
+  function RegRestoreKeyA(hKey:HKEY; lpFile:LPCSTR; dwFlags:DWORD):LONG;
+
+  function RegSaveKeyA(hKey:HKEY; lpFile:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):LONG;
+
+  function RegSetValueA(hKey:HKEY; lpSubKey:LPCSTR; dwType:DWORD; lpData:LPCSTR; cbData:DWORD):LONG;
+
+(* Const before type ignored *)
+  function RegSetValueExA(hKey:HKEY; lpValueName:LPCSTR; Reserved:DWORD; dwType:DWORD; var lpData:BYTE; 
+             cbData:DWORD):LONG;
+
+  function RegUnLoadKeyA(hKey:HKEY; lpSubKey:LPCSTR):LONG;
+
+  function InitiateSystemShutdownA(lpMachineName:LPSTR; lpMessage:LPSTR; dwTimeout:DWORD; bForceAppsClosed:WINBOOL; bRebootAfterShutdown:WINBOOL):WINBOOL;
+
+  function AbortSystemShutdownA(lpMachineName:LPSTR):WINBOOL;
+
+  function CompareStringA(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCSTR; cchCount1:longint; lpString2:LPCSTR; 
+             cchCount2:longint):longint;
+
+  function LCMapStringA(Locale:LCID; dwMapFlags:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpDestStr:LPSTR; 
+             cchDest:longint):longint;
+
+  function GetLocaleInfoA(Locale:LCID; LCType:LCTYPE; lpLCData:LPSTR; cchData:longint):longint;
+
+  function SetLocaleInfoA(Locale:LCID; LCType:LCTYPE; lpLCData:LPCSTR):WINBOOL;
+
+(* Const before type ignored *)
+  function GetTimeFormatA(Locale:LCID; dwFlags:DWORD; var lpTime:SYSTEMTIME; lpFormat:LPCSTR; lpTimeStr:LPSTR; 
+             cchTime:longint):longint;
+
+(* Const before type ignored *)
+  function GetDateFormatA(Locale:LCID; dwFlags:DWORD; var lpDate:SYSTEMTIME; lpFormat:LPCSTR; lpDateStr:LPSTR; 
+             cchDate:longint):longint;
+
+(* Const before type ignored *)
+  function GetNumberFormatA(Locale:LCID; dwFlags:DWORD; lpValue:LPCSTR; var lpFormat:NUMBERFMT; lpNumberStr:LPSTR; 
+             cchNumber:longint):longint;
+
+(* Const before type ignored *)
+  function GetCurrencyFormatA(Locale:LCID; dwFlags:DWORD; lpValue:LPCSTR; var lpFormat:CURRENCYFMT; lpCurrencyStr:LPSTR; 
+             cchCurrency:longint):longint;
+
+  function EnumCalendarInfoA(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL;
+
+  function EnumTimeFormatsA(lpTimeFmtEnumProc:TIMEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL;
+
+  function EnumDateFormatsA(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL;
+
+  function GetStringTypeExA(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL;
+
+  function GetStringTypeA(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL;
+
+  function FoldStringA(dwMapFlags:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpDestStr:LPSTR; cchDest:longint):longint;
+
+  function EnumSystemLocalesA(lpLocaleEnumProc:LOCALE_ENUMPROC; dwFlags:DWORD):WINBOOL;
+
+  function EnumSystemCodePagesA(lpCodePageEnumProc:CODEPAGE_ENUMPROC; dwFlags:DWORD):WINBOOL;
+
+  function PeekConsoleInputA(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL;
+
+  function ReadConsoleInputA(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleInputA(hConsoleInput:HANDLE; var lpBuffer:INPUT_RECORD; nLength:DWORD; lpNumberOfEventsWritten:LPDWORD):WINBOOL;
+
+  function ReadConsoleOutputA(hConsoleOutput:HANDLE; lpBuffer:PCHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpReadRegion:PSMALL_RECT):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleOutputA(hConsoleOutput:HANDLE; var lpBuffer:CHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpWriteRegion:PSMALL_RECT):WINBOOL;
+
+  function ReadConsoleOutputCharacterA(hConsoleOutput:HANDLE; lpCharacter:LPSTR; nLength:DWORD; dwReadCoord:COORD; lpNumberOfCharsRead:LPDWORD):WINBOOL;
+
+  function WriteConsoleOutputCharacterA(hConsoleOutput:HANDLE; lpCharacter:LPCSTR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL;
+
+  function FillConsoleOutputCharacterA(hConsoleOutput:HANDLE; cCharacter:CHAR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ScrollConsoleScreenBufferA(hConsoleOutput:HANDLE; var lpScrollRectangle:SMALL_RECT; var lpClipRectangle:SMALL_RECT; dwDestinationOrigin:COORD; var lpFill:CHAR_INFO):WINBOOL;
+
+  function GetConsoleTitleA(lpConsoleTitle:LPSTR; nSize:DWORD):DWORD;
+
+  function SetConsoleTitleA(lpConsoleTitle:LPCSTR):WINBOOL;
+
+  function ReadConsoleA(hConsoleInput:HANDLE; lpBuffer:LPVOID; nNumberOfCharsToRead:DWORD; lpNumberOfCharsRead:LPDWORD; lpReserved:LPVOID):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleA(hConsoleOutput:HANDLE;lpBuffer:pointer; nNumberOfCharsToWrite:DWORD; lpNumberOfCharsWritten:LPDWORD; lpReserved:LPVOID):WINBOOL;
+
+  function WNetAddConnectionA(lpRemoteName:LPCSTR; lpPassword:LPCSTR; lpLocalName:LPCSTR):DWORD;
+
+  function WNetAddConnection2A(lpNetResource:LPNETRESOURCE; lpPassword:LPCSTR; lpUserName:LPCSTR; dwFlags:DWORD):DWORD;
+
+  function WNetAddConnection3A(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpPassword:LPCSTR; lpUserName:LPCSTR; dwFlags:DWORD):DWORD;
+
+  function WNetCancelConnectionA(lpName:LPCSTR; fForce:WINBOOL):DWORD;
+
+  function WNetCancelConnection2A(lpName:LPCSTR; dwFlags:DWORD; fForce:WINBOOL):DWORD;
+
+  function WNetGetConnectionA(lpLocalName:LPCSTR; lpRemoteName:LPSTR; lpnLength:LPDWORD):DWORD;
+
+  function WNetUseConnectionA(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpUserID:LPCSTR; lpPassword:LPCSTR; dwFlags:DWORD; 
+             lpAccessName:LPSTR; lpBufferSize:LPDWORD; lpResult:LPDWORD):DWORD;
+
+  function WNetSetConnectionA(lpName:LPCSTR; dwProperties:DWORD; pvValues:LPVOID):DWORD;
+
+  function WNetConnectionDialog1A(lpConnDlgStruct:LPCONNECTDLGSTRUCT):DWORD;
+
+  function WNetDisconnectDialog1A(lpConnDlgStruct:LPDISCDLGSTRUCT):DWORD;
+
+  function WNetOpenEnumA(dwScope:DWORD; dwType:DWORD; dwUsage:DWORD; lpNetResource:LPNETRESOURCE; lphEnum:LPHANDLE):DWORD;
+
+  function WNetEnumResourceA(hEnum:HANDLE; lpcCount:LPDWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetUniversalNameA(lpLocalPath:LPCSTR; dwInfoLevel:DWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetUserA(lpName:LPCSTR; lpUserName:LPSTR; lpnLength:LPDWORD):DWORD;
+
+  function WNetGetProviderNameA(dwNetType:DWORD; lpProviderName:LPSTR; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetNetworkInformationA(lpProvider:LPCSTR; lpNetInfoStruct:LPNETINFOSTRUCT):DWORD;
+
+  function WNetGetLastErrorA(lpError:LPDWORD; lpErrorBuf:LPSTR; nErrorBufSize:DWORD; lpNameBuf:LPSTR; nNameBufSize:DWORD):DWORD;
+
+  function MultinetGetConnectionPerformanceA(lpNetResource:LPNETRESOURCE; lpNetConnectInfoStruct:LPNETCONNECTINFOSTRUCT):DWORD;
+
+  function ChangeServiceConfigA(hService:SC_HANDLE; dwServiceType:DWORD; dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCSTR; 
+             lpLoadOrderGroup:LPCSTR; lpdwTagId:LPDWORD; lpDependencies:LPCSTR; lpServiceStartName:LPCSTR; lpPassword:LPCSTR; 
+             lpDisplayName:LPCSTR):WINBOOL;
+
+  function CreateServiceA(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; lpDisplayName:LPCSTR; dwDesiredAccess:DWORD; dwServiceType:DWORD; 
+             dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCSTR; lpLoadOrderGroup:LPCSTR; lpdwTagId:LPDWORD; 
+             lpDependencies:LPCSTR; lpServiceStartName:LPCSTR; lpPassword:LPCSTR):SC_HANDLE;
+
+  function EnumDependentServicesA(hService:SC_HANDLE; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD; 
+             lpServicesReturned:LPDWORD):WINBOOL;
+
+  function EnumServicesStatusA(hSCManager:SC_HANDLE; dwServiceType:DWORD; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; 
+             pcbBytesNeeded:LPDWORD; lpServicesReturned:LPDWORD; lpResumeHandle:LPDWORD):WINBOOL;
+
+  function GetServiceKeyNameA(hSCManager:SC_HANDLE; lpDisplayName:LPCSTR; lpServiceName:LPSTR; lpcchBuffer:LPDWORD):WINBOOL;
+
+  function GetServiceDisplayNameA(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; lpDisplayName:LPSTR; lpcchBuffer:LPDWORD):WINBOOL;
+
+  function OpenSCManagerA(lpMachineName:LPCSTR; lpDatabaseName:LPCSTR; dwDesiredAccess:DWORD):SC_HANDLE;
+
+  function OpenServiceA(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; dwDesiredAccess:DWORD):SC_HANDLE;
+
+  function QueryServiceConfigA(hService:SC_HANDLE; lpServiceConfig:LPQUERY_SERVICE_CONFIG; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+
+  function QueryServiceLockStatusA(hSCManager:SC_HANDLE; lpLockStatus:LPQUERY_SERVICE_LOCK_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+
+  function RegisterServiceCtrlHandlerA(lpServiceName:LPCSTR; lpHandlerProc:LPHANDLER_FUNCTION):SERVICE_STATUS_HANDLE;
+
+  function StartServiceCtrlDispatcherA(lpServiceStartTable:LPSERVICE_TABLE_ENTRY):WINBOOL;
+
+  function StartServiceA(hService:SC_HANDLE; dwNumServiceArgs:DWORD; var lpServiceArgVectors:LPCSTR):WINBOOL;
+
+  { Extensions to OpenGL  }
+  function wglUseFontBitmapsA(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD):WINBOOL;
+
+  function wglUseFontOutlinesA(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT; _para7:longint; _para8:LPGLYPHMETRICSFLOAT):WINBOOL;
+
+  { -------------------------------------  }
+  { From shellapi.h in old Cygnus headers  }
+  function DragQueryFileA(_para1:HDROP; _para2:cardinal; var _para3:char; _para4:cardinal):cardinal;
+
+  function ExtractAssociatedIconA(_para1:HINSTANCE; var _para2:char; var _para3:WORD):HICON;
+
+(* Const before type ignored *)
+  function ExtractIconA(_para1:HINSTANCE; var _para2:char; _para3:cardinal):HICON;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function FindExecutableA(var _para1:char; var _para2:char; var _para3:char):HINSTANCE;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ShellAboutA(_para1:HWND; var _para2:char; var _para3:char; _para4:HICON):longint;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ShellExecuteA(_para1:HWND; var _para2:char; var _para3:char; var _para4:char; var _para5:char; 
+             _para6:longint):HINSTANCE;
+
+  { end of stuff from shellapi.h in old Cygnus headers  }
+  { --------------------------------------------------  }
+  { From ddeml.h in old Cygnus headers  }
+  function DdeCreateStringHandleA(_para1:DWORD; var _para2:char; _para3:longint):HSZ;
+
+  function DdeInitializeA(var _para1:DWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT;
+
+  function DdeQueryStringA(_para1:DWORD; _para2:HSZ; var _para3:char; _para4:DWORD; _para5:longint):DWORD;
+
+  { end of stuff from ddeml.h in old Cygnus headers  }
+  { -----------------------------------------------  }
+  function LogonUserA(_para1:LPSTR; _para2:LPSTR; _para3:LPSTR; _para4:DWORD; _para5:DWORD; 
+             var _para6:HANDLE):WINBOOL;
+
+  function CreateProcessAsUserA(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; var _para4:SECURITY_ATTRIBUTES; var _para5:SECURITY_ATTRIBUTES; 
+             _para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCTSTR; var _para10:STARTUPINFO; 
+             var _para11:PROCESS_INFORMATION):WINBOOL;
+
+{ C++ end of extern C conditionnal removed }
+  { __cplusplus  }
+{$endif}
+  { _GNU_H_WINDOWS32_ASCIIFUNCTIONS  }
+
+{$endif read_interface}
+
+{$ifndef windows_include_files}
+  implementation
+
+    const External_library='kernel32'; {Setup as you need!}
+
+{$endif not windows_include_files}
+
+{$ifdef read_implementation}
+
+  function GetBinaryTypeA(lpApplicationName:LPCSTR; lpBinaryType:LPDWORD):WINBOOL; external External_library name 'GetBinaryTypeA';
+
+  function GetShortPathNameA(lpszLongPath:LPCSTR; lpszShortPath:LPSTR; cchBuffer:DWORD):DWORD; external External_library name 'GetShortPathNameA';
+
+  function GetEnvironmentStringsA:LPSTR; external External_library name 'GetEnvironmentStringsA';
+
+  function FreeEnvironmentStringsA(_para1:LPSTR):WINBOOL; external External_library name 'FreeEnvironmentStringsA';
+
+  function FormatMessageA(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPSTR; 
+             nSize:DWORD; var Arguments:va_list):DWORD; external External_library name 'FormatMessageA';
+
+  function CreateMailslotA(lpName:LPCSTR; nMaxMessageSize:DWORD; lReadTimeout:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE; external External_library name 'CreateMailslotA';
+
+  function lstrcmpA(lpString1:LPCSTR; lpString2:LPCSTR):longint; external External_library name 'lstrcmpA';
+
+  function lstrcmpiA(lpString1:LPCSTR; lpString2:LPCSTR):longint; external External_library name 'lstrcmpiA';
+
+  function lstrcpynA(lpString1:LPSTR; lpString2:LPCSTR; iMaxLength:longint):LPSTR; external External_library name 'lstrcpynA';
+
+  function lstrcpyA(lpString1:LPSTR; lpString2:LPCSTR):LPSTR; external External_library name 'lstrcpyA';
+
+  function lstrcatA(lpString1:LPSTR; lpString2:LPCSTR):LPSTR; external External_library name 'lstrcatA';
+
+  function lstrlenA(lpString:LPCSTR):longint; external External_library name 'lstrlenA';
+
+  function CreateMutexA(lpMutexAttributes:LPSECURITY_ATTRIBUTES; bInitialOwner:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'CreateMutexA';
+
+  function OpenMutexA(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'OpenMutexA';
+
+  function CreateEventA(lpEventAttributes:LPSECURITY_ATTRIBUTES; bManualReset:WINBOOL; bInitialState:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'CreateEventA';
+
+  function OpenEventA(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'OpenEventA';
+
+  function CreateSemaphoreA(lpSemaphoreAttributes:LPSECURITY_ATTRIBUTES; lInitialCount:LONG; lMaximumCount:LONG; lpName:LPCSTR):HANDLE; external External_library name 'CreateSemaphoreA';
+
+  function OpenSemaphoreA(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'OpenSemaphoreA';
+
+  function CreateFileMappingA(hFile:HANDLE; lpFileMappingAttributes:LPSECURITY_ATTRIBUTES; flProtect:DWORD; dwMaximumSizeHigh:DWORD; dwMaximumSizeLow:DWORD; 
+             lpName:LPCSTR):HANDLE; external External_library name 'CreateFileMappingA';
+
+  function OpenFileMappingA(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCSTR):HANDLE; external External_library name 'OpenFileMappingA';
+
+  function GetLogicalDriveStringsA(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD; external External_library name 'GetLogicalDriveStringsA';
+
+  function LoadLibraryA(lpLibFileName:LPCSTR):HINSTANCE; external External_library name 'LoadLibraryA';
+
+  function LoadLibraryExA(lpLibFileName:LPCSTR; hFile:HANDLE; dwFlags:DWORD):HINSTANCE; external External_library name 'LoadLibraryExA';
+
+  function GetModuleFileNameA(hModule:HINSTANCE; lpFilename:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetModuleFileNameA';
+
+  function GetModuleHandleA(lpModuleName:LPCSTR):HMODULE; external External_library name 'GetModuleHandleA';
+
+  procedure FatalAppExitA(uAction:UINT; lpMessageText:LPCSTR); external External_library name 'FatalAppExitA';
+
+  function GetCommandLineA:LPSTR; external External_library name 'GetCommandLineA';
+
+  function GetEnvironmentVariableA(lpName:LPCSTR; lpBuffer:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetEnvironmentVariableA';
+
+  function SetEnvironmentVariableA(lpName:LPCSTR; lpValue:LPCSTR):WINBOOL; external External_library name 'SetEnvironmentVariableA';
+
+  function ExpandEnvironmentStringsA(lpSrc:LPCSTR; lpDst:LPSTR; nSize:DWORD):DWORD; external External_library name 'ExpandEnvironmentStringsA';
+
+  procedure OutputDebugStringA(lpOutputString:LPCSTR); external External_library name 'OutputDebugStringA';
+
+  function FindResourceA(hModule:HINSTANCE; lpName:LPCSTR; lpType:LPCSTR):HRSRC; external External_library name 'FindResourceA';
+
+  function FindResourceExA(hModule:HINSTANCE; lpType:LPCSTR; lpName:LPCSTR; wLanguage:WORD):HRSRC; external External_library name 'FindResourceExA';
+
+  function EnumResourceTypesA(hModule:HINSTANCE; lpEnumFunc:ENUMRESTYPEPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceTypesA';
+
+  function EnumResourceNamesA(hModule:HINSTANCE; lpType:LPCSTR; lpEnumFunc:ENUMRESNAMEPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceNamesA';
+
+  function EnumResourceLanguagesA(hModule:HINSTANCE; lpType:LPCSTR; lpName:LPCSTR; lpEnumFunc:ENUMRESLANGPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceLanguagesA';
+
+  function BeginUpdateResourceA(pFileName:LPCSTR; bDeleteExistingResources:WINBOOL):HANDLE; external External_library name 'BeginUpdateResourceA';
+
+  function UpdateResourceA(hUpdate:HANDLE; lpType:LPCSTR; lpName:LPCSTR; wLanguage:WORD; lpData:LPVOID; 
+             cbData:DWORD):WINBOOL; external External_library name 'UpdateResourceA';
+
+  function EndUpdateResourceA(hUpdate:HANDLE; fDiscard:WINBOOL):WINBOOL; external External_library name 'EndUpdateResourceA';
+
+  function GlobalAddAtomA(lpString:LPCSTR):ATOM; external External_library name 'GlobalAddAtomA';
+
+  function GlobalFindAtomA(lpString:LPCSTR):ATOM; external External_library name 'GlobalFindAtomA';
+
+  function GlobalGetAtomNameA(nAtom:ATOM; lpBuffer:LPSTR; nSize:longint):UINT; external External_library name 'GlobalGetAtomNameA';
+
+  function AddAtomA(lpString:LPCSTR):ATOM; external External_library name 'AddAtomA';
+
+  function FindAtomA(lpString:LPCSTR):ATOM; external External_library name 'FindAtomA';
+
+  function GetAtomNameA(nAtom:ATOM; lpBuffer:LPSTR; nSize:longint):UINT; external External_library name 'GetAtomNameA';
+
+  function GetProfileIntA(lpAppName:LPCSTR; lpKeyName:LPCSTR; nDefault:INT):UINT; external External_library name 'GetProfileIntA';
+
+  function GetProfileStringA(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpDefault:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetProfileStringA';
+
+  function WriteProfileStringA(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpString:LPCSTR):WINBOOL; external External_library name 'WriteProfileStringA';
+
+  function GetProfileSectionA(lpAppName:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetProfileSectionA';
+
+  function WriteProfileSectionA(lpAppName:LPCSTR; lpString:LPCSTR):WINBOOL; external External_library name 'WriteProfileSectionA';
+
+  function GetPrivateProfileIntA(lpAppName:LPCSTR; lpKeyName:LPCSTR; nDefault:INT; lpFileName:LPCSTR):UINT; external External_library name 'GetPrivateProfileIntA';
+
+  function GetPrivateProfileStringA(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpDefault:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD; 
+             lpFileName:LPCSTR):DWORD; external External_library name 'GetPrivateProfileStringA';
+
+  function WritePrivateProfileStringA(lpAppName:LPCSTR; lpKeyName:LPCSTR; lpString:LPCSTR; lpFileName:LPCSTR):WINBOOL; external External_library name 'WritePrivateProfileStringA';
+
+  function GetPrivateProfileSectionA(lpAppName:LPCSTR; lpReturnedString:LPSTR; nSize:DWORD; lpFileName:LPCSTR):DWORD; external External_library name 'GetPrivateProfileSectionA';
+
+  function WritePrivateProfileSectionA(lpAppName:LPCSTR; lpString:LPCSTR; lpFileName:LPCSTR):WINBOOL; external External_library name 'WritePrivateProfileSectionA';
+
+  function GetDriveTypeA(lpRootPathName:LPCSTR):UINT; external External_library name 'GetDriveTypeA';
+
+  function GetSystemDirectoryA(lpBuffer:LPSTR; uSize:UINT):UINT; external External_library name 'GetSystemDirectoryA';
+
+  function GetTempPathA(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD; external External_library name 'GetTempPathA';
+
+  function GetTempFileNameA(lpPathName:LPCSTR; lpPrefixString:LPCSTR; uUnique:UINT; lpTempFileName:LPSTR):UINT; external External_library name 'GetTempFileNameA';
+
+  function GetWindowsDirectoryA(lpBuffer:LPSTR; uSize:UINT):UINT; external External_library name 'GetWindowsDirectoryA';
+
+  function SetCurrentDirectoryA(lpPathName:LPCSTR):WINBOOL; external External_library name 'SetCurrentDirectoryA';
+
+  function GetCurrentDirectoryA(nBufferLength:DWORD; lpBuffer:LPSTR):DWORD; external External_library name 'GetCurrentDirectoryA';
+
+  function GetDiskFreeSpaceA(lpRootPathName:LPCSTR; lpSectorsPerCluster:LPDWORD; lpBytesPerSector:LPDWORD; lpNumberOfFreeClusters:LPDWORD; lpTotalNumberOfClusters:LPDWORD):WINBOOL; external External_library name 'GetDiskFreeSpaceA';
+
+  function CreateDirectoryA(lpPathName:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL; external External_library name 'CreateDirectoryA';
+
+  function CreateDirectoryExA(lpTemplateDirectory:LPCSTR; lpNewDirectory:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL; external External_library name 'CreateDirectoryExA';
+
+  function RemoveDirectoryA(lpPathName:LPCSTR):WINBOOL; external External_library name 'RemoveDirectoryA';
+
+  function GetFullPathNameA(lpFileName:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR; var lpFilePart:LPSTR):DWORD; external External_library name 'GetFullPathNameA';
+
+  function DefineDosDeviceA(dwFlags:DWORD; lpDeviceName:LPCSTR; lpTargetPath:LPCSTR):WINBOOL; external External_library name 'DefineDosDeviceA';
+
+  function QueryDosDeviceA(lpDeviceName:LPCSTR; lpTargetPath:LPSTR; ucchMax:DWORD):DWORD; external External_library name 'QueryDosDeviceA';
+
+  function CreateFileA(lpFileName:LPCSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD; 
+             dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE; external External_library name 'CreateFileA';
+
+  function SetFileAttributesA(lpFileName:LPCSTR; dwFileAttributes:DWORD):WINBOOL; external External_library name 'SetFileAttributesA';
+
+  function GetFileAttributesA(lpFileName:LPCSTR):DWORD; external External_library name 'GetFileAttributesA';
+
+  function GetCompressedFileSizeA(lpFileName:LPCSTR; lpFileSizeHigh:LPDWORD):DWORD; external External_library name 'GetCompressedFileSizeA';
+
+  function DeleteFileA(lpFileName:LPCSTR):WINBOOL; external External_library name 'DeleteFileA';
+
+  function SearchPathA(lpPath:LPCSTR; lpFileName:LPCSTR; lpExtension:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR; 
+             var lpFilePart:LPSTR):DWORD; external External_library name 'SearchPathA';
+
+  function CopyFileA(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR; bFailIfExists:WINBOOL):WINBOOL; external External_library name 'CopyFileA';
+
+  function MoveFileA(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR):WINBOOL; external External_library name 'MoveFileA';
+
+  function MoveFileExA(lpExistingFileName:LPCSTR; lpNewFileName:LPCSTR; dwFlags:DWORD):WINBOOL; external External_library name 'MoveFileExA';
+
+  function CreateNamedPipeA(lpName:LPCSTR; dwOpenMode:DWORD; dwPipeMode:DWORD; nMaxInstances:DWORD; nOutBufferSize:DWORD; 
+             nInBufferSize:DWORD; nDefaultTimeOut:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE; external External_library name 'CreateNamedPipeA';
+
+  function GetNamedPipeHandleStateA(hNamedPipe:HANDLE; lpState:LPDWORD; lpCurInstances:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD; 
+             lpUserName:LPSTR; nMaxUserNameSize:DWORD):WINBOOL; external External_library name 'GetNamedPipeHandleStateA';
+
+  function CallNamedPipeA(lpNamedPipeName:LPCSTR; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; nTimeOut:DWORD):WINBOOL; external External_library name 'CallNamedPipeA';
+
+  function WaitNamedPipeA(lpNamedPipeName:LPCSTR; nTimeOut:DWORD):WINBOOL; external External_library name 'WaitNamedPipeA';
+
+  function SetVolumeLabelA(lpRootPathName:LPCSTR; lpVolumeName:LPCSTR):WINBOOL; external External_library name 'SetVolumeLabelA';
+
+  function GetVolumeInformationA(lpRootPathName:LPCSTR; lpVolumeNameBuffer:LPSTR; nVolumeNameSize:DWORD; lpVolumeSerialNumber:LPDWORD; lpMaximumComponentLength:LPDWORD; 
+             lpFileSystemFlags:LPDWORD; lpFileSystemNameBuffer:LPSTR; nFileSystemNameSize:DWORD):WINBOOL; external External_library name 'GetVolumeInformationA';
+
+  function ClearEventLogA(hEventLog:HANDLE; lpBackupFileName:LPCSTR):WINBOOL; external External_library name 'ClearEventLogA';
+
+  function BackupEventLogA(hEventLog:HANDLE; lpBackupFileName:LPCSTR):WINBOOL; external External_library name 'BackupEventLogA';
+
+  function OpenEventLogA(lpUNCServerName:LPCSTR; lpSourceName:LPCSTR):HANDLE; external External_library name 'OpenEventLogA';
+
+  function RegisterEventSourceA(lpUNCServerName:LPCSTR; lpSourceName:LPCSTR):HANDLE; external External_library name 'RegisterEventSourceA';
+
+  function OpenBackupEventLogA(lpUNCServerName:LPCSTR; lpFileName:LPCSTR):HANDLE; external External_library name 'OpenBackupEventLogA';
+
+  function ReadEventLogA(hEventLog:HANDLE; dwReadFlags:DWORD; dwRecordOffset:DWORD; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; 
+             var pnBytesRead:DWORD; var pnMinNumberOfBytesNeeded:DWORD):WINBOOL; external External_library name 'ReadEventLogA';
+
+  function ReportEventA(hEventLog:HANDLE; wType:WORD; wCategory:WORD; dwEventID:DWORD; lpUserSid:PSID; 
+             wNumStrings:WORD; dwDataSize:DWORD; var lpStrings:LPCSTR; lpRawData:LPVOID):WINBOOL; external External_library name 'ReportEventA';
+
+  function AccessCheckAndAuditAlarmA(SubsystemName:LPCSTR; HandleId:LPVOID; ObjectTypeName:LPSTR; ObjectName:LPSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL; external External_library name 'AccessCheckAndAuditAlarmA';
+
+  function ObjectOpenAuditAlarmA(SubsystemName:LPCSTR; HandleId:LPVOID; ObjectTypeName:LPSTR; ObjectName:LPSTR; pSecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             ClientToken:HANDLE; DesiredAccess:DWORD; GrantedAccess:DWORD; Privileges:PPRIVILEGE_SET; ObjectCreation:WINBOOL; 
+             AccessGranted:WINBOOL; GenerateOnClose:LPBOOL):WINBOOL; external External_library name 'ObjectOpenAuditAlarmA';
+
+  function ObjectPrivilegeAuditAlarmA(SubsystemName:LPCSTR; HandleId:LPVOID; ClientToken:HANDLE; DesiredAccess:DWORD; Privileges:PPRIVILEGE_SET; 
+             AccessGranted:WINBOOL):WINBOOL; external External_library name 'ObjectPrivilegeAuditAlarmA';
+
+  function ObjectCloseAuditAlarmA(SubsystemName:LPCSTR; HandleId:LPVOID; GenerateOnClose:WINBOOL):WINBOOL; external External_library name 'ObjectCloseAuditAlarmA';
+
+  function PrivilegedServiceAuditAlarmA(SubsystemName:LPCSTR; ServiceName:LPCSTR; ClientToken:HANDLE; Privileges:PPRIVILEGE_SET; AccessGranted:WINBOOL):WINBOOL; external External_library name 'PrivilegedServiceAuditAlarmA';
+
+  function SetFileSecurityA(lpFileName:LPCSTR; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL; external External_library name 'SetFileSecurityA';
+
+  function GetFileSecurityA(lpFileName:LPCSTR; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetFileSecurityA';
+
+  function FindFirstChangeNotificationA(lpPathName:LPCSTR; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD):HANDLE; external External_library name 'FindFirstChangeNotificationA';
+
+  function IsBadStringPtrA(lpsz:LPCSTR; ucchMax:UINT):WINBOOL; external External_library name 'IsBadStringPtrA';
+
+  function LookupAccountSidA(lpSystemName:LPCSTR; Sid:PSID; Name:LPSTR; cbName:LPDWORD; ReferencedDomainName:LPSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL; external External_library name 'LookupAccountSidA';
+
+  function LookupAccountNameA(lpSystemName:LPCSTR; lpAccountName:LPCSTR; Sid:PSID; cbSid:LPDWORD; ReferencedDomainName:LPSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL; external External_library name 'LookupAccountNameA';
+
+  function LookupPrivilegeValueA(lpSystemName:LPCSTR; lpName:LPCSTR; lpLuid:PLUID):WINBOOL; external External_library name 'LookupPrivilegeValueA';
+
+  function LookupPrivilegeNameA(lpSystemName:LPCSTR; lpLuid:PLUID; lpName:LPSTR; cbName:LPDWORD):WINBOOL; external External_library name 'LookupPrivilegeNameA';
+
+  function LookupPrivilegeDisplayNameA(lpSystemName:LPCSTR; lpName:LPCSTR; lpDisplayName:LPSTR; cbDisplayName:LPDWORD; lpLanguageId:LPDWORD):WINBOOL; external External_library name 'LookupPrivilegeDisplayNameA';
+
+  function BuildCommDCBA(lpDef:LPCSTR; lpDCB:LPDCB):WINBOOL; external External_library name 'BuildCommDCBA';
+
+  function BuildCommDCBAndTimeoutsA(lpDef:LPCSTR; lpDCB:LPDCB; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL; external External_library name 'BuildCommDCBAndTimeoutsA';
+
+  function CommConfigDialogA(lpszName:LPCSTR; hWnd:HWND; lpCC:LPCOMMCONFIG):WINBOOL; external External_library name 'CommConfigDialogA';
+
+  function GetDefaultCommConfigA(lpszName:LPCSTR; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL; external External_library name 'GetDefaultCommConfigA';
+
+  function SetDefaultCommConfigA(lpszName:LPCSTR; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL; external External_library name 'SetDefaultCommConfigA';
+
+  function GetComputerNameA(lpBuffer:LPSTR; nSize:LPDWORD):WINBOOL; external External_library name 'GetComputerNameA';
+
+  function SetComputerNameA(lpComputerName:LPCSTR):WINBOOL; external External_library name 'SetComputerNameA';
+
+  function GetUserNameA(lpBuffer:LPSTR; nSize:LPDWORD):WINBOOL; external External_library name 'GetUserNameA';
+
+  function wvsprintfA(_para1:LPSTR; _para2:LPCSTR; arglist:va_list):longint; external External_library name 'wvsprintfA';
+
+(*  function wsprintfA(_para1:LPSTR; _para2:LPCSTR; ...):longint;CDECL; external External_library name 'wsprintfA';
+  not implemented *)
+  
+  function LoadKeyboardLayoutA(pwszKLID:LPCSTR; Flags:UINT):HKL; external External_library name 'LoadKeyboardLayoutA';
+
+  function GetKeyboardLayoutNameA(pwszKLID:LPSTR):WINBOOL; external External_library name 'GetKeyboardLayoutNameA';
+
+  function CreateDesktopA(lpszDesktop:LPSTR; lpszDevice:LPSTR; pDevmode:LPDEVMODE; dwFlags:DWORD; dwDesiredAccess:DWORD; 
+             lpsa:LPSECURITY_ATTRIBUTES):HDESK; external External_library name 'CreateDesktopA';
+
+  function OpenDesktopA(lpszDesktop:LPSTR; dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK; external External_library name 'OpenDesktopA';
+
+  function EnumDesktopsA(hwinsta:HWINSTA; lpEnumFunc:DESKTOPENUMPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumDesktopsA';
+
+  function CreateWindowStationA(lpwinsta:LPSTR; dwReserved:DWORD; dwDesiredAccess:DWORD; lpsa:LPSECURITY_ATTRIBUTES):HWINSTA; external External_library name 'CreateWindowStationA';
+
+  function OpenWindowStationA(lpszWinSta:LPSTR; fInherit:WINBOOL; dwDesiredAccess:DWORD):HWINSTA; external External_library name 'OpenWindowStationA';
+
+  function EnumWindowStationsA(lpEnumFunc:ENUMWINDOWSTATIONPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumWindowStationsA';
+
+  function GetUserObjectInformationA(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetUserObjectInformationA';
+
+  function SetUserObjectInformationA(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD):WINBOOL; external External_library name 'SetUserObjectInformationA';
+
+  function RegisterWindowMessageA(lpString:LPCSTR):UINT; external External_library name 'RegisterWindowMessageA';
+
+  function GetMessageA(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT):WINBOOL; external External_library name 'GetMessageA';
+
+  function DispatchMessageA(var lpMsg:MSG):LONG; external External_library name 'DispatchMessageA';
+
+  function PeekMessageA(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT; wRemoveMsg:UINT):WINBOOL; external External_library name 'PeekMessageA';
+
+  function SendMessageA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'SendMessageA';
+
+  function SendMessageTimeoutA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; fuFlags:UINT; 
+             uTimeout:UINT; lpdwResult:LPDWORD):LRESULT; external External_library name 'SendMessageTimeoutA';
+
+  function SendNotifyMessageA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'SendNotifyMessageA';
+
+  function SendMessageCallbackA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; lpResultCallBack:SENDASYNCPROC; 
+             dwData:DWORD):WINBOOL; external External_library name 'SendMessageCallbackA';
+
+  function PostMessageA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'PostMessageA';
+
+  function PostThreadMessageA(idThread:DWORD; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'PostThreadMessageA';
+
+  function DefWindowProcA(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefWindowProcA';
+
+  function CallWindowProcA(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'CallWindowProcA';
+
+  function RegisterClassA(var lpWndClass:WNDCLASS):ATOM; external External_library name 'RegisterClassA';
+
+  function UnregisterClassA(lpClassName:LPCSTR; hInstance:HINSTANCE):WINBOOL; external External_library name 'UnregisterClassA';
+
+  function GetClassInfoA(hInstance:HINSTANCE; lpClassName:LPCSTR; lpWndClass:LPWNDCLASS):WINBOOL; external External_library name 'GetClassInfoA';
+
+  function RegisterClassExA(var _para1:WNDCLASSEX):ATOM; external External_library name 'RegisterClassExA';
+
+  function GetClassInfoExA(_para1:HINSTANCE; _para2:LPCSTR; _para3:LPWNDCLASSEX):WINBOOL; external External_library name 'GetClassInfoExA';
+
+  function CreateWindowExA(dwExStyle:DWORD; lpClassName:LPCSTR; lpWindowName:LPCSTR; dwStyle:DWORD; X:longint; 
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND; external External_library name 'CreateWindowExA';
+
+  function CreateDialogParamA(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND; external External_library name 'CreateDialogParamA';
+
+  function CreateDialogIndirectParamA(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND; external External_library name 'CreateDialogIndirectParamA';
+
+  function DialogBoxParamA(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint; external External_library name 'DialogBoxParamA';
+
+  function DialogBoxIndirectParamA(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint; external External_library name 'DialogBoxIndirectParamA';
+
+  function SetDlgItemTextA(hDlg:HWND; nIDDlgItem:longint; lpString:LPCSTR):WINBOOL; external External_library name 'SetDlgItemTextA';
+
+  function GetDlgItemTextA(hDlg:HWND; nIDDlgItem:longint; lpString:LPSTR; nMaxCount:longint):UINT; external External_library name 'GetDlgItemTextA';
+
+  function SendDlgItemMessageA(hDlg:HWND; nIDDlgItem:longint; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LONG; external External_library name 'SendDlgItemMessageA';
+
+  function DefDlgProcA(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefDlgProcA';
+
+  function CallMsgFilterA(lpMsg:LPMSG; nCode:longint):WINBOOL; external External_library name 'CallMsgFilterA';
+
+  function RegisterClipboardFormatA(lpszFormat:LPCSTR):UINT; external External_library name 'RegisterClipboardFormatA';
+
+  function GetClipboardFormatNameA(format:UINT; lpszFormatName:LPSTR; cchMaxCount:longint):longint; external External_library name 'GetClipboardFormatNameA';
+
+  function CharToOemA(lpszSrc:LPCSTR; lpszDst:LPSTR):WINBOOL; external External_library name 'CharToOemA';
+
+  function OemToCharA(lpszSrc:LPCSTR; lpszDst:LPSTR):WINBOOL; external External_library name 'OemToCharA';
+
+  function CharToOemBuffA(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL; external External_library name 'CharToOemBuffA';
+
+  function OemToCharBuffA(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL; external External_library name 'OemToCharBuffA';
+
+  function CharUpperA(lpsz:LPSTR):LPSTR; external External_library name 'CharUpperA';
+
+  function CharUpperBuffA(lpsz:LPSTR; cchLength:DWORD):DWORD; external External_library name 'CharUpperBuffA';
+
+  function CharLowerA(lpsz:LPSTR):LPSTR; external External_library name 'CharLowerA';
+
+  function CharLowerBuffA(lpsz:LPSTR; cchLength:DWORD):DWORD; external External_library name 'CharLowerBuffA';
+
+  function CharNextA(lpsz:LPCSTR):LPSTR; external External_library name 'CharNextA';
+
+  function CharPrevA(lpszStart:LPCSTR; lpszCurrent:LPCSTR):LPSTR; external External_library name 'CharPrevA';
+
+  function IsCharAlphaA(ch:CHAR):WINBOOL; external External_library name 'IsCharAlphaA';
+
+  function IsCharAlphaNumericA(ch:CHAR):WINBOOL; external External_library name 'IsCharAlphaNumericA';
+
+  function IsCharUpperA(ch:CHAR):WINBOOL; external External_library name 'IsCharUpperA';
+
+  function IsCharLowerA(ch:CHAR):WINBOOL; external External_library name 'IsCharLowerA';
+
+  function GetKeyNameTextA(lParam:LONG; lpString:LPSTR; nSize:longint):longint; external External_library name 'GetKeyNameTextA';
+
+  function VkKeyScanA(ch:CHAR):SHORT; external External_library name 'VkKeyScanA';
+
+  function VkKeyScanExA(ch:CHAR; dwhkl:HKL):SHORT; external External_library name 'VkKeyScanExA';
+
+  function MapVirtualKeyA(uCode:UINT; uMapType:UINT):UINT; external External_library name 'MapVirtualKeyA';
+
+  function MapVirtualKeyExA(uCode:UINT; uMapType:UINT; dwhkl:HKL):UINT; external External_library name 'MapVirtualKeyExA';
+
+  function LoadAcceleratorsA(hInstance:HINSTANCE; lpTableName:LPCSTR):HACCEL; external External_library name 'LoadAcceleratorsA';
+
+  function CreateAcceleratorTableA(_para1:LPACCEL; _para2:longint):HACCEL; external External_library name 'CreateAcceleratorTableA';
+
+  function CopyAcceleratorTableA(hAccelSrc:HACCEL; lpAccelDst:LPACCEL; cAccelEntries:longint):longint; external External_library name 'CopyAcceleratorTableA';
+
+  function TranslateAcceleratorA(hWnd:HWND; hAccTable:HACCEL; lpMsg:LPMSG):longint; external External_library name 'TranslateAcceleratorA';
+
+  function LoadMenuA(hInstance:HINSTANCE; lpMenuName:LPCSTR):HMENU; external External_library name 'LoadMenuA';
+
+  function LoadMenuIndirectA(var lpMenuTemplate:MENUTEMPLATE):HMENU; external External_library name 'LoadMenuIndirectA';
+
+  function ChangeMenuA(hMenu:HMENU; cmd:UINT; lpszNewItem:LPCSTR; cmdInsert:UINT; flags:UINT):WINBOOL; external External_library name 'ChangeMenuA';
+
+  function GetMenuStringA(hMenu:HMENU; uIDItem:UINT; lpString:LPSTR; nMaxCount:longint; uFlag:UINT):longint; external External_library name 'GetMenuStringA';
+
+  function InsertMenuA(hMenu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL; external External_library name 'InsertMenuA';
+
+  function AppendMenuA(hMenu:HMENU; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL; external External_library name 'AppendMenuA';
+
+  function ModifyMenuA(hMnu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCSTR):WINBOOL; external External_library name 'ModifyMenuA';
+
+  function InsertMenuItemA(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL; external External_library name 'InsertMenuItemA';
+
+  function GetMenuItemInfoA(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPMENUITEMINFO):WINBOOL; external External_library name 'GetMenuItemInfoA';
+
+  function SetMenuItemInfoA(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL; external External_library name 'SetMenuItemInfoA';
+
+  function DrawTextA(hDC:HDC; lpString:LPCSTR; nCount:longint; lpRect:LPRECT; uFormat:UINT):longint; external External_library name 'DrawTextA';
+
+  function DrawTextExA(_para1:HDC; _para2:LPSTR; _para3:longint; _para4:LPRECT; _para5:UINT; 
+             _para6:LPDRAWTEXTPARAMS):longint; external External_library name 'DrawTextExA';
+
+  function GrayStringA(hDC:HDC; hBrush:HBRUSH; lpOutputFunc:GRAYSTRINGPROC; lpData:LPARAM; nCount:longint; 
+             X:longint; Y:longint; nWidth:longint; nHeight:longint):WINBOOL; external External_library name 'GrayStringA';
+
+  function DrawStateA(_para1:HDC; _para2:HBRUSH; _para3:DRAWSTATEPROC; _para4:LPARAM; _para5:WPARAM; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:UINT):WINBOOL; external External_library name 'DrawStateA';
+
+  function TabbedTextOutA(hDC:HDC; X:longint; Y:longint; lpString:LPCSTR; nCount:longint; 
+             nTabPositions:longint; lpnTabStopPositions:LPINT; nTabOrigin:longint):LONG; external External_library name 'TabbedTextOutA';
+
+  function GetTabbedTextExtentA(hDC:HDC; lpString:LPCSTR; nCount:longint; nTabPositions:longint; lpnTabStopPositions:LPINT):DWORD; external External_library name 'GetTabbedTextExtentA';
+
+  function SetPropA(hWnd:HWND; lpString:LPCSTR; hData:HANDLE):WINBOOL; external External_library name 'SetPropA';
+
+  function GetPropA(hWnd:HWND; lpString:LPCSTR):HANDLE; external External_library name 'GetPropA';
+
+  function RemovePropA(hWnd:HWND; lpString:LPCSTR):HANDLE; external External_library name 'RemovePropA';
+
+  function EnumPropsExA(hWnd:HWND; lpEnumFunc:PROPENUMPROCEX; lParam:LPARAM):longint; external External_library name 'EnumPropsExA';
+
+  function EnumPropsA(hWnd:HWND; lpEnumFunc:PROPENUMPROC):longint; external External_library name 'EnumPropsA';
+
+  function SetWindowTextA(hWnd:HWND; lpString:LPCSTR):WINBOOL; external External_library name 'SetWindowTextA';
+
+  function GetWindowTextA(hWnd:HWND; lpString:LPSTR; nMaxCount:longint):longint; external External_library name 'GetWindowTextA';
+
+  function GetWindowTextLengthA(hWnd:HWND):longint; external External_library name 'GetWindowTextLengthA';
+
+  function MessageBoxA(hWnd:HWND; lpText:LPCSTR; lpCaption:LPCSTR; uType:UINT):longint; external External_library name 'MessageBoxA';
+
+  function MessageBoxExA(hWnd:HWND; lpText:LPCSTR; lpCaption:LPCSTR; uType:UINT; wLanguageId:WORD):longint; external External_library name 'MessageBoxExA';
+
+  function MessageBoxIndirectA(_para1:LPMSGBOXPARAMS):longint; external External_library name 'MessageBoxIndirectA';
+
+  function GetWindowLongA(hWnd:HWND; nIndex:longint):LONG; external External_library name 'GetWindowLongA';
+
+  function SetWindowLongA(hWnd:HWND; nIndex:longint; dwNewLong:LONG):LONG; external External_library name 'SetWindowLongA';
+
+  function GetClassLongA(hWnd:HWND; nIndex:longint):DWORD; external External_library name 'GetClassLongA';
+
+  function SetClassLongA(hWnd:HWND; nIndex:longint; dwNewLong:LONG):DWORD; external External_library name 'SetClassLongA';
+
+  function FindWindowA(lpClassName:LPCSTR; lpWindowName:LPCSTR):HWND; external External_library name 'FindWindowA';
+
+  function FindWindowExA(_para1:HWND; _para2:HWND; _para3:LPCSTR; _para4:LPCSTR):HWND; external External_library name 'FindWindowExA';
+
+  function GetClassNameA(hWnd:HWND; lpClassName:LPSTR; nMaxCount:longint):longint; external External_library name 'GetClassNameA';
+
+  function SetWindowsHookExA(idHook:longint; lpfn:HOOKPROC; hmod:HINSTANCE; dwThreadId:DWORD):HHOOK; external External_library name 'SetWindowsHookExA';
+
+  function LoadBitmapA(hInstance:HINSTANCE; lpBitmapName:LPCSTR):HBITMAP; external External_library name 'LoadBitmapA';
+
+  function LoadCursorA(hInstance:HINSTANCE; lpCursorName:LPCSTR):HCURSOR; external External_library name 'LoadCursorA';
+
+  function LoadCursorFromFileA(lpFileName:LPCSTR):HCURSOR; external External_library name 'LoadCursorFromFileA';
+
+  function LoadIconA(hInstance:HINSTANCE; lpIconName:LPCSTR):HICON; external External_library name 'LoadIconA';
+
+  function LoadImageA(_para1:HINSTANCE; _para2:LPCSTR; _para3:UINT; _para4:longint; _para5:longint; 
+             _para6:UINT):HANDLE; external External_library name 'LoadImageA';
+
+  function LoadStringA(hInstance:HINSTANCE; uID:UINT; lpBuffer:LPSTR; nBufferMax:longint):longint; external External_library name 'LoadStringA';
+
+  function IsDialogMessageA(hDlg:HWND; lpMsg:LPMSG):WINBOOL; external External_library name 'IsDialogMessageA';
+
+  function DlgDirListA(hDlg:HWND; lpPathSpec:LPSTR; nIDListBox:longint; nIDStaticPath:longint; uFileType:UINT):longint; external External_library name 'DlgDirListA';
+
+  function DlgDirSelectExA(hDlg:HWND; lpString:LPSTR; nCount:longint; nIDListBox:longint):WINBOOL; external External_library name 'DlgDirSelectExA';
+
+  function DlgDirListComboBoxA(hDlg:HWND; lpPathSpec:LPSTR; nIDComboBox:longint; nIDStaticPath:longint; uFiletype:UINT):longint; external External_library name 'DlgDirListComboBoxA';
+
+  function DlgDirSelectComboBoxExA(hDlg:HWND; lpString:LPSTR; nCount:longint; nIDComboBox:longint):WINBOOL; external External_library name 'DlgDirSelectComboBoxExA';
+
+  function DefFrameProcA(hWnd:HWND; hWndMDIClient:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefFrameProcA';
+
+  function DefMDIChildProcA(hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefMDIChildProcA';
+
+  function CreateMDIWindowA(lpClassName:LPSTR; lpWindowName:LPSTR; dwStyle:DWORD; X:longint; Y:longint; 
+             nWidth:longint; nHeight:longint; hWndParent:HWND; hInstance:HINSTANCE; lParam:LPARAM):HWND; external External_library name 'CreateMDIWindowA';
+
+  function WinHelpA(hWndMain:HWND; lpszHelp:LPCSTR; uCommand:UINT; dwData:DWORD):WINBOOL; external External_library name 'WinHelpA';
+
+  function ChangeDisplaySettingsA(lpDevMode:LPDEVMODE; dwFlags:DWORD):LONG; external External_library name 'ChangeDisplaySettingsA';
+
+  function EnumDisplaySettingsA(lpszDeviceName:LPCSTR; iModeNum:DWORD; lpDevMode:LPDEVMODE):WINBOOL; external External_library name 'EnumDisplaySettingsA';
+
+  function SystemParametersInfoA(uiAction:UINT; uiParam:UINT; pvParam:PVOID; fWinIni:UINT):WINBOOL; external External_library name 'SystemParametersInfoA';
+
+  function AddFontResourceA(_para1:LPCSTR):longint; external External_library name 'AddFontResourceA';
+
+  function CopyMetaFileA(_para1:HMETAFILE; _para2:LPCSTR):HMETAFILE; external External_library name 'CopyMetaFileA';
+
+  function CreateFontIndirectA(var _para1:LOGFONT):HFONT; external External_library name 'CreateFontIndirectA';
+
+  function CreateICA(_para1:LPCSTR; _para2:LPCSTR; _para3:LPCSTR; var _para4:DEVMODE):HDC; external External_library name 'CreateICA';
+
+  function CreateMetaFileA(_para1:LPCSTR):HDC; external External_library name 'CreateMetaFileA';
+
+  function CreateScalableFontResourceA(_para1:DWORD; _para2:LPCSTR; _para3:LPCSTR; _para4:LPCSTR):WINBOOL; external External_library name 'CreateScalableFontResourceA';
+
+  function DeviceCapabilitiesA(_para1:LPCSTR; _para2:LPCSTR; _para3:WORD; _para4:LPSTR; var _para5:DEVMODE):longint; external External_library name 'DeviceCapabilitiesA';
+
+  function EnumFontFamiliesExA(_para1:HDC; _para2:LPLOGFONT; _para3:FONTENUMEXPROC; _para4:LPARAM; _para5:DWORD):longint; external External_library name 'EnumFontFamiliesExA';
+
+  function EnumFontFamiliesA(_para1:HDC; _para2:LPCSTR; _para3:FONTENUMPROC; _para4:LPARAM):longint; external External_library name 'EnumFontFamiliesA';
+
+  function EnumFontsA(_para1:HDC; _para2:LPCSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external External_library name 'EnumFontsA';
+
+  function GetCharWidthA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL; external External_library name 'GetCharWidthA';
+
+  function GetCharWidth32A(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL; external External_library name 'GetCharWidth32A';
+
+  function GetCharWidthFloatA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:PFLOAT):WINBOOL; external External_library name 'GetCharWidthFloatA';
+
+  function GetCharABCWidthsA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABC):WINBOOL; external External_library name 'GetCharABCWidthsA';
+
+  function GetCharABCWidthsFloatA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABCFLOAT):WINBOOL; external External_library name 'GetCharABCWidthsFloatA';
+
+  function GetGlyphOutlineA(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPGLYPHMETRICS; _para5:DWORD; 
+             _para6:LPVOID; var _para7:MAT2):DWORD; external External_library name 'GetGlyphOutlineA';
+
+  function GetMetaFileA(_para1:LPCSTR):HMETAFILE; external External_library name 'GetMetaFileA';
+
+  function GetOutlineTextMetricsA(_para1:HDC; _para2:UINT; _para3:LPOUTLINETEXTMETRIC):UINT; external External_library name 'GetOutlineTextMetricsA';
+
+  function GetTextExtentPointA(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'GetTextExtentPointA';
+
+  function GetTextExtentPoint32A(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'GetTextExtentPoint32A';
+
+  function GetTextExtentExPointA(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:longint; _para5:LPINT; 
+             _para6:LPINT; _para7:LPSIZE):WINBOOL; external External_library name 'GetTextExtentExPointA';
+
+  function GetCharacterPlacementA(_para1:HDC; _para2:LPCSTR; _para3:longint; _para4:longint; _para5:LPGCP_RESULTS; 
+             _para6:DWORD):DWORD; external External_library name 'GetCharacterPlacementA';
+
+  function ResetDCA(_para1:HDC; var _para2:DEVMODE):HDC; external External_library name 'ResetDCA';
+
+  function RemoveFontResourceA(_para1:LPCSTR):WINBOOL; external External_library name 'RemoveFontResourceA';
+
+  function CopyEnhMetaFileA(_para1:HENHMETAFILE; _para2:LPCSTR):HENHMETAFILE; external External_library name 'CopyEnhMetaFileA';
+
+  function CreateEnhMetaFileA(_para1:HDC; _para2:LPCSTR; var _para3:RECT; _para4:LPCSTR):HDC; external External_library name 'CreateEnhMetaFileA';
+
+  function GetEnhMetaFileA(_para1:LPCSTR):HENHMETAFILE; external External_library name 'GetEnhMetaFileA';
+
+  function GetEnhMetaFileDescriptionA(_para1:HENHMETAFILE; _para2:UINT; _para3:LPSTR):UINT; external External_library name 'GetEnhMetaFileDescriptionA';
+
+  function GetTextMetricsA(_para1:HDC; _para2:LPTEXTMETRIC):WINBOOL; external External_library name 'GetTextMetricsA';
+
+  function StartDocA(_para1:HDC; var _para2:DOCINFO):longint; external External_library name 'StartDocA';
+
+  function GetObjectA(_para1:HGDIOBJ; _para2:longint; _para3:LPVOID):longint; external External_library name 'GetObjectA';
+
+  function TextOutA(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR; _para5:longint):WINBOOL; external External_library name 'TextOutA';
+
+  function ExtTextOutA(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; var _para5:RECT; 
+             _para6:LPCSTR; _para7:UINT; var _para8:INT):WINBOOL; external External_library name 'ExtTextOutA';
+
+  function PolyTextOutA(_para1:HDC; var _para2:POLYTEXT; _para3:longint):WINBOOL; external External_library name 'PolyTextOutA';
+
+  function GetTextFaceA(_para1:HDC; _para2:longint; _para3:LPSTR):longint; external External_library name 'GetTextFaceA';
+
+  function GetKerningPairsA(_para1:HDC; _para2:DWORD; _para3:LPKERNINGPAIR):DWORD; external External_library name 'GetKerningPairsA';
+
+  function CreateColorSpaceA(_para1:LPLOGCOLORSPACE):HCOLORSPACE; external External_library name 'CreateColorSpaceA';
+
+  function GetLogColorSpaceA(_para1:HCOLORSPACE; _para2:LPLOGCOLORSPACE; _para3:DWORD):WINBOOL; external External_library name 'GetLogColorSpaceA';
+
+  function GetICMProfileA(_para1:HDC; _para2:DWORD; _para3:LPSTR):WINBOOL; external External_library name 'GetICMProfileA';
+
+  function SetICMProfileA(_para1:HDC; _para2:LPSTR):WINBOOL; external External_library name 'SetICMProfileA';
+
+  function UpdateICMRegKeyA(_para1:DWORD; _para2:DWORD; _para3:LPSTR; _para4:UINT):WINBOOL; external External_library name 'UpdateICMRegKeyA';
+
+  function EnumICMProfilesA(_para1:HDC; _para2:ICMENUMPROC; _para3:LPARAM):longint; external External_library name 'EnumICMProfilesA';
+
+  function PropertySheetA(lppsph:LPCPROPSHEETHEADER):longint; external External_library name 'PropertySheetA';
+
+  function ImageList_LoadImageA(hi:HINSTANCE; lpbmp:LPCSTR; cx:longint; cGrow:longint; crMask:COLORREF; 
+             uType:UINT; uFlags:UINT):HIMAGELIST; external External_library name 'ImageList_LoadImageA';
+
+  function CreateStatusWindowA(style:LONG; lpszText:LPCSTR; hwndParent:HWND; wID:UINT):HWND; external External_library name 'CreateStatusWindowA';
+
+  procedure DrawStatusTextA(hDC:HDC; lprc:LPRECT; pszText:LPCSTR; uFlags:UINT); external External_library name 'DrawStatusTextA';
+
+  function GetOpenFileNameA(_para1:LPOPENFILENAME):WINBOOL; external External_library name 'GetOpenFileNameA';
+
+  function GetSaveFileNameA(_para1:LPOPENFILENAME):WINBOOL; external External_library name 'GetSaveFileNameA';
+
+  function GetFileTitleA(_para1:LPCSTR; _para2:LPSTR; _para3:WORD):integer; external External_library name 'GetFileTitleA';
+
+  function ChooseColorA(_para1:LPCHOOSECOLOR):WINBOOL; external External_library name 'ChooseColorA';
+
+  function FindTextA(_para1:LPFINDREPLACE):HWND; external External_library name 'FindTextA';
+
+  function ReplaceTextA(_para1:LPFINDREPLACE):HWND; external External_library name 'ReplaceTextA';
+
+  function ChooseFontA(_para1:LPCHOOSEFONT):WINBOOL; external External_library name 'ChooseFontA';
+
+  function PrintDlgA(_para1:LPPRINTDLG):WINBOOL; external External_library name 'PrintDlgA';
+
+  function PageSetupDlgA(_para1:LPPAGESETUPDLG):WINBOOL; external External_library name 'PageSetupDlgA';
+
+  function CreateProcessA(lpApplicationName:LPCSTR; lpCommandLine:LPSTR; lpProcessAttributes:LPSECURITY_ATTRIBUTES; lpThreadAttributes:LPSECURITY_ATTRIBUTES; bInheritHandles:WINBOOL; 
+             dwCreationFlags:DWORD; lpEnvironment:LPVOID; lpCurrentDirectory:LPCSTR; lpStartupInfo:LPSTARTUPINFO; lpProcessInformation:LPPROCESS_INFORMATION):WINBOOL; external External_library name 'CreateProcessA';
+
+  procedure GetStartupInfoA(lpStartupInfo:LPSTARTUPINFO); external External_library name 'GetStartupInfoA';
+
+  function FindFirstFileA(lpFileName:LPCSTR; lpFindFileData:LPWIN32_FIND_DATA):HANDLE; external External_library name 'FindFirstFileA';
+
+  function FindNextFileA(hFindFile:HANDLE; lpFindFileData:LPWIN32_FIND_DATA):WINBOOL; external External_library name 'FindNextFileA';
+
+  function GetVersionExA(lpVersionInformation:LPOSVERSIONINFO):WINBOOL; external External_library name 'GetVersionExA';
+
+  { was #define dname(params) def_expr }
+  function CreateWindowA(lpClassName:LPCSTR; lpWindowName:LPCSTR; dwStyle:DWORD; X:longint;
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+    begin
+       CreateWindowA:=CreateWindowExA(0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam);
+    end;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogA(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+    begin
+       CreateDialogA:=CreateDialogParamA(hInstance,lpTemplateName,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogIndirectA(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+    begin
+       CreateDialogIndirectA:=CreateDialogIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxA(hInstance:HINSTANCE; lpTemplateName:LPCSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+    begin
+       DialogBoxA:=DialogBoxParamA(hInstance,lpTemplateName,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxIndirectA(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+    begin
+       DialogBoxIndirectA:=DialogBoxIndirectParamA(hInstance,hDialogTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  function CreateDCA(_para1:LPCSTR; _para2:LPCSTR; _para3:LPCSTR; var _para4:DEVMODE):HDC; external External_library name 'CreateDCA';
+
+  function VerInstallFileA(uFlags:DWORD; szSrcFileName:LPSTR; szDestFileName:LPSTR; szSrcDir:LPSTR; szDestDir:LPSTR; 
+             szCurDir:LPSTR; szTmpFile:LPSTR; lpuTmpFileLen:PUINT):DWORD; external External_library name 'VerInstallFileA';
+
+  function GetFileVersionInfoSizeA(lptstrFilename:LPSTR; lpdwHandle:LPDWORD):DWORD; external External_library name 'GetFileVersionInfoSizeA';
+
+  function GetFileVersionInfoA(lptstrFilename:LPSTR; dwHandle:DWORD; dwLen:DWORD; lpData:LPVOID):WINBOOL; external External_library name 'GetFileVersionInfoA';
+
+  function VerLanguageNameA(wLang:DWORD; szLang:LPSTR; nSize:DWORD):DWORD; external External_library name 'VerLanguageNameA';
+
+  function VerQueryValueA(pBlock:LPVOID; lpSubBlock:LPSTR; var lplpBuffer:LPVOID; puLen:PUINT):WINBOOL; external External_library name 'VerQueryValueA';
+
+  function VerFindFileA(uFlags:DWORD; szFileName:LPSTR; szWinDir:LPSTR; szAppDir:LPSTR; szCurDir:LPSTR; 
+             lpuCurDirLen:PUINT; szDestDir:LPSTR; lpuDestDirLen:PUINT):DWORD; external External_library name 'VerFindFileA';
+
+  function RegConnectRegistryA(lpMachineName:LPSTR; hKey:HKEY; phkResult:PHKEY):LONG; external External_library name 'RegConnectRegistryA';
+
+  function RegCreateKeyA(hKey:HKEY; lpSubKey:LPCSTR; phkResult:PHKEY):LONG; external External_library name 'RegCreateKeyA';
+
+  function RegCreateKeyExA(hKey:HKEY; lpSubKey:LPCSTR; Reserved:DWORD; lpClass:LPSTR; dwOptions:DWORD; 
+             samDesired:REGSAM; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; phkResult:PHKEY; lpdwDisposition:LPDWORD):LONG; external External_library name 'RegCreateKeyExA';
+
+  function RegDeleteKeyA(hKey:HKEY; lpSubKey:LPCSTR):LONG; external External_library name 'RegDeleteKeyA';
+
+  function RegDeleteValueA(hKey:HKEY; lpValueName:LPCSTR):LONG; external External_library name 'RegDeleteValueA';
+
+  function RegEnumKeyA(hKey:HKEY; dwIndex:DWORD; lpName:LPSTR; cbName:DWORD):LONG; external External_library name 'RegEnumKeyA';
+
+  function RegEnumKeyExA(hKey:HKEY; dwIndex:DWORD; lpName:LPSTR; lpcbName:LPDWORD; lpReserved:LPDWORD; 
+             lpClass:LPSTR; lpcbClass:LPDWORD; lpftLastWriteTime:PFILETIME):LONG; external External_library name 'RegEnumKeyExA';
+
+  function RegEnumValueA(hKey:HKEY; dwIndex:DWORD; lpValueName:LPSTR; lpcbValueName:LPDWORD; lpReserved:LPDWORD; 
+             lpType:LPDWORD; lpData:LPBYTE; lpcbData:LPDWORD):LONG; external External_library name 'RegEnumValueA';
+
+  function RegLoadKeyA(hKey:HKEY; lpSubKey:LPCSTR; lpFile:LPCSTR):LONG; external External_library name 'RegLoadKeyA';
+
+  function RegOpenKeyA(hKey:HKEY; lpSubKey:LPCSTR; phkResult:PHKEY):LONG; external External_library name 'RegOpenKeyA';
+
+  function RegOpenKeyExA(hKey:HKEY; lpSubKey:LPCSTR; ulOptions:DWORD; samDesired:REGSAM; phkResult:PHKEY):LONG; external External_library name 'RegOpenKeyExA';
+
+  function RegQueryInfoKeyA(hKey:HKEY; lpClass:LPSTR; lpcbClass:LPDWORD; lpReserved:LPDWORD; lpcSubKeys:LPDWORD; 
+             lpcbMaxSubKeyLen:LPDWORD; lpcbMaxClassLen:LPDWORD; lpcValues:LPDWORD; lpcbMaxValueNameLen:LPDWORD; lpcbMaxValueLen:LPDWORD; 
+             lpcbSecurityDescriptor:LPDWORD; lpftLastWriteTime:PFILETIME):LONG; external External_library name 'RegQueryInfoKeyA';
+
+  function RegQueryValueA(hKey:HKEY; lpSubKey:LPCSTR; lpValue:LPSTR; lpcbValue:PLONG):LONG; external External_library name 'RegQueryValueA';
+
+  function RegQueryMultipleValuesA(hKey:HKEY; val_list:PVALENT; num_vals:DWORD; lpValueBuf:LPSTR; ldwTotsize:LPDWORD):LONG; external External_library name 'RegQueryMultipleValuesA';
+
+  function RegQueryValueExA(hKey:HKEY; lpValueName:LPCSTR; lpReserved:LPDWORD; lpType:LPDWORD; lpData:LPBYTE; 
+             lpcbData:LPDWORD):LONG; external External_library name 'RegQueryValueExA';
+
+  function RegReplaceKeyA(hKey:HKEY; lpSubKey:LPCSTR; lpNewFile:LPCSTR; lpOldFile:LPCSTR):LONG; external External_library name 'RegReplaceKeyA';
+
+  function RegRestoreKeyA(hKey:HKEY; lpFile:LPCSTR; dwFlags:DWORD):LONG; external External_library name 'RegRestoreKeyA';
+
+  function RegSaveKeyA(hKey:HKEY; lpFile:LPCSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):LONG; external External_library name 'RegSaveKeyA';
+
+  function RegSetValueA(hKey:HKEY; lpSubKey:LPCSTR; dwType:DWORD; lpData:LPCSTR; cbData:DWORD):LONG; external External_library name 'RegSetValueA';
+
+  function RegSetValueExA(hKey:HKEY; lpValueName:LPCSTR; Reserved:DWORD; dwType:DWORD; var lpData:BYTE; 
+             cbData:DWORD):LONG; external External_library name 'RegSetValueExA';
+
+  function RegUnLoadKeyA(hKey:HKEY; lpSubKey:LPCSTR):LONG; external External_library name 'RegUnLoadKeyA';
+
+  function InitiateSystemShutdownA(lpMachineName:LPSTR; lpMessage:LPSTR; dwTimeout:DWORD; bForceAppsClosed:WINBOOL; bRebootAfterShutdown:WINBOOL):WINBOOL; external External_library name 'InitiateSystemShutdownA';
+
+  function AbortSystemShutdownA(lpMachineName:LPSTR):WINBOOL; external External_library name 'AbortSystemShutdownA';
+
+  function CompareStringA(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCSTR; cchCount1:longint; lpString2:LPCSTR; 
+             cchCount2:longint):longint; external External_library name 'CompareStringA';
+
+  function LCMapStringA(Locale:LCID; dwMapFlags:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpDestStr:LPSTR; 
+             cchDest:longint):longint; external External_library name 'LCMapStringA';
+
+  function GetLocaleInfoA(Locale:LCID; LCType:LCTYPE; lpLCData:LPSTR; cchData:longint):longint; external External_library name 'GetLocaleInfoA';
+
+  function SetLocaleInfoA(Locale:LCID; LCType:LCTYPE; lpLCData:LPCSTR):WINBOOL; external External_library name 'SetLocaleInfoA';
+
+  function GetTimeFormatA(Locale:LCID; dwFlags:DWORD; var lpTime:SYSTEMTIME; lpFormat:LPCSTR; lpTimeStr:LPSTR; 
+             cchTime:longint):longint; external External_library name 'GetTimeFormatA';
+
+  function GetDateFormatA(Locale:LCID; dwFlags:DWORD; var lpDate:SYSTEMTIME; lpFormat:LPCSTR; lpDateStr:LPSTR; 
+             cchDate:longint):longint; external External_library name 'GetDateFormatA';
+
+  function GetNumberFormatA(Locale:LCID; dwFlags:DWORD; lpValue:LPCSTR; var lpFormat:NUMBERFMT; lpNumberStr:LPSTR; 
+             cchNumber:longint):longint; external External_library name 'GetNumberFormatA';
+
+  function GetCurrencyFormatA(Locale:LCID; dwFlags:DWORD; lpValue:LPCSTR; var lpFormat:CURRENCYFMT; lpCurrencyStr:LPSTR; 
+             cchCurrency:longint):longint; external External_library name 'GetCurrencyFormatA';
+
+  function EnumCalendarInfoA(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL; external External_library name 'EnumCalendarInfoA';
+
+  function EnumTimeFormatsA(lpTimeFmtEnumProc:TIMEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external External_library name 'EnumTimeFormatsA';
+
+  function EnumDateFormatsA(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external External_library name 'EnumDateFormatsA';
+
+  function GetStringTypeExA(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL; external External_library name 'GetStringTypeExA';
+
+  function GetStringTypeA(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL; external External_library name 'GetStringTypeA';
+
+  function FoldStringA(dwMapFlags:DWORD; lpSrcStr:LPCSTR; cchSrc:longint; lpDestStr:LPSTR; cchDest:longint):longint; external External_library name 'FoldStringA';
+
+  function EnumSystemLocalesA(lpLocaleEnumProc:LOCALE_ENUMPROC; dwFlags:DWORD):WINBOOL; external External_library name 'EnumSystemLocalesA';
+
+  function EnumSystemCodePagesA(lpCodePageEnumProc:CODEPAGE_ENUMPROC; dwFlags:DWORD):WINBOOL; external External_library name 'EnumSystemCodePagesA';
+
+  function PeekConsoleInputA(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL; external External_library name 'PeekConsoleInputA';
+
+  function ReadConsoleInputA(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL; external External_library name 'ReadConsoleInputA';
+
+  function WriteConsoleInputA(hConsoleInput:HANDLE; var lpBuffer:INPUT_RECORD; nLength:DWORD; lpNumberOfEventsWritten:LPDWORD):WINBOOL; external External_library name 'WriteConsoleInputA';
+
+  function ReadConsoleOutputA(hConsoleOutput:HANDLE; lpBuffer:PCHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpReadRegion:PSMALL_RECT):WINBOOL; external External_library name 'ReadConsoleOutputA';
+
+  function WriteConsoleOutputA(hConsoleOutput:HANDLE; var lpBuffer:CHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpWriteRegion:PSMALL_RECT):WINBOOL; external External_library name 'WriteConsoleOutputA';
+
+  function ReadConsoleOutputCharacterA(hConsoleOutput:HANDLE; lpCharacter:LPSTR; nLength:DWORD; dwReadCoord:COORD; lpNumberOfCharsRead:LPDWORD):WINBOOL; external External_library name 'ReadConsoleOutputCharacterA';
+
+  function WriteConsoleOutputCharacterA(hConsoleOutput:HANDLE; lpCharacter:LPCSTR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL; external External_library name 'WriteConsoleOutputCharacterA';
+
+  function FillConsoleOutputCharacterA(hConsoleOutput:HANDLE; cCharacter:CHAR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL; external External_library name 'FillConsoleOutputCharacterA';
+
+  function ScrollConsoleScreenBufferA(hConsoleOutput:HANDLE; var lpScrollRectangle:SMALL_RECT; var lpClipRectangle:SMALL_RECT; dwDestinationOrigin:COORD; var lpFill:CHAR_INFO):WINBOOL; external External_library name 'ScrollConsoleScreenBufferA';
+
+  function GetConsoleTitleA(lpConsoleTitle:LPSTR; nSize:DWORD):DWORD; external External_library name 'GetConsoleTitleA';
+
+  function SetConsoleTitleA(lpConsoleTitle:LPCSTR):WINBOOL; external External_library name 'SetConsoleTitleA';
+
+  function ReadConsoleA(hConsoleInput:HANDLE; lpBuffer:LPVOID; nNumberOfCharsToRead:DWORD; lpNumberOfCharsRead:LPDWORD; lpReserved:LPVOID):WINBOOL; external External_library name 'ReadConsoleA';
+
+  function WriteConsoleA(hConsoleOutput:HANDLE;lpBuffer:pointer; nNumberOfCharsToWrite:DWORD; lpNumberOfCharsWritten:LPDWORD; lpReserved:LPVOID):WINBOOL; external External_library name 'WriteConsoleA';
+
+  function WNetAddConnectionA(lpRemoteName:LPCSTR; lpPassword:LPCSTR; lpLocalName:LPCSTR):DWORD; external External_library name 'WNetAddConnectionA';
+
+  function WNetAddConnection2A(lpNetResource:LPNETRESOURCE; lpPassword:LPCSTR; lpUserName:LPCSTR; dwFlags:DWORD):DWORD; external External_library name 'WNetAddConnection2A';
+
+  function WNetAddConnection3A(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpPassword:LPCSTR; lpUserName:LPCSTR; dwFlags:DWORD):DWORD; external External_library name 'WNetAddConnection3A';
+
+  function WNetCancelConnectionA(lpName:LPCSTR; fForce:WINBOOL):DWORD; external External_library name 'WNetCancelConnectionA';
+
+  function WNetCancelConnection2A(lpName:LPCSTR; dwFlags:DWORD; fForce:WINBOOL):DWORD; external External_library name 'WNetCancelConnection2A';
+
+  function WNetGetConnectionA(lpLocalName:LPCSTR; lpRemoteName:LPSTR; lpnLength:LPDWORD):DWORD; external External_library name 'WNetGetConnectionA';
+
+  function WNetUseConnectionA(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpUserID:LPCSTR; lpPassword:LPCSTR; dwFlags:DWORD; 
+             lpAccessName:LPSTR; lpBufferSize:LPDWORD; lpResult:LPDWORD):DWORD; external External_library name 'WNetUseConnectionA';
+
+  function WNetSetConnectionA(lpName:LPCSTR; dwProperties:DWORD; pvValues:LPVOID):DWORD; external External_library name 'WNetSetConnectionA';
+
+  function WNetConnectionDialog1A(lpConnDlgStruct:LPCONNECTDLGSTRUCT):DWORD; external External_library name 'WNetConnectionDialog1A';
+
+  function WNetDisconnectDialog1A(lpConnDlgStruct:LPDISCDLGSTRUCT):DWORD; external External_library name 'WNetDisconnectDialog1A';
+
+  function WNetOpenEnumA(dwScope:DWORD; dwType:DWORD; dwUsage:DWORD; lpNetResource:LPNETRESOURCE; lphEnum:LPHANDLE):DWORD; external External_library name 'WNetOpenEnumA';
+
+  function WNetEnumResourceA(hEnum:HANDLE; lpcCount:LPDWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetEnumResourceA';
+
+  function WNetGetUniversalNameA(lpLocalPath:LPCSTR; dwInfoLevel:DWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetGetUniversalNameA';
+
+  function WNetGetUserA(lpName:LPCSTR; lpUserName:LPSTR; lpnLength:LPDWORD):DWORD; external External_library name 'WNetGetUserA';
+
+  function WNetGetProviderNameA(dwNetType:DWORD; lpProviderName:LPSTR; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetGetProviderNameA';
+
+  function WNetGetNetworkInformationA(lpProvider:LPCSTR; lpNetInfoStruct:LPNETINFOSTRUCT):DWORD; external External_library name 'WNetGetNetworkInformationA';
+
+  function WNetGetLastErrorA(lpError:LPDWORD; lpErrorBuf:LPSTR; nErrorBufSize:DWORD; lpNameBuf:LPSTR; nNameBufSize:DWORD):DWORD; external External_library name 'WNetGetLastErrorA';
+
+  function MultinetGetConnectionPerformanceA(lpNetResource:LPNETRESOURCE; lpNetConnectInfoStruct:LPNETCONNECTINFOSTRUCT):DWORD; external External_library name 'MultinetGetConnectionPerformanceA';
+
+  function ChangeServiceConfigA(hService:SC_HANDLE; dwServiceType:DWORD; dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCSTR; 
+             lpLoadOrderGroup:LPCSTR; lpdwTagId:LPDWORD; lpDependencies:LPCSTR; lpServiceStartName:LPCSTR; lpPassword:LPCSTR; 
+             lpDisplayName:LPCSTR):WINBOOL; external External_library name 'ChangeServiceConfigA';
+
+  function CreateServiceA(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; lpDisplayName:LPCSTR; dwDesiredAccess:DWORD; dwServiceType:DWORD; 
+             dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCSTR; lpLoadOrderGroup:LPCSTR; lpdwTagId:LPDWORD; 
+             lpDependencies:LPCSTR; lpServiceStartName:LPCSTR; lpPassword:LPCSTR):SC_HANDLE; external External_library name 'CreateServiceA';
+
+  function EnumDependentServicesA(hService:SC_HANDLE; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD; 
+             lpServicesReturned:LPDWORD):WINBOOL; external External_library name 'EnumDependentServicesA';
+
+  function EnumServicesStatusA(hSCManager:SC_HANDLE; dwServiceType:DWORD; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; 
+             pcbBytesNeeded:LPDWORD; lpServicesReturned:LPDWORD; lpResumeHandle:LPDWORD):WINBOOL; external External_library name 'EnumServicesStatusA';
+
+  function GetServiceKeyNameA(hSCManager:SC_HANDLE; lpDisplayName:LPCSTR; lpServiceName:LPSTR; lpcchBuffer:LPDWORD):WINBOOL; external External_library name 'GetServiceKeyNameA';
+
+  function GetServiceDisplayNameA(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; lpDisplayName:LPSTR; lpcchBuffer:LPDWORD):WINBOOL; external External_library name 'GetServiceDisplayNameA';
+
+  function OpenSCManagerA(lpMachineName:LPCSTR; lpDatabaseName:LPCSTR; dwDesiredAccess:DWORD):SC_HANDLE; external External_library name 'OpenSCManagerA';
+
+  function OpenServiceA(hSCManager:SC_HANDLE; lpServiceName:LPCSTR; dwDesiredAccess:DWORD):SC_HANDLE; external External_library name 'OpenServiceA';
+
+  function QueryServiceConfigA(hService:SC_HANDLE; lpServiceConfig:LPQUERY_SERVICE_CONFIG; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL; external External_library name 'QueryServiceConfigA';
+
+  function QueryServiceLockStatusA(hSCManager:SC_HANDLE; lpLockStatus:LPQUERY_SERVICE_LOCK_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL; external External_library name 'QueryServiceLockStatusA';
+
+  function RegisterServiceCtrlHandlerA(lpServiceName:LPCSTR; lpHandlerProc:LPHANDLER_FUNCTION):SERVICE_STATUS_HANDLE; external External_library name 'RegisterServiceCtrlHandlerA';
+
+  function StartServiceCtrlDispatcherA(lpServiceStartTable:LPSERVICE_TABLE_ENTRY):WINBOOL; external External_library name 'StartServiceCtrlDispatcherA';
+
+  function StartServiceA(hService:SC_HANDLE; dwNumServiceArgs:DWORD; var lpServiceArgVectors:LPCSTR):WINBOOL; external External_library name 'StartServiceA';
+
+  function wglUseFontBitmapsA(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD):WINBOOL; external External_library name 'wglUseFontBitmapsA';
+
+  function wglUseFontOutlinesA(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT; _para7:longint; _para8:LPGLYPHMETRICSFLOAT):WINBOOL; external External_library name 'wglUseFontOutlinesA';
+
+  function DragQueryFileA(_para1:HDROP; _para2:cardinal; var _para3:char; _para4:cardinal):cardinal; external External_library name 'DragQueryFileA';
+
+  function ExtractAssociatedIconA(_para1:HINSTANCE; var _para2:char; var _para3:WORD):HICON; external External_library name 'ExtractAssociatedIconA';
+
+  function ExtractIconA(_para1:HINSTANCE; var _para2:char; _para3:cardinal):HICON; external External_library name 'ExtractIconA';
+
+  function FindExecutableA(var _para1:char; var _para2:char; var _para3:char):HINSTANCE; external External_library name 'FindExecutableA';
+
+  function ShellAboutA(_para1:HWND; var _para2:char; var _para3:char; _para4:HICON):longint; external External_library name 'ShellAboutA';
+
+  function ShellExecuteA(_para1:HWND; var _para2:char; var _para3:char; var _para4:char; var _para5:char; 
+             _para6:longint):HINSTANCE; external External_library name 'ShellExecuteA';
+
+  function DdeCreateStringHandleA(_para1:DWORD; var _para2:char; _para3:longint):HSZ; external External_library name 'DdeCreateStringHandleA';
+
+  function DdeInitializeA(var _para1:DWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT; external External_library name 'DdeInitializeA';
+
+  function DdeQueryStringA(_para1:DWORD; _para2:HSZ; var _para3:char; _para4:DWORD; _para5:longint):DWORD; external External_library name 'DdeQueryStringA';
+
+  function LogonUserA(_para1:LPSTR; _para2:LPSTR; _para3:LPSTR; _para4:DWORD; _para5:DWORD; 
+             var _para6:HANDLE):WINBOOL; external External_library name 'LogonUserA';
+
+  function CreateProcessAsUserA(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; var _para4:SECURITY_ATTRIBUTES; var _para5:SECURITY_ATTRIBUTES; 
+             _para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCTSTR; var _para10:STARTUPINFO; 
+             var _para11:PROCESS_INFORMATION):WINBOOL; external External_library name 'CreateProcessAsUserA';
+
+{$endif read_implementation}
+
+{$ifndef windows_include_files}
+end.
+{$endif not windows_include_files}
+{
+  $Log$
+  Revision 1.1  1998-08-31 11:53:53  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+}

+ 1167 - 467
rtl/win32/base.pp

@@ -14,509 +14,1209 @@
 
  **********************************************************************}
 
-{
-    This file is generated using h2pas written by Florian Klaempfl,
-    but some modifications are done.
-
-    The C header file was base.h of the
-    GNU Windows32 API Library Version 0.1.2
-
- ****************************************************************************
-
-  FK     Florian Klaempfl
-  +      added
-  -      removed
-  *      modified
-
-  History (for more informations look to the rtl log file):
-      18th november 1997 version:
-         + started (FK)
-
-  ToDo:
-      o unicode strings
-
-  Not recommended to use:
-      #define HIBYTE(w)   ((BYTE) (((WORD) (w) >> 8) & 0xFF))
-      #define HIWORD(l)   ((WORD) (((DWORD) (l) >> 16) & 0xFFFF))
-      #define LOBYTE(w)   ((BYTE) (w))
-      #define LOWORD(l)   ((WORD) (l))
-
-  Unimplemented:
-      #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
-          (void)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(id), \
-          (LPARAM)(NMHDR FAR*)(pnmhdr))
-
-      #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
-          (fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam))
-
-      #define MAKELANGID(p, s) ((((WORD) (s)) << 10) | (WORD) (p))
-      #define PRIMARYLANGID(lgid)    ((WORD  )(lgid) & 0x3ff)
-      #define SUBLANGID(lgid)        ((WORD  )(lgid) >> 10)
-
-      #define LANGIDFROMLCID(lcid)   ((WORD) (lcid))
-      #define SORTIDFROMLCID(lcid) \
-                ((WORD  )((((DWORD)(lcid)) & 0x000FFFFF) >> 16))
-      #define MAKELCID(lgid, srtid)  \
-          ((DWORD)((((DWORD)((WORD)(srtid))) << 16) |  \
-                  ((DWORD)((WORD)(lgid)))))
-      #define MAKELPARAM(l, h)   ((LPARAM) MAKELONG(l, h))
-      #define MAKELRESULT(l, h)   ((LRESULT) MAKELONG(l, h))
-      #define MAKEPOINTS(l)   (*((POINTS FAR *) & (l)))
-      #define MAKEROP4(fore,back) \
-                (DWORD)((((back) << 8) & 0xFF000000) | (fore))
-      #define MAKEWPARAM(l, h)   ((WPARAM) MAKELONG(l, h))
-
-      #ifndef max
-      #define max(a, b)  (((a) > (b)) ? (a) : (b))
-      #endif
-
-      #ifndef min
-      #define min(a, b)  (((a) < (b)) ? (a) : (b))
-      #endif
-
-      #define PALETTEINDEX(i) \
-          ((COLORREF) (0x01000000 | (DWORD) (WORD) (i)))
-      #define PALETTERGB(r, g, b)  (0x02000000 | RGB(r, g, b))
-      #define POINTSTOPOINT(pt, pts)
-            (pt).x = (SHORT) LOWORD(pts);
-            (pt).y = (SHORT) HIWORD(pts);
-      #define POINTTOPOINTS(pt)
-          (MAKELONG((short) ((pt).x), (short) ((pt).y)))
-
-
-      #define SECURITY_NULL_SID_AUTHORITY     0,0,0,0,0,0
-      #define SECURITY_WORLD_SID_AUTHORITY    0,0,0,0,0,1
-      #define SECURITY_LOCAL_SID_AUTHORITY    0,0,0,0,0,2
-      #define SECURITY_CREATOR_SID_AUTHORITY  0,0,0,0,0,3
-      #define SECURITY_NON_UNIQUE_AUTHORITY   0,0,0,0,0,4
-      #define SECURITY_NT_AUTHORITY           0,0,0,0,0,5
-
- ****************************************************************************}
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
+
+
+{$ifndef windows_include_files}
 
 unit base;
 
+{  Automatically converted by H2PAS.EXE from base.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
+
+
   interface
 
-    type
-       ATOM = word;
-       { Changed from BOOL to WINBOOL to avoid Objective-C conflict}
-       WINBOOL = longint;
-       BOOL = longint;
-       CALTYPE = cardinal;
-       CALID = cardinal;
-       CCHAR = char;
-       WCHAR = word;
-       COLORREF = cardinal;
-       DWORD = cardinal;
-       THandle = cardinal;
-
-       DWORDLONG = double;
-       PDWORDLONG = ^DWORDLONG;
-       FLOAT = single;
-
-       HANDLE = THandle;
-       HACCEL = HANDLE;
-       HBITMAP = HANDLE;
-       HBRUSH = HANDLE;
-       HCOLORSPACE = HANDLE;
-       HCONV = HANDLE;
-       HCONVLIST = HANDLE;
-       HCURSOR = HANDLE;
-       HDC = HANDLE;
-       HDDEDATA = HANDLE;
-       HDESK = HANDLE;
-       HDWP = HANDLE;
-       HENHMETAFILE = HANDLE;
-       HFILE = longint;
-       HFONT = HANDLE;
-       HGDIOBJ = HANDLE;
-       HGLOBAL = HANDLE;
-       HGLRC = HANDLE;
-       HHOOK = HANDLE;
-       HICON = HANDLE;
-       HIMAGELIST = HANDLE;
-       HINSTANCE = HANDLE;
-       HKEY = HANDLE;
-       PHKEY = ^HANDLE;
-       HKL = HANDLE;
-       HLOCAL = HANDLE;
-       HMENU = HANDLE;
-       HMETAFILE = HANDLE;
-       HMODULE = HANDLE;
-       HPALETTE = HANDLE;
-       HPEN = HANDLE;
-       HRASCONN = HANDLE;
-       HRESULT = longint;
-       HRGN = HANDLE;
-       HRSRC = HANDLE;
-       HSZ = HANDLE;
-       HWINSTA = HANDLE;
-       HWND = HANDLE;
-       INT = longint;
-       LANGID = word;
-       LCID = DWORD;
-       LCTYPE = DWORD;
-       LONG = longint;
-       LONGLONG = double;
-       PLONGLONG = ^double;
-       LP = ^word;
-       LPARAM = longint;
-       LPBOOL = ^WINBOOL;
-       LPBYTE = ^BYTE;
-       LPCCH = ^CHAR;
-       LPCH = ^CHAR;
-       LPCOLORREF = ^COLORREF;
-       LPCSTR = pchar;
+{$endif not windows_include_files}
+
+{$ifdef read_interface}
+
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     Base.h
+  
+     Base definitions
+  
+     Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+  
+     Author: Scott Christley <[email protected]>
+  
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+
+{$ifndef _GNU_H_WINDOWS32_BASE}
+{$define _GNU_H_WINDOWS32_BASE}
+  {  Not convertable by H2PAS
+  #ifndef NULL
+  #ifdef __cplusplus
+  #define NULL  (0)
+  #else
+  #define NULL  ((void  )0)
+  #endif
+  #endif  !NULL  }
+  {  Not convertable by H2PAS
+  #define FALSE 0
+  #define TRUE 1
+   }
+{$ifndef RC_INVOKED}
+  { typedef ACMDRIVERENUMCB;
+  typedef ACMDRIVERPROC;
+  typedef ACMFILERCHOOSEHOOKPROC;
+  typedef ACMFILTERENUMCB;
+  typedef ACMFILTERTAGENUMCB;
+  typedef ACMFORMATCHOOSEHOOKPROC;
+  typedef ACMFORMATENUMCB;
+  typedef ACMFORMATTAGENUMCB;
+  typedef APPLET_PROC;
+   }
 
+  const
+     NULL : pchar = nil;
+  type
+
+     ATOM = word;
+  { Changed from BOOL to WINBOOL to avoid Objective-C conflict  }
+
+     WINBOOL = longint;
+  {  Not convertable by H2PAS
+  typedef unsigned char BOOLEAN;
+  typedef unsigned char BYTE;
+   }
+
+     CALTYPE = cardinal;
+
+     CALID = cardinal;
+
+     CCHAR = char;
+
+     COLORREF = cardinal;
+  {  Not convertable by H2PAS
+  #define CONST const
+   }
+  { Check VOID before defining CHAR, SHORT, and LONG  }
+{$ifndef VOID}
+  {  Not convertable by H2PAS
+  #define VOID void
+  typedef char CHAR;
+   }
+
+  type
+
+     SHORT = integer;
+
+     LONG = longint;
+{$endif}
+  {
+  typedef CTRYID;
+  typedef DLGPROC;
+   }
+
+  type
+
+     DWORD = cardinal;
+  { was unsigned long  }
+
+     DWORDLONG = double;
+
+     PDWORDLONG = ^DWORDLONG;
+  {
+  typedef EDITWORDBREAKPROC;
+  typedef ENHMFENUMPROC;
+  typedef ENUMRESLANGPROC;
+  typedef ENUMRESNAMEPROC;
+  typedef ENUMRESTYPEPROC;
+   }
+
+     FLOAT = real;
+  { typedef GLOBALHANDLE;  }
+
+     HANDLE = pointer;
+
+     HACCEL = HANDLE;
+
+     HBITMAP = HANDLE;
+
+     HBRUSH = HANDLE;
+
+     HCOLORSPACE = HANDLE;
+
+     HCONV = HANDLE;
+
+     HCONVLIST = HANDLE;
+
+     HCURSOR = HANDLE;
+
+     HDBC = HANDLE;
+
+     HDC = HANDLE;
+
+     HDDEDATA = HANDLE;
+
+     HDESK = HANDLE;
+
+     HDROP = HANDLE;
+
+     HDWP = HANDLE;
+
+     HENHMETAFILE = HANDLE;
+
+     HENV = HANDLE;
+
+     HFILE = longint;
+
+     HFONT = HANDLE;
+
+     HGDIOBJ = HANDLE;
+
+     HGLOBAL = HANDLE;
+
+     HGLRC = HANDLE;
+
+     HHOOK = HANDLE;
+
+     HICON = HANDLE;
+
+     HIMAGELIST = HANDLE;
+
+     HINSTANCE = HANDLE;
+
+     HKEY = HANDLE;
+
+     PHKEY = ^HKEY;
+
+     HKL = HANDLE;
+
+     HLOCAL = HANDLE;
+
+     HMENU = HANDLE;
+
+     HMETAFILE = HANDLE;
+
+     HMODULE = HANDLE;
+
+     HPALETTE = HANDLE;
+
+     HPEN = HANDLE;
+
+     HRASCONN = HANDLE;
+
+     HRESULT = longint;
+
+     HRGN = HANDLE;
+
+     HRSRC = HANDLE;
+
+     HSTMT = HANDLE;
+
+     HSZ = HANDLE;
+
+     HWINSTA = HANDLE;
+
+     HWND = HANDLE;
+
+     INT = longint;
+
+     LANGID = word;
+
+     LCID = DWORD;
+
+     LCTYPE = DWORD;
+  { typedef LOCALHANDLE  }
+
+     LONGLONG = double;
+
+     PLONGLONG = ^LONGLONG;
+
+     LP = ^word;
+
+     LPARAM = longint;
+
+     LPBOOL = ^WINBOOL;
+
+     LPBYTE = ^BYTE;
+(* Const before type ignored *)
+
+     LPCCH = ^CHAR;
+
+     LPCH = ^CHAR;
+
+     LPCOLORREF = ^COLORREF;
+(* Const before type ignored *)
+
+     LPCSTR = ^char;
 {$ifdef UNICODE}
-       LPCTSTR = ^word;
-{$else UNICODE}
-       LPCTSTR = ^char;
-{$endif UNICODE}
-
-       LPCWCH = ^word;
-       LPCWSTR = ^word;
-       LPDWORD = ^DWORD;
-       LPHANDLE = ^HANDLE;
-       LPINT = ^longint;
-       LPLONG = ^longint;
-       LPSTR = ^char;
-{$ifdef UNICODE}
-       LPTCH = ^word;
-       LPTSTR = ^word;
-{$else UNICODE}
-       LPTCH = ^char;
-       LPTSTR = ^char;
-{$endif UNICODE}
-       LRESULT = longint;
-       LPVOID = pointer;
-       LPCVOID = pointer;
-       LPWCH = ^word;
-       LPWORD = ^word;
-       LPWSTR = ^word;
-       NWPSTR = ^word;
-       PWINBOOL = ^WINBOOL;
-       PBOOLEAN = ^BYTE;
-       PBYTE = ^BYTE;
-       PCCH = ^CHAR;
-       PCH = ^CHAR;
-       PCHAR = ^CHAR;
-       PCSTR = ^char;
-       PCWCH = ^word;
-       PCWSTR = ^word;
-       PDWORD = ^DWORD;
-       PFLOAT = ^float;
-       PHANDLE = ^HANDLE;
-       PINT = ^longint;
-       PLONG = ^longint;
-       PSHORT = ^integer;
-       PSTR = ^char;
-       PSZ = ^char;
+(* Const before type ignored *)
+
+  type
+
+     LPCTSTR = ^word;
+{$else}
+(* Const before type ignored *)
+
+  type
+
+     LPCTSTR = ^char;
+{$endif}
+  { UNICODE  }
+(* Const before type ignored *)
+
+  type
+
+     LPCWCH = ^word;
+(* Const before type ignored *)
+
+     LPCWSTR = ^word;
+
+     LPDWORD = ^DWORD;
+  { typedef LPFRHOOKPROC;  }
+
+     LPHANDLE = ^HANDLE;
+  { typedef LPHANDLER_FUNCTION;  }
+
+     LPINT = ^longint;
+
+     LPLONG = ^longint;
+
+     LPSTR = ^char;
 {$ifdef UNICODE}
-       PTBYTE = ^word;
-       PTCH = ^word;
-       PTCHAR = ^word;
-       PTSTR = ^word;
-{$else UNICODE}
-       PTBYTE = ^char;
-       PTCH = ^char;
-       PTCHAR = ^char;
-       PTSTR = ^char;
-{$endif UNICODE}
-       PUCHAR = ^char;
-       PUINT = ^cardinal;
-       PULONG = ^cardinal;
-       PUSHORT = ^word;
-       PVOID = pointer;
-       PWCH = ^word;
-       PWCHAR = ^word;
-       PWORD = ^word;
-       SC_HANDLE = HANDLE;
-       SC_LOCK = LPVOID;
-       LPSC_HANDLE = ^SC_HANDLE;
-       SERVICE_STATUS_HANDLE = DWORD;
-       SHORT = integer;
+
+  type
+
+     LPTCH = ^word;
+
+     LPTSTR = ^word;
+{$else}
+
+  type
+
+     LPTCH = ^char;
+
+     LPTSTR = ^char;
+{$endif}
+  { UNICODE  }
+
+  type
+
+     LRESULT = longint;
+
+     LPVOID = pointer;
+(* Const before type ignored *)
+
+     LPCVOID = pointer;
+
+     LPWCH = ^word;
+
+     LPWORD = ^word;
+
+     LPWSTR = ^word;
+  { typedef NPSTR;  }
+
+     NWPSTR = ^word;
+
+     PWINBOOL = ^WINBOOL;
+
+     PBOOLEAN = ^BYTE;
+
+     PBYTE = ^BYTE;
+(* Const before type ignored *)
+
+     PCCH = ^CHAR;
+
+     PCH = ^CHAR;
+
+     PCHAR = ^CHAR;
+(* Const before type ignored *)
+
+     PCSTR = ^char;
+(* Const before type ignored *)
+
+     PCWCH = ^word;
+(* Const before type ignored *)
+
+     PCWSTR = ^word;
+
+     PDWORD = ^DWORD;
+
+     PFLOAT = ^real;
+
+     PHANDLE = ^HANDLE;
+  { typedef PHKEY;  }
+
+     PINT = ^longint;
+  { typedef LCID  PLCID;  }
+
+     PLONG = ^longint;
+
+     PSHORT = ^integer;
+  { typedef PSID;  }
+
+     PSTR = ^char;
+
+     PSZ = ^char;
 {$ifdef UNICODE}
-       TBYTE = word;
-       TCHAR = word;
-       BCHAR = word;
-{$else UNICODE}
-       TBYTE = char;
-       TCHAR = char;
-       BCHAR = BYTE;
-{$endif UNICODE}
-       UCHAR = char;
-       UINT = cardinal;
-       ULONG = cardinal;
-       USHORT = word;
-       WPARAM = longint;
-
-       ACL_INFORMATION_CLASS = (
-          AclRevisionInformation:=1,
-          AclSizeInformation);
-
-       MEDIA_TYPE = (
-         Unknown,
-         F5_1Pt2_512,
-         F3_1Pt44_512,
-         F3_2Pt88_512,
-         F3_20Pt8_512,
-         F3_720_512,
-         F5_360_512,
-         F5_320_512,
-         F5_320_1024,
-         F5_180_512,
-         F5_160_512,
-         RemovableMedia,
-         FixedMedia);
-
-    const
-       RASCS_DONE = $2000;
-       RASCS_PAUSED = $1000;
-
-    type
-       RASCONNSTATE = (
-         RASCS_OpenPort,
-         RASCS_PortOpened,
-         RASCS_ConnectDevice,
-         RASCS_DeviceConnected,
-         RASCS_AllDevicesConnected,
-         RASCS_Authenticate,
-         RASCS_AuthNotify,
-         RASCS_AuthRetry,
-         RASCS_AuthCallback,
-         RASCS_AuthChangePassword,
-         RASCS_AuthProject,
-         RASCS_AuthLinkSpeed,
-         RASCS_AuthAck,
-         RASCS_ReAuthenticate,
-         RASCS_Authenticated,
-         RASCS_PrepareForCallback,
-         RASCS_WaitForModemReset,
-         RASCS_WaitForCallback,
-         RASCS_Projected,
-         RASCS_StartAuthentication,
-         RASCS_CallbackComplete,
-         RASCS_LogonNetwork,
-         RASCS_Interactive:=RASCS_PAUSED,
-         RASCS_RetryAuthentication,
-         RASCS_CallbackSetByCaller,
-         RASCS_PasswordExpired,
-
-         RASCS_Connected:=RASCS_DONE,
-         RASCS_Disconnected);
-
-       RASPROJECTION = (
-         RASP_Amb:=$10000,
-         RASP_PppNbf:=$803F,
-         RASP_PppIpx:=$802B,
-         RASP_PppIp:=$8021);
-
-       SECURITY_IMPERSONATION_LEVEL = (
-         SecurityAnonymous,
-         SecurityIdentification,
-         SecurityImpersonation,
-         SecurityDelegation);
-
-       SID_NAME_USE = (
-         SidTypeUser:=1,
-         SidTypeGroup,
-         SidTypeDomain,
-         SidTypeAlias,
-         SidTypeWellKnownGroup,
-         SidTypeDeletedAccount,
-         SidTypeInvalid,
-         SidTypeUnknown);
-
-       PSID_NAME_USE = ^SID_NAME_USE;
-
-       TOKEN_INFORMATION_CLASS = (
-         TokenUser:=1,
-         TokenGroups,
-         TokenPrivileges,
-         TokenOwner,
-         TokenPrimaryGroup,
-         TokenDefaultDacl,
-         TokenSource,
-         TokenType,
-         TokenImpersonationLevel,
-         TokenStatistics);
-
-       TOKEN_TYPE = (
-         TokenPrimary:=1,
-         TokenImpersonation);
-
-       { Callbacks }
-       BFFCALLBACK = function(_para1:HWND; _para2:UINT; _para3:LPARAM; _para:LPARAM):longint;
-       LPCCHOOKPROC = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-       LPCFHOOKPROC = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-       PTHREAD_START_ROUTINE = function(_para1:LPVOID):DWORD;
-       LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
-       EDITSTREAMCALLBACK = function(_para1:DWORD; _para2:LPBYTE; _para3:LONG; _para4:LONG):DWORD;
-       LPFRHOOKPROC = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-       LPOFNHOOKPROC = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-       LPPRINTHOOKPROC = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-       LPSETUPHOOKPROC = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-       DLGPROC = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):WINBOOL;
-       PFNPROPSHEETCALLBACK = function(_para1:HWND; _para2:UINT; _para3:LPARAM):longint;
-       LPSERVICE_MAIN_FUNCTION = procedure(_para1:DWORD; _para2:LPTSTR);
-       PFNTVCOMPARE = function(_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
-       WNDPROC = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;
-       FARPROC = function:longint;
-       PROC = FARPROC;
-       ENUMRESTYPEPROC = function(_para1:HANDLE; _para2:LPTSTR; _para3:LONG):WINBOOL;
-       ENUMRESNAMEPROC = function(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LONG):WINBOOL;
-       ENUMRESLANGPROC = function(_para1:HANDLE; _para2:LPCTSTR; _para3:LPCTSTR; _para4:WORD; _para5:LONG):WINBOOL;
-       DESKTOPENUMPROC = FARPROC;
-       ENUMWINDOWSPROC = function(_para1:HWND; _para2:LPARAM):WINBOOL;
-       ENUMWINDOWSTATIONPROC = function(_para1:LPTSTR; _para2:LPARAM):WINBOOL;
-       SENDASYNCPROC = procedure(_para1:HWND; _para2:UINT; _para3:DWORD; _para4:LRESULT);
-       TIMERPROC = procedure(_para1:HWND; _para2:UINT; _para3:UINT; _para4:DWORD);
-       GRAYSTRINGPROC = FARPROC;
-       DRAWSTATEPROC = function(_para1:HDC; _para2:LPARAM; _para3:WPARAM; _para4:longint; _para5:longint):WINBOOL;
-       PROPENUMPROCEX = function(_para1:HWND; _para2:LPCTSTR; _para3:HANDLE; _para4:DWORD):WINBOOL;
-       PROPENUMPROC = function(_para1:HWND; _para2:LPCTSTR; _para3:HANDLE):WINBOOL;
-       HOOKPROC = function(_para1:longint; _para2:WPARAM; _para3:LPARAM):LRESULT;
-       ENUMOBJECTSPROC = procedure(_para1:LPVOID; _para2:LPARAM);
-       LINEDDAPROC = procedure(_para1:longint; _para2:longint; _para3:LPARAM);
-       ABORTPROC = function(_para1:HDC; _para2:longint):WINBOOL;
-       LPPAGEPAINTHOOK = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-       LPPAGESETUPHOOK = function(_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-       ICMENUMPROC = function(_para1:LPTSTR; _para2:LPARAM):longint;
-       EDITWORDBREAKPROCEX = function(_para1:pchar; _para2:LONG; _para3:BYTE; _para4:INT):LONG;
-       PFNLVCOMPARE = function(_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
-       LOCALE_ENUMPROC = function(_para1:LPTSTR):WINBOOL;
-       CODEPAGE_ENUMPROC = function(_para1:LPTSTR):WINBOOL;
-       DATEFMT_ENUMPROC = function(_para1:LPTSTR):WINBOOL;
-       TIMEFMT_ENUMPROC = function(_para1:LPTSTR):WINBOOL;
-       CALINFO_ENUMPROC = function(_para1:LPTSTR):WINBOOL;
-       PHANDLER_ROUTINE = function(_para1:DWORD):WINBOOL;
-       LPHANDLER_FUNCTION = function(_para1:DWORD):WINBOOL;
-       PFNGETPROFILEPATH = function(_para1:LPCTSTR; _para2:LPSTR; _para3:UINT):UINT;
-       PFNRECONCILEPROFILE = function(_para1:LPCTSTR; _para2:LPCTSTR; _para3:DWORD):UINT;
-       PFNPROCESSPOLICIES = function(_para1:HWND; _para2:LPCTSTR; _para3:LPCTSTR; _para4:LPCTSTR; _para5:DWORD):WINBOOL;
-
-    const
+
+  type
+
+     PTBYTE = ^word;
+
+     PTCH = ^word;
+
+     PTCHAR = ^word;
+
+     PTSTR = ^word;
+{$else}
+
+  type
+
+     PTBYTE = ^byte;
+
+     PTCH = ^char;
+
+     PTCHAR = ^char;
+
+     PTSTR = ^char;
+{$endif}
+  { UNICODE  }
+
+  type
+
+     PUCHAR = ^byte;
+
+     PUINT = ^cardinal;
+
+     PULONG = ^cardinal;
+
+     PUSHORT = ^word;
+
+     PVOID = pointer;
+
+     PWCH = ^word;
+
+     PWCHAR = ^word;
+
+     PWORD = ^word;
+  {
+  typedef PWSTR;
+  typedef REGSAM;
+   }
+
+     RETCODE = integer;
+
+     SC_HANDLE = HANDLE;
+
+     SC_LOCK = LPVOID;
+
+     LPSC_HANDLE = ^SC_HANDLE;
+
+     SERVICE_STATUS_HANDLE = DWORD;
+  { typedef SPHANDLE;  }
 {$ifdef UNICODE}
-       { !!!!! how do unicode support? }
-       SERVICES_ACTIVE_DATABASE       = SERVICES_ACTIVE_DATABASEW;
-       SERVICES_FAILED_DATABASE       = SERVICES_FAILED_DATABASEW;
-       SC_GROUP_IDENTIFIER            = SC_GROUP_IDENTIFIERW;
-{$else UNICODE}
-       SE_CREATE_TOKEN_NAME              = 'SeCreateTokenPrivilege';
-       SE_ASSIGNPRIMARYTOKEN_NAME        = 'SeAssignPrimaryTokenPrivilege';
-       SE_LOCK_MEMORY_NAME               = 'SeLockMemoryPrivilege';
-       SE_INCREASE_QUOTA_NAME            = 'SeIncreaseQuotaPrivilege';
-       SE_UNSOLICITED_INPUT_NAME         = 'SeUnsolicitedInputPrivilege';
-       SE_MACHINE_ACCOUNT_NAME           = 'SeMachineAccountPrivilege';
-       SE_TCB_NAME                       = 'SeTcbPrivilege';
-       SE_SECURITY_NAME                  = 'SeSecurityPrivilege';
-       SE_TAKE_OWNERSHIP_NAME            = 'SeTakeOwnershipPrivilege';
-       SE_LOAD_DRIVER_NAME               = 'SeLoadDriverPrivilege';
-       SE_SYSTEM_PROFILE_NAME            = 'SeSystemProfilePrivilege';
-       SE_SYSTEMTIME_NAME                = 'SeSystemtimePrivilege';
-       SE_PROF_SINGLE_PROCESS_NAME       = 'SeProfileSingleProcessPrivilege';
-       SE_INC_BASE_PRIORITY_NAME         = 'SeIncreaseBasePriorityPrivilege';
-       SE_CREATE_PAGEFILE_NAME           = 'SeCreatePagefilePrivilege';
-       SE_CREATE_PERMANENT_NAME          = 'SeCreatePermanentPrivilege';
-       SE_BACKUP_NAME                    = 'SeBackupPrivilege';
-       SE_RESTORE_NAME                   = 'SeRestorePrivilege';
-       SE_SHUTDOWN_NAME                  = 'SeShutdownPrivilege';
-       SE_DEBUG_NAME                     = 'SeDebugPrivilege';
-       SE_AUDIT_NAME                     = 'SeAuditPrivilege';
-       SE_SYSTEM_ENVIRONMENT_NAME        = 'SeSystemEnvironmentPrivilege';
-       SE_CHANGE_NOTIFY_NAME             = 'SeChangeNotifyPrivilege';
-       SE_REMOTE_SHUTDOWN_NAME           = 'SeRemoteShutdownPrivilege';
-
-       SERVICES_ACTIVE_DATABASEW      = 'ServicesActive';
-       SERVICES_FAILED_DATABASEW      = 'ServicesFailed';
-       SERVICES_ACTIVE_DATABASEA      = 'ServicesActive';
-       SERVICES_FAILED_DATABASEA      = 'ServicesFailed';
-       SC_GROUP_IDENTIFIERW           = '+';
-       SC_GROUP_IDENTIFIERA           = '+';
-       SERVICES_ACTIVE_DATABASE       = SERVICES_ACTIVE_DATABASEA;
-       SERVICES_FAILED_DATABASE       = SERVICES_FAILED_DATABASEA;
-       SC_GROUP_IDENTIFIER            = SC_GROUP_IDENTIFIERA;
-{$endif UNICODE}
-
-    function GetRValue(rgb : longint) : byte;
-    function GetGValue(rgb : longint) : byte;
-    function GetBValue(rgb : longint) : byte;
-    function RGB(r,g,b : byte) : longint;
-    function MAKELONG(a,b : word) : LONG;
-    function MAKEWORD(a,b : BYTE) : WORD;
-    function INDEXTOOVERLAYMASK(i : longint) : longint;
-    function INDEXTOSTATEIMAGEMASK(i : longint) : longint;
-    function MAKEINTATOM(i : word) : LPTSTR;
-    function MAKEINTRESOURCE(i : word) : LPTSTR;
 
-  implementation
+  type
+
+     TBYTE = word;
+
+     TCHAR = word;
+
+     BCHAR = word;
+{$else}
+
+  type
+
+     TBYTE = byte;
+
+     TCHAR = char;
+
+     BCHAR = BYTE;
+{$endif}
+  { UNICODE  }
+
+  type
+
+     UCHAR = byte;
+
+     UINT = cardinal;
+
+     ULONG = cardinal;
+
+     USHORT = word;
+
+     WCHAR = word;
+
+     WORD = word;
+
+     WPARAM = cardinal;
+  { typedef YIELDPROC;  }
+  { Only use __stdcall under WIN32 compiler  }
+  { #ifdef i386
+  #define STDCALL     __attribute__ ((stdcall))
+  #define CDECL       __cdecl
+  #define CALLBACK    WINAPI
+  #define PASCAL      WINAPI
+  #else
+  #define STDCALL
+  #define CDECL
+  #define CALLBACK
+  #define PASCAL
+  #endif
+  #define WINAPI      STDCALL
+  #define APIENTRY    STDCALL
+  #define WINGDIAPI
+  
+  #define _export
+      }
+  {
+    Enumerations
+   }
+
+     ACL_INFORMATION_CLASS = (AclRevisionInformation := 1,AclSizeInformation
+       );
+
+     _ACL_INFORMATION_CLASS = ACL_INFORMATION_CLASS;
+
+     MEDIA_TYPE = (Unknown,F5_1Pt2_512,F3_1Pt44_512,F3_2Pt88_512,
+       F3_20Pt8_512,F3_720_512,F5_360_512,F5_320_512,
+       F5_320_1024,F5_180_512,F5_160_512,RemovableMedia,
+       FixedMedia);
+
+     _MEDIA_TYPE = MEDIA_TYPE;
+
+  const
+     RASCS_DONE = $2000;
+     RASCS_PAUSED = $1000;
+
+  type
+
+     RASCONNSTATE = (RASCS_OpenPort := 0,RASCS_PortOpened,
+       RASCS_ConnectDevice,RASCS_DeviceConnected,
+       RASCS_AllDevicesConnected,RASCS_Authenticate,
+       RASCS_AuthNotify,RASCS_AuthRetry,RASCS_AuthCallback,
+       RASCS_AuthChangePassword,RASCS_AuthProject,
+       RASCS_AuthLinkSpeed,RASCS_AuthAck,RASCS_ReAuthenticate,
+       RASCS_Authenticated,RASCS_PrepareForCallback,
+       RASCS_WaitForModemReset,RASCS_WaitForCallback,
+       RASCS_Projected,RASCS_StartAuthentication,
+       RASCS_CallbackComplete,RASCS_LogonNetwork,
+       RASCS_Interactive := RASCS_PAUSED,RASCS_RetryAuthentication,
+       RASCS_CallbackSetByCaller,RASCS_PasswordExpired,
+       RASCS_Connected := RASCS_DONE,RASCS_Disconnected
+       );
 
-    function GetBValue(rgb : longint) : byte;
+     _RASCONNSTATE = RASCONNSTATE;
+
+     RASPROJECTION = (RASP_Amb := $10000,RASP_PppNbf := $803F,RASP_PppIpx := $802B,
+       RASP_PppIp := $8021);
+
+     _RASPROJECTION = RASPROJECTION;
+
+     SECURITY_IMPERSONATION_LEVEL = (SecurityAnonymous,SecurityIdentification,
+       SecurityImpersonation,SecurityDelegation
+       );
+
+     _SECURITY_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL;
+
+     SID_NAME_USE = (SidTypeUser := 1,SidTypeGroup,SidTypeDomain,
+       SidTypeAlias,SidTypeWellKnownGroup,SidTypeDeletedAccount,
+       SidTypeInvalid,SidTypeUnknown);
+
+     PSID_NAME_USE = ^SID_NAME_USE;
+
+     _SID_NAME_USE = SID_NAME_USE;
+
+     TOKEN_INFORMATION_CLASS = (TokenUser := 1,TokenGroups,TokenPrivileges,
+       TokenOwner,TokenPrimaryGroup,TokenDefaultDacl,
+       TokenSource,TokenType,TokenImpersonationLevel,
+       TokenStatistics);
+
+     _TOKEN_INFORMATION_CLASS = TOKEN_INFORMATION_CLASS;
+
+     TOKEN_TYPE = (TokenPrimary := 1,TokenImpersonation
+       );
+
+     tagTOKEN_TYPE = TOKEN_TYPE;
+{$endif}
+  { ! defined (RC_INVOKED)  }
+  {
+    Macros
+   }
+  {  Not convertable by H2PAS
+  #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
+      (void)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(id), \
+      (LPARAM)(NMHDR FAR )(pnmhdr)) 
+   }
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetBValue(rgb : longint) : BYTE;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetGValue(rgb : longint) : BYTE;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetRValue(rgb : longint) : BYTE;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function RGB(r,g,b : longint) : DWORD;
+
+  {  Not convertable by H2PAS
+  #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
+      (fn)((hwnd), (int)(wParam), (NMHDR FAR )(lParam)) 
+   }
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function HIBYTE(w : longint) : BYTE;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function HIWORD(l : longint) : WORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LOBYTE(w : longint) : BYTE;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LOWORD(l : longint) : WORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELONG(a,b : longint) : LONG;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEWORD(a,b : longint) : WORD;
+
+  { original Cygnus headers also had the following defined:  }
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function SEXT_HIWORD(l : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function ZEXT_HIWORD(l : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function SEXT_LOWORD(l : longint) : longint;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function INDEXTOOVERLAYMASK(i : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function INDEXTOSTATEIMAGEMASK(i : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEINTATOM(i : longint) : LPTSTR;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEINTRESOURCE(i : longint) : LPTSTR;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function MAKELANGID(p,s : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function PRIMARYLANGID(lgid : longint) : WORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function SUBLANGID(lgid : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LANGIDFROMLCID(lcid : longint) : WORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function SORTIDFROMLCID(lcid : longint) : WORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELCID(lgid,srtid : longint) : DWORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELPARAM(l,h : longint) : LPARAM;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELRESULT(l,h : longint) : LRESULT;
+
+  {  Not convertable by H2PAS
+  #define MAKEPOINTS(l)   ( ((POINTS FAR  ) & (l))) 
+   }
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEROP4(fore,back : longint) : DWORD;
 
-      begin
-         GetBValue:=(rgb shr 16) and $ff;
-      end;
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEWPARAM(l,h : longint) : WPARAM;
 
-    function GetGValue(rgb : longint) : byte;
+{$ifndef max}
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function max(a,b : longint) : longint;
+    { return type might be wrong }   
 
-      begin
-         GetGValue:=(rgb shr 8) and $ff;
-      end;
+{$endif}
+{$ifndef min}
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function min(a,b : longint) : longint;
+    { return type might be wrong }   
 
-    function GetRValue(rgb : longint) : byte;
+{$endif}
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function PALETTEINDEX(i : longint) : COLORREF;
 
-      begin
-         GetRValue:=rgb and $ff;
-      end;
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function PALETTERGB(r,g,b : longint) : longint;
+    { return type might be wrong }   
 
-    function RGB(r,g,b : byte) : longint;
+  (*  Not convertable by H2PAS
+  #define POINTSTOPOINT(pt, pts) {(pt).x = (SHORT) LOWORD(pts); \
+        (pt).y = (SHORT) HIWORD(pts);} 
+  #define POINTTOPOINTS(pt) \
+      (MAKELONG((short) ((pt).x), (short) ((pt).y))) 
+   *)
+  { already declared before
+  #define INDEXTOOVERLAYMASK(i) ((i) << 8)
+  #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)  
+   }
+  {  Not convertable by H2PAS
+  #ifdef UNICODE
+  #define TEXT(quote) L##quote 
+  #else
+  #define TEXT(quote) quote
+  #endif
+   }
+{$ifndef RC_INVOKED}
+  {
+     Definitions for callback procedures
+   }
 
-      begin
-         RGB:=r or (g shl 8) or (b shl 16);
-      end;
+  type
 
-    function MAKELONG(a,b : WORD) : LONG;
+     BFFCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM; _para4:LPARAM):longint;
 
-      begin
-         MAKELONG:=(a shl 16) or b;
-      end;
+     LPCCHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
 
-    function MAKEWORD(a,b : BYTE) : WORD;
+     LPCFHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
 
-      begin
-         MAKEWORD:=(a shl 8) or b;
-      end;
+     PTHREAD_START_ROUTINE = function (_para1:LPVOID):DWORD;
 
-    function INDEXTOOVERLAYMASK(i : longint) : longint;
+     LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
 
-      begin
-         INDEXTOOVERLAYMASK:=i shl 8;
-      end;
+     EDITSTREAMCALLBACK = function (_para1:DWORD; _para2:LPBYTE; _para3:LONG; _para4:LONG):DWORD;
 
-    function INDEXTOSTATEIMAGEMASK(i : longint) : longint;
+     LPFRHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
 
-      begin
-         INDEXTOSTATEIMAGEMASK:=i shl 12;
-      end;
+     LPOFNHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
 
-    function MAKEINTATOM(i : word) : LPTSTR;
+     LPPRINTHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
 
-      begin
-         MAKEINTATOM:=LPTSTR(DWORD(i));
-      end;
+     LPSETUPHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
 
-    function MAKEINTRESOURCE(i : word) : LPTSTR;
+     DLGPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):WINBOOL;
 
-      begin
-         MAKEINTRESOURCE:=LPTSTR(DWORD(i));
-      end;
+     PFNPROPSHEETCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM):longint;
 
+     LPSERVICE_MAIN_FUNCTION = procedure (_para1:DWORD; _para2:LPTSTR);
+
+     PFNTVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
+
+     WNDPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;
+
+     FARPROC = function :longint;
+
+     PROC = FARPROC;
+
+     ENUMRESTYPEPROC = function (_para1:HANDLE; _para2:LPTSTR; _para3:LONG):WINBOOL;
+
+     ENUMRESNAMEPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LONG):WINBOOL;
+
+     ENUMRESLANGPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPCTSTR; _para4:WORD; _para5:LONG):WINBOOL;
+
+     DESKTOPENUMPROC = FARPROC;
+
+     ENUMWINDOWSPROC = function (_para1:HWND; _para2:LPARAM):WINBOOL;
+
+     ENUMWINDOWSTATIONPROC = function (_para1:LPTSTR; _para2:LPARAM):WINBOOL;
+
+     SENDASYNCPROC = procedure (_para1:HWND; _para2:UINT; _para3:DWORD; _para4:LRESULT);
+
+     TIMERPROC = procedure (_para1:HWND; _para2:UINT; _para3:UINT; _para4:DWORD);
+
+     GRAYSTRINGPROC = FARPROC;
+
+     DRAWSTATEPROC = function (_para1:HDC; _para2:LPARAM; _para3:WPARAM; _para4:longint; _para5:longint):WINBOOL;
+
+     PROPENUMPROCEX = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE; _para4:DWORD):WINBOOL;
+
+     PROPENUMPROC = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE):WINBOOL;
+
+     HOOKPROC = function (_para1:longint; _para2:WPARAM; _para3:LPARAM):LRESULT;
+
+     ENUMOBJECTSPROC = procedure (_para1:LPVOID; _para2:LPARAM);
+
+     LINEDDAPROC = procedure (_para1:longint; _para2:longint; _para3:LPARAM);
+
+     { ABORTPROC = function (_para1:HDC; _para2:longint):WINBOOL;
+     conflicts with the function AbortProc !! }
+     TABORTPROC = function (_para1:HDC; _para2:longint):WINBOOL;
+
+     LPPAGEPAINTHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     LPPAGESETUPHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     ICMENUMPROC = function (_para1:LPTSTR; _para2:LPARAM):longint;
+
+     EDITWORDBREAKPROCEX = function (_para1:pchar; _para2:LONG; _para3:BYTE; _para4:INT):LONG;CDECL;
+
+     PFNLVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
+
+     LOCALE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+
+     CODEPAGE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+
+     DATEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+
+     TIMEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+
+     CALINFO_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+
+     PHANDLER_ROUTINE = function (_para1:DWORD):WINBOOL;
+
+     LPHANDLER_FUNCTION = function (_para1:DWORD):WINBOOL;
+
+     PFNGETPROFILEPATH = function (_para1:LPCTSTR; _para2:LPSTR; _para3:UINT):UINT;
+
+     PFNRECONCILEPROFILE = function (_para1:LPCTSTR; _para2:LPCTSTR; _para3:DWORD):UINT;
+
+     PFNPROCESSPOLICIES = function (_para1:HWND; _para2:LPCTSTR; _para3:LPCTSTR; _para4:LPCTSTR; _para5:DWORD):WINBOOL;
+  (*  Not convertable by H2PAS
+  #define SECURITY_NULL_SID_AUTHORITY     {0,0,0,0,0,0}
+  #define SECURITY_WORLD_SID_AUTHORITY    {0,0,0,0,0,1}
+  #define SECURITY_LOCAL_SID_AUTHORITY    {0,0,0,0,0,2}
+  #define SECURITY_CREATOR_SID_AUTHORITY  {0,0,0,0,0,3}
+  #define SECURITY_NON_UNIQUE_AUTHORITY   {0,0,0,0,0,4}
+  #define SECURITY_NT_AUTHORITY           {0,0,0,0,0,5}
+   *)
+  { TEXT("String") replaced by "String" below for H2PAS  }
+
+  const
+     SE_CREATE_TOKEN_NAME = 'SeCreateTokenPrivilege';
+     SE_ASSIGNPRIMARYTOKEN_NAME = 'SeAssignPrimaryTokenPrivilege';
+     SE_LOCK_MEMORY_NAME = 'SeLockMemoryPrivilege';
+     SE_INCREASE_QUOTA_NAME = 'SeIncreaseQuotaPrivilege';
+     SE_UNSOLICITED_INPUT_NAME = 'SeUnsolicitedInputPrivilege';
+     SE_MACHINE_ACCOUNT_NAME = 'SeMachineAccountPrivilege';
+     SE_TCB_NAME = 'SeTcbPrivilege';
+     SE_SECURITY_NAME = 'SeSecurityPrivilege';
+     SE_TAKE_OWNERSHIP_NAME = 'SeTakeOwnershipPrivilege';
+     SE_LOAD_DRIVER_NAME = 'SeLoadDriverPrivilege';
+     SE_SYSTEM_PROFILE_NAME = 'SeSystemProfilePrivilege';
+     SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege';
+     SE_PROF_SINGLE_PROCESS_NAME = 'SeProfileSingleProcessPrivilege';
+     SE_INC_BASE_PRIORITY_NAME = 'SeIncreaseBasePriorityPrivilege';
+     SE_CREATE_PAGEFILE_NAME = 'SeCreatePagefilePrivilege';
+     SE_CREATE_PERMANENT_NAME = 'SeCreatePermanentPrivilege';
+     SE_BACKUP_NAME = 'SeBackupPrivilege';
+     SE_RESTORE_NAME = 'SeRestorePrivilege';
+     SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
+     SE_DEBUG_NAME = 'SeDebugPrivilege';
+     SE_AUDIT_NAME = 'SeAuditPrivilege';
+     SE_SYSTEM_ENVIRONMENT_NAME = 'SeSystemEnvironmentPrivilege';
+     SE_CHANGE_NOTIFY_NAME = 'SeChangeNotifyPrivilege';
+     SE_REMOTE_SHUTDOWN_NAME = 'SeRemoteShutdownPrivilege';
+  {  Not convertable by H2PAS
+  #define SERVICES_ACTIVE_DATABASEW      L"ServicesActive"
+  #define SERVICES_FAILED_DATABASEW      L"ServicesFailed"
+   }
+     SERVICES_ACTIVE_DATABASEA = 'ServicesActive';
+     SERVICES_FAILED_DATABASEA = 'ServicesFailed';
+  {  Not convertable by H2PAS
+  #define SC_GROUP_IDENTIFIERW           L'+'
+   }
+     SC_GROUP_IDENTIFIERA = '+';
+{$ifdef UNICODE}
+
+  const
+     SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEW;
+     SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEW;
+     SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERW;
+{$else}
+
+  const
+     SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEA;
+     SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEA;
+     SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERA;
+{$endif}
+  { UNICODE  }
+  { ----------------------------------  }
+  { From ddeml.h in old Cygnus headers  }
+
+  type
+
+     CALLB = procedure ;CDECL;
+
+     PFNCALLBACK = CALLB;
+
+     SECURITY_CONTEXT_TRACKING_MODE = WINBOOL;
+  { End of stuff from ddeml.h in old Cygnus headers  }
+  { -----------------------------------------------  }
+
+     WNDENUMPROC = FARPROC;
+
+     ENHMFENUMPROC = FARPROC;
+
+     CCSTYLE = DWORD;
+
+     PCCSTYLE = ^CCSTYLE;
+
+     LPCCSTYLE = ^CCSTYLE;
+
+     CCSTYLEFLAGA = DWORD;
+
+     PCCSTYLEFLAGA = ^CCSTYLEFLAGA;
+
+     LPCCSTYLEFLAGA = ^CCSTYLEFLAGA;
+  {  Not convertable by H2PAS
+  #define DECLARE_HANDLE(s) typedef HANDLE s
+   }
+{$endif}
+  { ! defined (RC_INVOKED)  }
+{$endif}
+  { _GNU_H_WINDOWS32_BASE  }
+
+{$endif read_interface}
+
+{$ifndef windows_include_files}
+  implementation
+{$endif not windows_include_files}
+
+{$ifdef read_implementation}
+
+ { const External_library='kernel32';  not used in base }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetBValue(rgb : longint) : BYTE;
+    begin
+       GetBValue:=BYTE(rgb shr 16);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetGValue(rgb : longint) : BYTE;
+    begin
+       GetGValue:=BYTE((WORD(rgb)) shr 8);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetRValue(rgb : longint) : BYTE;
+    begin
+       GetRValue:=BYTE(rgb);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function RGB(r,g,b : longint) : DWORD;
+    begin
+       RGB:=DWORD(((BYTE(r)) or ((WORD(g)) shl 8)) or ((DWORD(BYTE(b))) shl 16));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function HIBYTE(w : longint) : BYTE;
+    begin
+       HIBYTE:=BYTE(((WORD(w)) shr 8) and $FF);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function HIWORD(l : longint) : WORD;
+    begin
+       HIWORD:=WORD(((DWORD(l)) shr 16) and $FFFF);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LOBYTE(w : longint) : BYTE;
+    begin
+       LOBYTE:=BYTE(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LOWORD(l : longint) : WORD;
+    begin
+       LOWORD:=WORD(l);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELONG(a,b : longint) : LONG;
+    begin
+       MAKELONG:=LONG((WORD(a)) or ((DWORD(WORD(b))) shl 16));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEWORD(a,b : longint) : WORD;
+    begin
+       MAKEWORD:=WORD((BYTE(a)) or ((WORD(BYTE(b))) shl 8));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function SEXT_HIWORD(l : longint) : longint;
+    { return type might be wrong }   
+    begin
+       SEXT_HIWORD:=(longint(l)) shr 16;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function ZEXT_HIWORD(l : longint) : longint;
+    { return type might be wrong }   
+    begin
+       ZEXT_HIWORD:=(cardinal(l)) shr 16;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function SEXT_LOWORD(l : longint) : longint;
+    begin
+       SEXT_LOWORD:=longint(integer(l));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function INDEXTOOVERLAYMASK(i : longint) : longint;
+    { return type might be wrong }   
+    begin
+       INDEXTOOVERLAYMASK:=i shl 8;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function INDEXTOSTATEIMAGEMASK(i : longint) : longint;
+    { return type might be wrong }   
+    begin
+       INDEXTOSTATEIMAGEMASK:=i shl 12;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEINTATOM(i : longint) : LPTSTR;
+    begin
+       MAKEINTATOM:=LPTSTR(DWORD(WORD(i)));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEINTRESOURCE(i : longint) : LPTSTR;
+    begin
+       MAKEINTRESOURCE:=LPTSTR(DWORD(WORD(i)));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function MAKELANGID(p,s : longint) : longint;
+    { return type might be wrong }   
+    begin
+       MAKELANGID:=((WORD(s)) shl 10) or (WORD(p));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function PRIMARYLANGID(lgid : longint) : WORD;
+    begin
+       { PRIMARYLANGID:=WORD(lgid(@($3ff)));
+         h2pas error here corrected by hand PM }
+       PRIMARYLANGID:=WORD(lgid) and ($3ff);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function SUBLANGID(lgid : longint) : longint;
+    { return type might be wrong }   
+    begin
+       SUBLANGID:=(WORD(lgid)) shr 10;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LANGIDFROMLCID(lcid : longint) : WORD;
+    begin
+       LANGIDFROMLCID:=WORD(lcid);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function SORTIDFROMLCID(lcid : longint) : WORD;
+    begin
+       SORTIDFROMLCID:=WORD(((DWORD(lcid)) and $000FFFFF) shr 16);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELCID(lgid,srtid : longint) : DWORD;
+    begin
+       MAKELCID:=DWORD(((DWORD(WORD(srtid))) shl 16) or (DWORD(WORD(lgid))));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELPARAM(l,h : longint) : LPARAM;
+    begin
+       MAKELPARAM:=LPARAM(MAKELONG(l,h));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELRESULT(l,h : longint) : LRESULT;
+    begin
+       MAKELRESULT:=LRESULT(MAKELONG(l,h));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEROP4(fore,back : longint) : DWORD;
+    begin
+       MAKEROP4:=DWORD(((back shl 8) and $FF000000) or fore);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEWPARAM(l,h : longint) : WPARAM;
+    begin
+       MAKEWPARAM:=WPARAM(MAKELONG(l,h));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function max(a,b : longint) : longint;
+    { return type might be wrong }   
+    var
+       if_local1 : longint;
+    (* result types are not known *)
+    begin
+       if a > b then
+         if_local1:=a
+       else
+         if_local1:=b;
+       max:=if_local1;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function min(a,b : longint) : longint;
+    { return type might be wrong }   
+    var
+       if_local1 : longint;
+    (* result types are not known *)
+    begin
+       if a < b then
+         if_local1:=a
+       else
+         if_local1:=b;
+       min:=if_local1;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function PALETTEINDEX(i : longint) : COLORREF;
+    begin
+       PALETTEINDEX:=COLORREF($01000000 or (DWORD(WORD(i))));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function PALETTERGB(r,g,b : longint) : longint;
+    { return type might be wrong }   
+    begin
+       PALETTERGB:=$02000000 or (RGB(r,g,b));
+    end;
+
+{$endif read_implementation}
+
+
+{$ifndef windows_include_files}
 end.
+{$endif not windows_include_files}
 
 {
   $Log$
-  Revision 1.4  1998-06-10 10:39:11  peter
+  Revision 1.5  1998-08-31 11:53:53  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+  Revision 1.4  1998/06/10 10:39:11  peter
     * working w32 rtl
 
 }

+ 5713 - 4393
rtl/win32/defines.pp

@@ -13,4410 +13,5730 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
  **********************************************************************}
-{
-    This file is generated using h2pas written by Florian Klaempfl,
-    but some modifications are done.
-
-    The C header file was defines.h of the
-    GNU Windows32 API Library Version 0.1.2
-
- ****************************************************************************
-
-  FK     Florian Klaempfl
-  +      added
-  -      removed
-  *      modified
-
-  History (started with version 0.1.0):
-      19th november 1997 version:
-         + started (FK)
-
-  ToDo:
-
-  Not recommended to use:
-
-  Unimplemented:
-     /* EnumResLangProc */
-     #define RT_ACCELERATOR     (MAKEINTRESOURCE(9))
-     #define RT_BITMAP  (MAKEINTRESOURCE(2))
-     #define RT_DIALOG  (MAKEINTRESOURCE(5))
-     #define RT_FONT    (MAKEINTRESOURCE(8))
-     #define RT_FONTDIR (MAKEINTRESOURCE(7))
-     #define RT_MENU    (MAKEINTRESOURCE(4))
-     #define RT_RCDATA  (MAKEINTRESOURCE(10))
-     #define RT_STRING  (MAKEINTRESOURCE(6))
-     #define RT_MESSAGETABLE    (MAKEINTRESOURCE(11))
-     #define RT_CURSOR  (MAKEINTRESOURCE(1))
-     #define RT_GROUP_CURSOR    (MAKEINTRESOURCE(12))
-     #define RT_ICON    (MAKEINTRESOURCE(3))
-     #define RT_GROUP_ICON      (MAKEINTRESOURCE(13))
-     #define RT_VERSION (MAKEINTRESOURCE(16))
-
-     /* GetIconInfo */
-     #define IDC_ARROW  (MAKEINTRESOURCE(32512))
-     #define IDC_IBEAM  (MAKEINTRESOURCE(32513))
-     #define IDC_WAIT   (MAKEINTRESOURCE(32514))
-     #define IDC_CROSS  (MAKEINTRESOURCE(32515))
-     #define IDC_UPARROW        (MAKEINTRESOURCE(32516))
-     #define IDC_SIZENWSE       (MAKEINTRESOURCE(32642))
-     #define IDC_SIZENESW       (MAKEINTRESOURCE(32643))
-     #define IDC_SIZEWE (MAKEINTRESOURCE(32644))
-     #define IDC_SIZENS (MAKEINTRESOURCE(32645))
-     #define IDC_SIZEALL        (MAKEINTRESOURCE(32646))
-     #define IDC_NO     (MAKEINTRESOURCE(32648))
-     #define IDC_APPSTARTING    (MAKEINTRESOURCE(32650))
-     #define IDC_HELP   (MAKEINTRESOURCE(32651))
-     #define IDI_APPLICATION    (MAKEINTRESOURCE(32512))
-     #define IDI_HAND   (MAKEINTRESOURCE(32513))
-     #define IDI_QUESTION       (MAKEINTRESOURCE(32514))
-     #define IDI_EXCLAMATION    (MAKEINTRESOURCE(32515))
-     #define IDI_ASTERISK       (MAKEINTRESOURCE(32516))
-     #define IDI_WINLOGO        (MAKEINTRESOURCE(32517))
-
-     #define VS_FILE_INFO       (MAKEINTRESOURCE(16))
-     #ifdef UNICODE
-     #define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW
-     #else
-     #define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA
-     #endif /* UNICODE */
-
-     /* TV_INSERTSTRUCT structure */
-     #define TVI_ROOT   ((HTREEITEM)0xFFFF0000)
-     #define TVI_FIRST  ((HTREEITEM)0xFFFF0001)
-     #define TVI_LAST   ((HTREEITEM)0xFFFF0002)
-     #define TVI_SORT   ((HTREEITEM)0xFFFF0003)
-
-     #ifdef UNICODE
-     #define COLOROKSTRING COLOROKSTRINGW
-     #define FILEOKSTRING FILEOKSTRINGW
-     #define FINDMSGSTRING FINDMSGSTRINGW
-     #define HELPMSGSTRING HELPMSGSTRINGW
-     #define LBSELCHSTRING LBSELCHSTRINGW
-     #define SETRGBSTRING SETRGBSTRINGW
-     #define SHAREVISTRING SHAREVISTRINGW
-     #else
-     #define COLOROKSTRING COLOROKSTRINGA
-     #define FILEOKSTRING FILEOKSTRINGA
-     #define FINDMSGSTRING FINDMSGSTRINGA
-     #define HELPMSGSTRING HELPMSGSTRINGA
-     #define LBSELCHSTRING LBSELCHSTRINGA
-     #define SETRGBSTRING SETRGBSTRINGA
-     #define SHAREVISTRING SHAREVISTRINGA
-     #endif
-
-     /* MapWindowPoints */
-     #define HWND_DESKTOP       ((HWND)0)
-
-     #ifdef UNICODE
-     #define ANIMATE_CLASS ANIMATE_CLASSW
-     #define HOTKEY_CLASS HOTKEY_CLASSW
-     #define PROGRESS_CLASS PROGRESS_CLASSW
-     #define STATUSCLASSNAME STATUSCLASSNAMEW
-     #define TOOLBARCLASSNAME TOOLBARCLASSNAMEW
-     #define TOOLTIPS_CLASS TOOLTIPS_CLASSW
-     #define TRACKBAR_CLASS TRACKBAR_CLASSW
-     #define UPDOWN_CLASS UPDOWN_CLASSW
-     #define WC_HEADER WC_HEADERW
-     #define WC_LISTVIEW WC_LISTVIEWW
-     #define WC_TABCONTROL WC_TABCONTROLW
-     #define WC_TREEVIEW WC_TREEVIEWW
-     #else
-     #define ANIMATE_CLASS ANIMATE_CLASSA
-     #define HOTKEY_CLASS HOTKEY_CLASSA
-     #define PROGRESS_CLASS PROGRESS_CLASSA
-     #define STATUSCLASSNAME STATUSCLASSNAMEA
-     #define TOOLBARCLASSNAME TOOLBARCLASSNAMEA
-     #define TOOLTIPS_CLASS TOOLTIPS_CLASSA
-     #define TRACKBAR_CLASS TRACKBAR_CLASSA
-     #define UPDOWN_CLASS UPDOWN_CLASSA
-     #define WC_HEADER WC_HEADERA
-     #define WC_LISTVIEW WC_LISTVIEWA
-     #define WC_TABCONTROL WC_TABCONTROLA
-     #define WC_TREEVIEW WC_TREEVIEWA
-     #endif /* UNICODE */
-
- ****************************************************************************}
+
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
+
+
+{$ifndef windows_include_files}
 
 unit defines;
 
+{  Automatically converted by H2PAS.EXE from defines.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
+
+
   interface
 
-    uses
-       base;
-
-    const
-       MAX_PATH = 260;
-       LF_FACESIZE = 32;
-       LF_FULLFACESIZE = 64;
-       ELF_VENDOR_SIZE = 4;
-       SECURITY_STATIC_TRACKING = 0;
-       SECURITY_DYNAMIC_TRACKING = 1;
-       MAX_DEFAULTCHAR = 2;
-       MAX_LEADBYTES = 12;
-       EXCEPTION_MAXIMUM_PARAMETERS = 15;
-       CCHDEVICENAME = 32;
-       CCHFORMNAME = 32;
-       MENU_TEXT_LEN = 40;
-       MAX_LANA = 254;
-       NCBNAMSZ = 16;
-       NETBIOS_NAME_LEN = 16;
-       OFS_MAXPATHNAME = 128;
-       MAX_TAB_STOPS = 32;
-       ANYSIZE_ARRAY = 1;
-       RAS_MaxCallbackNumber = 128;
-       RAS_MaxDeviceName = 128;
-       RAS_MaxDeviceType = 16;
-       RAS_MaxEntryName = 256;
-       RAS_MaxIpAddress = 15;
-       RAS_MaxIpxAddress = 21;
-       RAS_MaxPhoneNumber = 128;
-       UNLEN = 256;
-       PWLEN = 256;
-    { _llseek }
-       CNLEN = 15;
-       DNLEN = 15;
-       FILE_BEGIN = 0;
-       FILE_CURRENT = 1;    
-       FILE_END = 2;
-       { _lopen, LZOpenFile, OpenFile }
-       OF_READ = 0;
-       OF_READWRITE = 2;
-       OF_WRITE = 1;
-       OF_SHARE_COMPAT = 0;
-       OF_SHARE_DENY_NONE = 64;
-       OF_SHARE_DENY_READ = 48;
-       OF_SHARE_DENY_WRITE = 32;
-       OF_SHARE_EXCLUSIVE = 16;
-       OF_CANCEL = 2048;
-       OF_CREATE = 4096;
-       OF_DELETE = 512;
-       OF_EXIST = 16384;
-       OF_PARSE = 256;
-       OF_PROMPT = 8192;
-       OF_REOPEN = 32768;
-    { ActivateKeyboardLayout, LoadKeyboardLayout }
-       OF_VERIFY = 1024;
-       HKL_NEXT = 1;
-       HKL_PREV = 0;
-       KLF_REORDER = 8;
-       KLF_UNLOADPREVIOUS = 4;
-       KLF_ACTIVATE = 1;
-       KLF_NOTELLSHELL = 128;
-       KLF_REPLACELANG = 16;
-    { AppendMenu }
-       KLF_SUBSTITUTE_OK = 2;
-       MF_BITMAP = $4;
-       MF_CHECKED = $8;
-       MF_DISABLED = $2;
-       MF_ENABLED = 0;
-       MF_GRAYED = $1;
-       MF_MENUBARBREAK = $20;
-       MF_MENUBREAK = $40;
-       MF_OWNERDRAW = $100;
-       MF_POPUP = $10;
-       MF_SEPARATOR = $800;
-       MF_STRING = 0;
-    { Ternary Raster Operations - BitBlt }
-       MF_UNCHECKED = 0;
-       BLACKNESS = $00000042;
-       NOTSRCERASE = $001100A6;
-       NOTSRCCOPY = $00330008;
-       SRCERASE = $00440328;
-       DSTINVERT = $00550009;
-       PATINVERT = $005A0049;
-       SRCINVERT = $00660046;
-       SRCAND = $008800C6;
-       MERGEPAINT = $00BB0226;
-       MERGECOPY = $00C000CA;
-       SRCCOPY = $00CC0020;
-       SRCPAINT = $00EE0086;
-       PATCOPY = $00F00021;
-       PATPAINT = $00FB0A09;
-    { Binary Raster Operations }
-       WHITENESS = $00FF0062;
-       R2_BLACK = 1;
-       R2_COPYPEN = 13;
-       R2_MASKNOTPEN = 3;
-       R2_MASKPEN = 9;
-       R2_MASKPENNOT = 5;
-       R2_MERGENOTPEN = 12;
-       R2_MERGEPEN = 15;
-       R2_MERGEPENNOT = 14;
-       R2_NOP = 11;
-       R2_NOT = 6;
-       R2_NOTCOPYPEN = 4;
-       R2_NOTMASKPEN = 8;
-       R2_NOTMERGEPEN = 2;
-       R2_NOTXORPEN = 10;
-       R2_WHITE = 16;
-    { BroadcastSystemMessage }
-       R2_XORPEN = 7;
-       BSF_FLUSHDISK = 4;
-       BSF_FORCEIFHUNG = 32;
-       BSF_IGNORECURRENTTASK = 2;
-       BSF_NOHANG = 8;
-       BSF_POSTMESSAGE = 16;
-       BSF_QUERY = 1;
-       BSM_ALLCOMPONENTS = 0;
-       BSM_APPLICATIONS = 8;
-       BSM_INSTALLABLEDRIVERS = 4;
-       BSM_NETDRIVER = 2;
-       BSM_VXDS = 1;
-    { BrowseCallbackProc }
-    { CallNamedPipe }
-       BROADCAST_QUERY_DENY = 1112363332;
-       NMPWAIT_NOWAIT = 1;
-       NMPWAIT_WAIT_FOREVER = -1;
-    { CascadeWindows, TileWindows }
-       NMPWAIT_USE_DEFAULT_WAIT = 0;
-       MDITILE_SKIPDISABLED = 2;
-       MDITILE_HORIZONTAL = 1;
-    { CBTProc }
-       MDITILE_VERTICAL = 0;
-       HCBT_ACTIVATE = 5;
-       HCBT_CLICKSKIPPED = 6;
-       HCBT_CREATEWND = 3;
-       HCBT_DESTROYWND = 4;
-       HCBT_KEYSKIPPED = 7;
-       HCBT_MINMAX = 1;
-       HCBT_MOVESIZE = 0;
-       HCBT_QS = 2;
-       HCBT_SETFOCUS = 9;
-    { ChangeDisplaySettings }
-       HCBT_SYSCOMMAND = 8;
-       DM_BITSPERPEL = $40000;
-       DM_PELSWIDTH = $80000;
-       DM_PELSHEIGHT = $100000;
-       DM_DISPLAYFLAGS = $200000;
-       DM_DISPLAYFREQUENCY = $400000;
-       CDS_UPDATEREGISTRY = 1;
-       CDS_TEST = 2;
-       DISP_CHANGE_SUCCESSFUL = 0;
-       DISP_CHANGE_RESTART = 1;
-       DISP_CHANGE_BADFLAGS = -4;
-       DISP_CHANGE_FAILED = -1;
-       DISP_CHANGE_BADMODE = -2;
-    { ChangeServiceConfig }
-       DISP_CHANGE_NOTUPDATED = -3;
-       SERVICE_NO_CHANGE = -1;
-       SERVICE_WIN32_OWN_PROCESS = 16;
-       SERVICE_WIN32_SHARE_PROCESS = 32;
-       SERVICE_KERNEL_DRIVER = 1;
-       SERVICE_FILE_SYSTEM_DRIVER = 2;
-       SERVICE_INTERACTIVE_PROCESS = 256;
-       SERVICE_BOOT_START = 0;
-       SERVICE_SYSTEM_START = 1;
-       SERVICE_AUTO_START = 2;
-       SERVICE_DEMAND_START = 3;
-    { SERVICE_STATUS structure }
-       SERVICE_DISABLED = 4;
-       SERVICE_STOPPED = 1;
-       SERVICE_START_PENDING = 2;
-       SERVICE_STOP_PENDING = 3;
-       SERVICE_RUNNING = 4;
-       SERVICE_CONTINUE_PENDING = 5;
-       SERVICE_PAUSE_PENDING = 6;
-       SERVICE_PAUSED = 7;
-       SERVICE_ACCEPT_STOP = 1;
-       SERVICE_ACCEPT_PAUSE_CONTINUE = 2;
-    { CheckDlgButton }
-       SERVICE_ACCEPT_SHUTDOWN = 4;
-       BST_CHECKED = 1;
-       BST_INDETERMINATE = 2;
-       BST_UNCHECKED = 0;
-       BST_FOCUS = 8;
-    { CheckMenuItem, HiliteMenuItem }
-       BST_PUSHED = 4;
-       MF_BYCOMMAND = 0;
-       MF_BYPOSITION = $400;
-//       MF_CHECKED = $8;
-//       MF_UNCHECKED = 0;
-       MF_HILITE = $80;
-    { ChildWindowFromPointEx }
-       MF_UNHILITE = 0;
-       CWP_ALL = 0;
-       CWP_SKIPINVISIBLE = 1;
-       CWP_SKIPDISABLED = 2;
-    { ClearCommError }
-       CWP_SKIPTRANSPARENT = 4;
-       CE_BREAK = 16;
-       CE_DNS = 2048;
-       CE_FRAME = 8;
-       CE_IOE = 1024;
-       CE_MODE = 32768;
-       CE_OOP = 4096;
-       CE_OVERRUN = 2;
-       CE_PTO = 512;
-       CE_RXOVER = 1;
-       CE_RXPARITY = 4;
-    { ChooseMatchToTarget }
-    { CombineRgn }
-       CE_TXFULL = 256;
-       RGN_AND = 1;
-       RGN_COPY = 5;
-       RGN_DIFF = 4;
-       RGN_OR = 2;
-       RGN_XOR = 3;
-       NULLREGION = 1;
-       SIMPLEREGION = 2;
-       COMPLEXREGION = 3;
-    { CommonDlgExtendedError }
-    { CompareString, LCMapString }
-       ERROR = 0;
-       LOCALE_SYSTEM_DEFAULT = $800;
-       LOCALE_USER_DEFAULT = $400;
-       NORM_IGNORECASE = 1;
-       NORM_IGNOREKANATYPE = 65536;
-       NORM_IGNORENONSPACE = 2;
-       NORM_IGNORESYMBOLS = 4;
-       NORM_IGNOREWIDTH = 131072;
-       SORT_STRINGSORT = 4096;
-       LCMAP_BYTEREV = 2048;
-       LCMAP_FULLWIDTH = 8388608;
-       LCMAP_HALFWIDTH = 4194304;
-       LCMAP_HIRAGANA = 1048576;
-       LCMAP_KATAKANA = 2097152;
-       LCMAP_LOWERCASE = 256;
-       LCMAP_SORTKEY = 1024;
-    { ContinueDebugEvent }
-       LCMAP_UPPERCASE = 512;
-       DBG_CONTINUE = $10002;
-    { ControlService }
-       DBG_EXCEPTION_NOT_HANDLED = $80010001;
-       SERVICE_CONTROL_STOP = 1;
-       SERVICE_CONTROL_PAUSE = 2;
-       SERVICE_CONTROL_CONTINUE = 3;
-       SERVICE_CONTROL_INTERROGATE = 4;
-    { CopyImage, LoadImage }
-       SERVICE_CONTROL_SHUTDOWN = 5;
-       IMAGE_BITMAP = 0;
-       IMAGE_CURSOR = 2;
-       IMAGE_ENHMETAFILE = 1;
-       IMAGE_ICON = 1;
-       LR_COPYDELETEORG = 8;
-       LR_COPYRETURNORG = 4;
-       LR_MONOCHROME = 1;
-       LR_CREATEDIBSECTION = 8192;
-    { CreateDesktop }
-       LR_DEFAULTSIZE = 64;
-       DF_ALLOWOTHERACCOUNTHOOK = $1;
-       DESKTOP_CREATEMENU = $4;
-       DESKTOP_CREATEWINDOW = $2;
-       DESKTOP_ENUMERATE = $40;
-       DESKTOP_HOOKCONTROL = $8;
-       DESKTOP_JOURNALPLAYBACK = $20;
-       DESKTOP_JOURNALRECORD = $10;
-       DESKTOP_READOBJECTS = $1;
-       DESKTOP_SWITCHDESKTOP = $100;
-       DESKTOP_WRITEOBJECTS = $80;
-    { CreateDIBitmap }
-       WSF_VISIBLE = $1;
-       CBM_INIT = $4;
-       DIB_PAL_COLORS = 1;
-    { CreateFile, GetFileAttributes, SetFileAttributes }
-       DIB_RGB_COLORS = 0;
-       GENERIC_READ = $80000000;
-       GENERIC_WRITE = $40000000;
-       FILE_SHARE_READ = 1;
-       FILE_SHARE_WRITE = 2;
-       CONSOLE_TEXTMODE_BUFFER = 1;
-       CREATE_NEW = 1;
-       CREATE_ALWAYS = 2;
-       OPEN_EXISTING = 3;
-       OPEN_ALWAYS = 4;
-       TRUNCATE_EXISTING = 5;
-       FILE_ATTRIBUTE_ARCHIVE = 32;
-       FILE_ATTRIBUTE_COMPRESSED = 2048;
-       FILE_ATTRIBUTE_NORMAL = 128;
-       FILE_ATTRIBUTE_DIRECTORY = 16;
-       FILE_ATTRIBUTE_HIDDEN = 2;
-       FILE_ATTRIBUTE_READONLY = 1;
-       FILE_ATTRIBUTE_SYSTEM = 4;
-       FILE_ATTRIBUTE_TEMPORARY = 256;
-       FILE_FLAG_WRITE_THROUGH = $80000000;
-       FILE_FLAG_OVERLAPPED = 1073741824;
-       FILE_FLAG_NO_BUFFERING = 536870912;
-       FILE_FLAG_RANDOM_ACCESS = 268435456;
-       FILE_FLAG_SEQUENTIAL_SCAN = 134217728;
-       FILE_FLAG_DELETE_ON_CLOSE = 67108864;
-       FILE_FLAG_BACKUP_SEMANTICS = 33554432;
-       FILE_FLAG_POSIX_SEMANTICS = 16777216;
-       SECURITY_ANONYMOUS = 0;
-       SECURITY_IDENTIFICATION = 65536;
-       SECURITY_IMPERSONATION = 131072;
-       SECURITY_DELEGATION = 196608;
-       SECURITY_CONTEXT_TRACKING = 262144;
-       SECURITY_EFFECTIVE_ONLY = 524288;
-    { CreateFileMapping, VirtualAlloc, VirtualFree, VirtualProtect }
-       SECURITY_SQOS_PRESENT = 1048576;
-       PAGE_READONLY = 2;
-       PAGE_READWRITE = 4;
-       PAGE_WRITECOPY = 8;
-       SEC_COMMIT = 134217728;
-       SEC_IMAGE = 16777216;
-       SEC_NOCACHE = 268435456;
-       SEC_RESERVE = 67108864;
-       PAGE_EXECUTE = 16;
-       PAGE_EXECUTE_READ = 32;
-       PAGE_EXECUTE_READWRITE = 64;
-       PAGE_GUARD = 256;
-       PAGE_NOACCESS = 1;
-       PAGE_NOCACHE = 512;
-       MEM_COMMIT = 4096;
-       MEM_FREE = 65536;
-       MEM_RESERVE = 8192;
-       MEM_TOP_DOWN = 1048576;
-       MEM_IMAGE = 16777216;
-       MEM_MAPPED = 262144;
-       MEM_PRIVATE = 131072;
-       MEM_DECOMMIT = 16384;
-       MEM_RELEASE = 32768;
-       PAGE_EXECUTE_WRITECOPY = 128;
-       EXCEPTION_GUARD_PAGE = $80000001;
-       SECTION_EXTEND_SIZE = $10;
-       SECTION_MAP_READ = $4;
-       SECTION_MAP_WRITE = $2;
-       SECTION_QUERY = $1;
-    { CreateFont }
-       SECTION_ALL_ACCESS = $f001f;
-       FW_DONTCARE = 0;
-       FW_THIN = 100;
-       FW_EXTRALIGHT = 200;
-       FW_LIGHT = 300;
-       FW_NORMAL = 400;
-       FW_MEDIUM = 500;
-       FW_SEMIBOLD = 600;
-       FW_BOLD = 700;
-       FW_EXTRABOLD = 800;
-       FW_HEAVY = 900;
-       ANSI_CHARSET = 0;
-       DEFAULT_CHARSET = 1;
-       SYMBOL_CHARSET = 2;
-       SHIFTJIS_CHARSET = 128;
-       HANGEUL_CHARSET = 129;
-       GB2312_CHARSET = 134;
-       CHINESEBIG5_CHARSET = 136;
-       GREEK_CHARSET = 161;
-       TURKISH_CHARSET = 162;
-       HEBREW_CHARSET = 177;
-       ARABIC_CHARSET = 178;
-       BALTIC_CHARSET = 186;
-       RUSSIAN_CHARSET = 204;
-       THAI_CHARSET = 222;
-       EASTEUROPE_CHARSET = 238;
-       OEM_CHARSET = 255;
-       OUT_DEFAULT_PRECIS = 0;
-       OUT_STRING_PRECIS = 1;
-       OUT_CHARACTER_PRECIS = 2;
-       OUT_STROKE_PRECIS = 3;
-       OUT_TT_PRECIS = 4;
-       OUT_DEVICE_PRECIS = 5;
-       OUT_RASTER_PRECIS = 6;
-       OUT_TT_ONLY_PRECIS = 7;
-       OUT_OUTLINE_PRECIS = 8;
-       CLIP_DEFAULT_PRECIS = 0;
-       CLIP_CHARACTER_PRECIS = 1;
-       CLIP_STROKE_PRECIS = 2;
-       CLIP_MASK = 15;
-       CLIP_LH_ANGLES = 16;
-       CLIP_TT_ALWAYS = 32;
-       CLIP_EMBEDDED = 128;
-       DEFAULT_QUALITY = 0;
-       DRAFT_QUALITY = 1;
-       PROOF_QUALITY = 2;
-       DEFAULT_PITCH = 0;
-       FIXED_PITCH = 1;
-       VARIABLE_PITCH = 2;
-       FF_DECORATIVE = 80;
-       FF_DONTCARE = 0;
-       FF_MODERN = 48;
-       FF_ROMAN = 16;
-       FF_SCRIPT = 64;
-    { CreateHatchBrush }
-       FF_SWISS = 32;
-       HS_BDIAGONAL = 3;
-       HS_CROSS = 4;
-       HS_DIAGCROSS = 5;
-       HS_FDIAGONAL = 2;
-       HS_HORIZONTAL = 0;
-    { CreateIconFromResourceEx }
-       HS_VERTICAL = 1;
-       LR_DEFAULTCOLOR = 0;
-       LR_LOADREALSIZE = 128;
-    { CreateMailslot, GetMailslotInfo }
-//       LR_MONOCHROME = 1;
-       MAILSLOT_WAIT_FOREVER = $ffffffff;
-    { CreateMappedBitmap }
-       MAILSLOT_NO_MESSAGE = $ffffffff;
-    { CreateNamedPipe }
-       CMB_MASKED = 2;
-       PIPE_ACCESS_DUPLEX = 3;
-       PIPE_ACCESS_INBOUND = 1;
-       PIPE_ACCESS_OUTBOUND = 2;
-       WRITE_DAC = $40000;
-       WRITE_OWNER = $80000;
-       ACCESS_SYSTEM_SECURITY = $1000000;
-       PIPE_TYPE_BYTE = 0;
-       PIPE_TYPE_MESSAGE = 4;
-       PIPE_READMODE_BYTE = 0;
-       PIPE_READMODE_MESSAGE = 2;
-       PIPE_WAIT = 0;
-    { CreatePen, ExtCreatePen }
-       PIPE_NOWAIT = 1;
-       PS_GEOMETRIC = 65536;
-       PS_COSMETIC = 0;
-       PS_ALTERNATE = 8;
-       PS_SOLID = 0;
-       PS_DASH = 1;
-       PS_DOT = 2;
-       PS_DASHDOT = 3;
-       PS_DASHDOTDOT = 4;
-       PS_NULL = 5;
-       PS_USERSTYLE = 7;
-       PS_INSIDEFRAME = 6;
-       PS_ENDCAP_ROUND = 0;
-       PS_ENDCAP_SQUARE = 256;
-       PS_ENDCAP_FLAT = 512;
-       PS_JOIN_BEVEL = 4096;
-       PS_JOIN_MITER = 8192;
-       PS_JOIN_ROUND = 0;
-       PS_STYLE_MASK = 15;
-       PS_ENDCAP_MASK = 3840;
-    { CreatePolygonRgn }
-       PS_TYPE_MASK = 983040;
-       ALTERNATE = 1;
-    { CreateProcess }
-       WINDING = 2;
-       CREATE_DEFAULT_ERROR_MODE = 67108864;
-       CREATE_NEW_CONSOLE = 16;
-       CREATE_NEW_PROCESS_GROUP = 512;
-       CREATE_SEPARATE_WOW_VDM = 2048;
-       CREATE_SUSPENDED = 4;
-       CREATE_UNICODE_ENVIRONMENT = 1024;
-       DEBUG_PROCESS = 1;
-       DEBUG_ONLY_THIS_PROCESS = 2;
-       DETACHED_PROCESS = 8;
-       HIGH_PRIORITY_CLASS = 128;
-       IDLE_PRIORITY_CLASS = 64;
-       NORMAL_PRIORITY_CLASS = 32;
-    { CreateService }
-       REALTIME_PRIORITY_CLASS = 256;
-       SERVICE_ALL_ACCESS = $f01ff;
-       SERVICE_CHANGE_CONFIG = 2;
-       SERVICE_ENUMERATE_DEPENDENTS = 8;
-       SERVICE_INTERROGATE = 128;
-       SERVICE_PAUSE_CONTINUE = 64;
-       SERVICE_QUERY_CONFIG = 1;
-       SERVICE_QUERY_STATUS = 4;
-       SERVICE_START = 16;
-       SERVICE_STOP = 32;
-       SERVICE_USER_DEFINED_CONTROL = 256;
-       DELETE = $10000;
-       READ_CONTROL = $20000;
-       GENERIC_EXECUTE = $20000000;
-//       SERVICE_WIN32_OWN_PROCESS = 16;
-//       SERVICE_WIN32_SHARE_PROCESS = 32;
-//       SERVICE_KERNEL_DRIVER = 1;
-//       SERVICE_FILE_SYSTEM_DRIVER = 2;
-//       SERVICE_INTERACTIVE_PROCESS = 256;
-//       SERVICE_BOOT_START = 0;
-//       SERVICE_SYSTEM_START = 1;
-//       SERVICE_AUTO_START = 2;
-//       SERVICE_DEMAND_START = 3;
-//       SERVICE_DISABLED = 4;
-       SERVICE_ERROR_IGNORE = 0;
-       SERVICE_ERROR_NORMAL = 1;
-       SERVICE_ERROR_SEVERE = 2;
-    { CreateTapePartition, WriteTapemark }
-       SERVICE_ERROR_CRITICAL = 3;
-       TAPE_FIXED_PARTITIONS = 0;
-       TAPE_INITIATOR_PARTITIONS = $2;
-       TAPE_SELECT_PARTITIONS = $1;
-       TAPE_FILEMARKS = $1;
-       TAPE_LONG_FILEMARKS = $3;
-       TAPE_SETMARKS = 0;
-    { CreateWindow }
-       TAPE_SHORT_FILEMARKS = $2;
-       CW_USEDEFAULT = $80000000;
-       WS_BORDER = $800000;
-       WS_CAPTION = $c00000;
-       WS_CHILD = $40000000;
-       WS_CHILDWINDOW = $40000000;
-       WS_CLIPCHILDREN = $2000000;
-       WS_CLIPSIBLINGS = $4000000;
-       WS_DISABLED = $8000000;
-       WS_DLGFRAME = $400000;
-       WS_GROUP = $20000;
-       WS_HSCROLL = $100000;
-       WS_ICONIC = $20000000;
-       WS_MAXIMIZE = $1000000;
-       WS_MAXIMIZEBOX = $10000;
-       WS_MINIMIZE = $20000000;
-       WS_MINIMIZEBOX = $20000;
-       WS_OVERLAPPED = 0;
-       WS_OVERLAPPEDWINDOW = $cf0000;
-       WS_POPUP = $80000000;
-       WS_POPUPWINDOW = $80880000;
-       WS_SIZEBOX = $40000;
-       WS_SYSMENU = $80000;
-       WS_TABSTOP = $10000;
-       WS_THICKFRAME = $40000;
-       WS_TILED = 0;
-       WS_TILEDWINDOW = $cf0000;
-       WS_VISIBLE = $10000000;
-       WS_VSCROLL = $200000;
-       MDIS_ALLCHILDSTYLES = $1;
-       BS_3STATE = $5;
-       BS_AUTO3STATE = $6;
-       BS_AUTOCHECKBOX = $3;
-       BS_AUTORADIOBUTTON = $9;
-       BS_BITMAP = $80;
-       BS_BOTTOM = $800;
-       BS_CENTER = $300;
-       BS_CHECKBOX = $2;
-       BS_DEFPUSHBUTTON = $1;
-       BS_GROUPBOX = $7;
-       BS_ICON = $40;
-       BS_LEFT = $100;
-       BS_LEFTTEXT = $20;
-       BS_MULTILINE = $2000;
-       BS_NOTIFY = $4000;
-       BS_OWNERDRAW = $b;
-       BS_PUSHBUTTON = 0;
-       BS_PUSHLIKE = $1000;
-       BS_RADIOBUTTON = $4;
-       BS_RIGHT = $200;
-       BS_RIGHTBUTTON = $20;
-       BS_TEXT = 0;
-       BS_TOP = $400;
-       BS_USERBUTTON = $8;
-       BS_VCENTER = $c00;
-       CBS_AUTOHSCROLL = $40;
-       CBS_DISABLENOSCROLL = $800;
-       CBS_DROPDOWN = $2;
-       CBS_DROPDOWNLIST = $3;
-       CBS_HASSTRINGS = $200;
-       CBS_LOWERCASE = $4000;
-       CBS_NOINTEGRALHEIGHT = $400;
-       CBS_OEMCONVERT = $80;
-       CBS_OWNERDRAWFIXED = $10;
-       CBS_OWNERDRAWVARIABLE = $20;
-       CBS_SIMPLE = $1;
-       CBS_SORT = $100;
-       CBS_UPPERCASE = $2000;
-       ES_AUTOHSCROLL = $80;
-       ES_AUTOVSCROLL = $40;
-       ES_CENTER = $1;
-       ES_LEFT = 0;
-       ES_LOWERCASE = $10;
-       ES_MULTILINE = $4;
-       ES_NOHIDESEL = $100;
-       ES_NUMBER = $2000;
-       ES_OEMCONVERT = $400;
-       ES_PASSWORD = $20;
-       ES_READONLY = $800;
-       ES_RIGHT = $2;
-       ES_UPPERCASE = $8;
-       ES_WANTRETURN = $1000;
-       LBS_DISABLENOSCROLL = $1000;
-       LBS_EXTENDEDSEL = $800;
-       LBS_HASSTRINGS = $40;
-       LBS_MULTICOLUMN = $200;
-       LBS_MULTIPLESEL = $8;
-       LBS_NODATA = $2000;
-       LBS_NOINTEGRALHEIGHT = $100;
-       LBS_NOREDRAW = $4;
-       LBS_NOSEL = $4000;
-       LBS_NOTIFY = $1;
-       LBS_OWNERDRAWFIXED = $10;
-       LBS_OWNERDRAWVARIABLE = $20;
-       LBS_SORT = $2;
-       LBS_STANDARD = $a00003;
-       LBS_USETABSTOPS = $80;
-       LBS_WANTKEYBOARDINPUT = $400;
-       SBS_BOTTOMALIGN = $4;
-       SBS_HORZ = 0;
-       SBS_LEFTALIGN = $2;
-       SBS_RIGHTALIGN = $4;
-       SBS_SIZEBOX = $8;
-       SBS_SIZEBOXBOTTOMRIGHTALIGN = $4;
-       SBS_SIZEBOXTOPLEFTALIGN = $2;
-       SBS_SIZEGRIP = $10;
-       SBS_TOPALIGN = $2;
-       SBS_VERT = $1;
-       SS_BITMAP = $e;
-       SS_BLACKFRAME = $7;
-       SS_BLACKRECT = $4;
-       SS_CENTER = $1;
-       SS_CENTERIMAGE = $200;
-       SS_ENHMETAFILE = $f;
-       SS_ETCHEDFRAME = $12;
-       SS_ETCHEDHORZ = $10;
-       SS_ETCHEDVERT = $11;
-       SS_GRAYFRAME = $8;
-       SS_GRAYRECT = $5;
-       SS_ICON = $3;
-       SS_LEFT = 0;
-       SS_LEFTNOWORDWRAP = $c;
-       SS_NOPREFIX = $80;
-       SS_NOTIFY = $100;
-       SS_OWNERDRAW = $d;
-       SS_REALSIZEIMAGE = $800;
-       SS_RIGHT = $2;
-       SS_RIGHTJUST = $400;
-       SS_SIMPLE = $b;
-       SS_SUNKEN = $1000;
-       SS_WHITEFRAME = $9;
-       SS_WHITERECT = $6;
-       DS_3DLOOK = $4;
-       DS_ABSALIGN = $1;
-       DS_CENTER = $800;
-       DS_CENTERMOUSE = $1000;
-       DS_CONTEXTHELP = $2000;
-       DS_CONTROL = $400;
-       DS_FIXEDSYS = $8;
-       DS_LOCALEDIT = $20;
-       DS_MODALFRAME = $80;
-       DS_NOFAILCREATE = $10;
-       DS_NOIDLEMSG = $100;
-       DS_SETFONT = $40;
-       DS_SETFOREGROUND = $200;
-    { CreateWindowEx }
-       DS_SYSMODAL = $2;
-       WS_EX_ACCEPTFILES = $10;
-       WS_EX_APPWINDOW = $40000;
-       WS_EX_CLIENTEDGE = $200;
-       WS_EX_CONTEXTHELP = $400;
-       WS_EX_CONTROLPARENT = $10000;
-       WS_EX_DLGMODALFRAME = $1;
-       WS_EX_LEFT = 0;
-       WS_EX_LEFTSCROLLBAR = $4000;
-       WS_EX_LTRREADING = 0;
-       WS_EX_MDICHILD = $40;
-       WS_EX_NOPARENTNOTIFY = $4;
-       WS_EX_OVERLAPPEDWINDOW = $300;
-       WS_EX_PALETTEWINDOW = $188;
-       WS_EX_RIGHT = $1000;
-       WS_EX_RIGHTSCROLLBAR = 0;
-       WS_EX_RTLREADING = $2000;
-       WS_EX_STATICEDGE = $20000;
-       WS_EX_TOOLWINDOW = $80;
-       WS_EX_TOPMOST = $8;
-       WS_EX_TRANSPARENT = $20;
-    { CreateWindowStation }
-       WS_EX_WINDOWEDGE = $100;
-       WINSTA_ACCESSCLIPBOARD = $4;
-       WINSTA_ACCESSGLOBALATOMS = $20;
-       WINSTA_CREATEDESKTOP = $8;
-       WINSTA_ENUMDESKTOPS = $1;
-       WINSTA_ENUMERATE = $100;
-       WINSTA_EXITWINDOWS = $40;
-       WINSTA_READATTRIBUTES = $2;
-       WINSTA_READSCREEN = $200;
-    { DdeCallback }
-    { DdeClientTransaction }
-    { DdeEnableCallback }
-    { DdeGetLastError }
-    { DdeInitialize }
-    { DdeNameService }
-    { DebugProc }
-       WINSTA_WRITEATTRIBUTES = $10;
-       WH_CALLWNDPROC = 4;
-       WH_CALLWNDPROCRET = 12;
-       WH_CBT = 5;
-       WH_DEBUG = 9;
-       WH_GETMESSAGE = 3;
-       WH_JOURNALPLAYBACK = 1;
-       WH_JOURNALRECORD = 0;
-       WH_KEYBOARD = 2;
-       WH_MOUSE = 7;
-       WH_MSGFILTER = -1;
-       WH_SHELL = 10;
-       WH_SYSMSGFILTER = 6;
-  //     WH_MSGFILTER = -1;
-    { DefineDosDevice }
-       WH_FOREGROUNDIDLE = 11;
-       DDD_RAW_TARGET_PATH = 1;
-       DDD_REMOVE_DEFINITION = 2;
-    { DeviceCapbilities }
-       DDD_EXACT_MATCH_ON_REMOVE = 4;
-       DC_BINNAMES = 12;
-       DC_BINS = 6;
-       DC_COPIES = 18;
-       DC_DRIVER = 11;
-       DC_DATATYPE_PRODUCED = 21;
-       DC_DUPLEX = 7;
-       DC_EMF_COMPLIANT = 20;
-       DC_ENUMRESOLUTIONS = 13;
-       DC_EXTRA = 9;
-       DC_FIELDS = 1;
-       DC_FILEDEPENDENCIES = 14;
-       DC_MAXEXTENT = 5;
-       DC_MINEXTENT = 4;
-       DC_ORIENTATION = 17;
-       DC_PAPERNAMES = 16;
-       DC_PAPERS = 2;
-       DC_PAPERSIZE = 3;
-       DC_SIZE = 8;
-       DC_TRUETYPE = 15;
-       DCTT_BITMAP = $1;
-       DCTT_DOWNLOAD = $2;
-       DCTT_SUBDEV = $4;
-       DC_VERSION = 10;
-       DC_BINADJUST = 19;
-//       DC_EMF_COMPLIANT = 20;
-    { DeviceIoControl }
-    { DlgDirList }
-//       DC_DATATYPE_PRODUCED = 21;
-       DDL_ARCHIVE = 32;
-       DDL_DIRECTORY = 16;
-       DDL_DRIVES = 16384;
-       DDL_EXCLUSIVE = 32768;
-       DDL_HIDDEN = 2;
-       DDL_READONLY = 1;
-       DDL_READWRITE = 0;
-       DDL_SYSTEM = 4;
-    { DllEntryPoint }
-       DDL_POSTMSGS = 8192;
-       DLL_PROCESS_ATTACH = 1;
-       DLL_THREAD_ATTACH = 2;
-       DLL_PROCESS_DETACH = 0;
-    { DocumentProperties }
-       DLL_THREAD_DETACH = 3;
-       DM_IN_BUFFER = 8;
-       DM_MODIFY = 8;
-       DM_IN_PROMPT = 4;
-       DM_PROMPT = 4;
-       DM_OUT_BUFFER = 2;
-       DM_COPY = 2;
-    { DrawAnimatedRects }
-       DM_UPDATE = 1;
-       IDANI_OPEN = 1;
-    { DrawCaption }
-       IDANI_CLOSE = 2;
-       DC_ACTIVE = 1;
-    { DrawEdge }
-       DC_SMALLCAP = 2;
-       BDR_RAISEDINNER = 4;
-       BDR_SUNKENINNER = 8;
-       BDR_RAISEDOUTER = 1;
-       BDR_SUNKENOUTER = 1;
-       EDGE_BUMP = 9;
-       EDGE_ETCHED = 6;
-       EDGE_RAISED = 5;
-       EDGE_SUNKEN = 10;
-       BF_ADJUST = 8192;
-       BF_BOTTOM = 8;
-       BF_BOTTOMLEFT = 9;
-       BF_BOTTOMRIGHT = 12;
-       BF_DIAGONAL = 16;
-       BF_DIAGONAL_ENDBOTTOMLEFT = 25;
-       BF_DIAGONAL_ENDBOTTOMRIGHT = 28;
-       BF_DIAGONAL_ENDTOPLEFT = 19;
-       BF_DIAGONAL_ENDTOPRIGHT = 22;
-       BF_FLAT = 16384;
-       BF_LEFT = 1;
-       BF_MIDDLE = 2048;
-       BF_MONO = 32768;
-       BF_RECT = 15;
-       BF_RIGHT = 4;
-       BF_SOFT = 4096;
-       BF_TOP = 2;
-       BF_TOPLEFT = 3;
-    { DrawFrameControl }
-       BF_TOPRIGHT = 6;
-       DFC_BUTTON = 4;
-       DFC_CAPTION = 1;
-       DFC_MENU = 2;
-       DFC_SCROLL = 3;
-       DFCS_BUTTON3STATE = 8;
-       DFCS_BUTTONCHECK = 0;
-       DFCS_BUTTONPUSH = 16;
-       DFCS_BUTTONRADIO = 4;
-       DFCS_BUTTONRADIOIMAGE = 1;
-       DFCS_BUTTONRADIOMASK = 2;
-       DFCS_CAPTIONCLOSE = 0;
-       DFCS_CAPTIONHELP = 4;
-       DFCS_CAPTIONMAX = 2;
-       DFCS_CAPTIONMIN = 1;
-       DFCS_CAPTIONRESTORE = 3;
-       DFCS_MENUARROW = 0;
-       DFCS_MENUBULLET = 2;
-       DFCS_MENUCHECK = 1;
-       DFCS_SCROLLCOMBOBOX = 5;
-       DFCS_SCROLLDOWN = 1;
-       DFCS_SCROLLLEFT = 2;
-       DFCS_SCROLLRIGHT = 3;
-       DFCS_SCROLLSIZEGRIP = 8;
-       DFCS_SCROLLUP = 0;
-       DFCS_ADJUSTRECT = 8192;
-       DFCS_CHECKED = 1024;
-       DFCS_FLAT = 16384;
-       DFCS_INACTIVE = 256;
-       DFCS_MONO = 32768;
-    { DrawIconEx }
-       DFCS_PUSHED = 512;
-       DI_COMPAT = 4;
-       DI_DEFAULTSIZE = 8;
-       DI_IMAGE = 2;
-       DI_MASK = 1;
-    { DrawState }
-       DI_NORMAL = 3;
-       DST_BITMAP = 4;
-       DST_COMPLEX = 0;
-       DST_ICON = 3;
-       DST_PREFIXTEXT = 2;
-       DST_TEXT = 1;
-       DSS_NORMAL = 0;
-       DSS_UNION = 16;
-       DSS_DISABLED = 32;
-    { DrawStatusText }
-       DSS_MONO = 128;
-       SBT_NOBORDERS = 256;
-       SBT_OWNERDRAW = 4096;
-       SBT_POPOUT = 512;
-    { DrawText, DrawTextEx }
-       SBT_RTLREADING = 1024;
-       DT_BOTTOM = 8;
-       DT_CALCRECT = 1024;
-       DT_CENTER = 1;
-       DT_EDITCONTROL = 8192;
-       DT_END_ELLIPSIS = 32768;
-       DT_PATH_ELLIPSIS = 16384;
-       DT_EXPANDTABS = 64;
-       DT_EXTERNALLEADING = 512;
-       DT_LEFT = 0;
-       DT_MODIFYSTRING = 65536;
-       DT_NOCLIP = 256;
-       DT_NOPREFIX = 2048;
-       DT_RIGHT = 2;
-       DT_RTLREADING = 131072;
-       DT_SINGLELINE = 32;
-       DT_TABSTOP = 128;
-       DT_TOP = 0;
-       DT_VCENTER = 4;
-       DT_WORDBREAK = 16;
-    { DuplicateHandle, MapViewOfFile }
-       DT_INTERNAL = 4096;
-       DUPLICATE_CLOSE_SOURCE = 1;
-       DUPLICATE_SAME_ACCESS = 2;
-       FILE_MAP_ALL_ACCESS = $f001f;
-       FILE_MAP_READ = 4;
-       FILE_MAP_WRITE = 2;
-       FILE_MAP_COPY = 1;
-       MUTEX_ALL_ACCESS = $1f0001;
-       MUTEX_MODIFY_STATE = 1;
-       SYNCHRONIZE = $100000;
-       SEMAPHORE_ALL_ACCESS = $1f0003;
-       SEMAPHORE_MODIFY_STATE = 2;
-       EVENT_ALL_ACCESS = $1f0003;
-       EVENT_MODIFY_STATE = 2;
-       KEY_ALL_ACCESS = $f003f;
-       KEY_CREATE_LINK = 32;
-       KEY_CREATE_SUB_KEY = 4;
-       KEY_ENUMERATE_SUB_KEYS = 8;
-       KEY_EXECUTE = $20019;
-       KEY_NOTIFY = 16;
-       KEY_QUERY_VALUE = 1;
-       KEY_READ = $20019;
-       KEY_SET_VALUE = 2;
-       KEY_WRITE = $20006;
-       PROCESS_ALL_ACCESS = $1f0fff;
-       PROCESS_CREATE_PROCESS = 128;
-       PROCESS_CREATE_THREAD = 2;
-       PROCESS_DUP_HANDLE = 64;
-       PROCESS_QUERY_INFORMATION = 1024;
-       PROCESS_SET_INFORMATION = 512;
-       PROCESS_TERMINATE = 1;
-       PROCESS_VM_OPERATION = 8;
-       PROCESS_VM_READ = 16;
-       PROCESS_VM_WRITE = 32;
-       THREAD_ALL_ACCESS = $1f03ff;
-       THREAD_DIRECT_IMPERSONATION = 512;
-       THREAD_GET_CONTEXT = 8;
-       THREAD_IMPERSONATE = 256;
-       THREAD_QUERY_INFORMATION = 64;
-       THREAD_SET_CONTEXT = 16;
-       THREAD_SET_INFORMATION = 32;
-       THREAD_SET_THREAD_TOKEN = 128;
-       THREAD_SUSPEND_RESUME = 2;
-    { EditWordBreakProc }
-       THREAD_TERMINATE = 1;
-       WB_ISDELIMITER = 2;
-       WB_LEFT = 0;
-    { EnableScrollBar }
-       WB_RIGHT = 1;
-       SB_BOTH = 3;
-       SB_CTL = 2;
-       SB_HORZ = 0;
-       SB_VERT = 1;
-       ESB_DISABLE_BOTH = 3;
-       ESB_DISABLE_DOWN = 2;
-       ESB_DISABLE_LEFT = 1;
-       ESB_DISABLE_LTUP = 1;
-       ESB_DISABLE_RIGHT = 2;
-       ESB_DISABLE_RTDN = 2;
-       ESB_DISABLE_UP = 1;
-    { Scroll Bar notifications}
-       ESB_ENABLE_BOTH = 0;
-       SB_LINEUP = 0;
-       SB_LINEDOWN = 1;
-       SB_LINELEFT = 0;
-       SB_LINERIGHT = 1;
-       SB_PAGEUP = 2;
-       SB_PAGEDOWN = 3;
-       SB_PAGELEFT = 2;
-       SB_PAGERIGHT = 3;
-       SB_THUMBPOSITION = 4;
-       SB_THUMBTRACK = 5;
-       SB_ENDSCROLL = 8;
-       SB_LEFT = 6;
-       SB_RIGHT = 7;
-       SB_BOTTOM = 7;
-    { EnumCalendarInfo }
-       SB_TOP = 6;
-    { EnumDateFormats }
-       ENUM_ALL_CALENDARS = -1;
-       DATE_SHORTDATE = 1;
-    { EnumDependentServices }
-       DATE_LONGDATE = 2;
-       SERVICE_ACTIVE = 1;
-    { EnumFontFamExProc }
-       SERVICE_INACTIVE = 2;
-       DEVICE_FONTTYPE = 2;
-       RASTER_FONTTYPE = 1;
-    { EnumObjects, GetCurrentObject, GetObjectType }
-       TRUETYPE_FONTTYPE = 4;
-       OBJ_BRUSH = 2;
-       OBJ_PEN = 1;
-       OBJ_PAL = 5;
-       OBJ_FONT = 6;
-       OBJ_BITMAP = 7;
-       OBJ_EXTPEN = 11;
-       OBJ_REGION = 8;
-       OBJ_DC = 3;
-       OBJ_MEMDC = 10;
-       OBJ_METAFILE = 9;
-       OBJ_METADC = 4;
-       OBJ_ENHMETAFILE = 13;
-    { EnumPrinters }
-    { EnumProtocols }
-    { EnumServicesStatus }
-       OBJ_ENHMETADC = 12;
-       SERVICE_WIN32 = 48;
-    { EnumSystemCodePages }
-       SERVICE_DRIVER = 11;
-       CP_INSTALLED = 1;
-    { EnumSystemLocales }
-       CP_SUPPORTED = 2;
-       LCID_INSTALLED = 1;
-    { EraseTape }
-       LCID_SUPPORTED = 2;
-       TAPE_ERASE_LONG = $1;
-    { Escape }
-       TAPE_ERASE_SHORT = 0;
-       SP_ERROR = -1;
-       SP_OUTOFDISK = -4;
-       SP_OUTOFMEMORY = -5;
-       SP_USERABORT = -3;
-       PHYSICALWIDTH = 110;
-       PHYSICALHEIGHT = 111;
-       PHYSICALOFFSETX = 112;
-       PHYSICALOFFSETY = 113;
-       SCALINGFACTORX = 114;
-       SCALINGFACTORY = 115;
-       QUERYESCSUPPORT = 8;
-       ABORTDOC = 2;
-       ENDDOC = 11;
-       GETPHYSPAGESIZE = 12;
-       GETPRINTINGOFFSET = 13;
-       GETSCALINGFACTOR = 14;
-       NEWFRAME = 1;
-       NEXTBAND = 3;
-       PASSTHROUGH = 19;
-       SETABORTPROC = 9;
-    { EscapeCommFunction }
-       STARTDOC = 10;
-       CLRDTR = 6;
-       CLRRTS = 4;
-       SETDTR = 5;
-       SETRTS = 3;
-       SETXOFF = 1;
-       SETXON = 2;
-       SETBREAK = 8;
-    { ExitWindowsEx }
-       CLRBREAK = 9;
-       EWX_FORCE = 4;
-       EWX_LOGOFF = 0;
-       EWX_POWEROFF = 8;
-       EWX_REBOOT = 2;
-    { ExtFloodFill }
-       EWX_SHUTDOWN = 1;
-       FLOODFILLBORDER = 0;
-    { ExtTextOut }
-       FLOODFILLSURFACE = 1;
-       ETO_CLIPPED = 4;
-       ETO_GLYPH_INDEX = 16;
-       ETO_OPAQUE = 2;
-    { FillConsoleOutputAttribute }
-       ETO_RTLREADING = 128;
-       FOREGROUND_BLUE = 1;
-       FOREGROUND_GREEN = 2;
-       FOREGROUND_RED = 4;
-       FOREGROUND_INTENSITY = 8;
-       BACKGROUND_BLUE = 16;
-       BACKGROUND_GREEN = 32;
-       BACKGROUND_RED = 64;
-    { FindFirstChangeNotification }
-       BACKGROUND_INTENSITY = 128;
-       FILE_NOTIFY_CHANGE_FILE_NAME = 1;
-       FILE_NOTIFY_CHANGE_DIR_NAME = 2;
-       FILE_NOTIFY_CHANGE_ATTRIBUTES = 4;
-       FILE_NOTIFY_CHANGE_SIZE = 8;
-       FILE_NOTIFY_CHANGE_LAST_WRITE = 16;
-    { FindFirstPrinterChangeNotification }
-    { FindNextPrinterNotification }
-    { FMExtensionProc }
-    { FoldString }
-       FILE_NOTIFY_CHANGE_SECURITY = 256;
-       MAP_FOLDCZONE = 16;
-       MAP_FOLDDIGITS = 128;
-       MAP_PRECOMPOSED = 32;
-    { ForegroundIdleProc }
-       MAP_COMPOSITE = 64;
-    { FormatMessage }
-       HC_ACTION = 0;
-       FORMAT_MESSAGE_ALLOCATE_BUFFER = 256;
-       FORMAT_MESSAGE_IGNORE_INSERTS = 512;
-       FORMAT_MESSAGE_FROM_STRING = 1024;
-       FORMAT_MESSAGE_FROM_HMODULE = 2048;
-       FORMAT_MESSAGE_FROM_SYSTEM = 4096;
-       FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192;
-    { GdiComment }
-       FORMAT_MESSAGE_MAX_WIDTH_MASK = 255;
-       GDICOMMENT_WINDOWS_METAFILE = -2147483647;
-       GDICOMMENT_BEGINGROUP = 2;
-       GDICOMMENT_ENDGROUP = 3;
-       GDICOMMENT_MULTIFORMATS = 1073741828;
-    { GenerateConsoleCtrlEvent, HandlerRoutine }
-       GDICOMMENT_IDENTIFIER = 1128875079;
-       CTRL_C_EVENT = 0;
-       CTRL_BREAK_EVENT = 1;
-       CTRL_CLOSE_EVENT = 2;
-       CTRL_LOGOFF_EVENT = 5;
-    { GetAddressByName }
-    { GetArcDirection }
-       CTRL_SHUTDOWN_EVENT = 6;
-       AD_COUNTERCLOCKWISE = 1;
-    { GetBinaryTypes }
-       AD_CLOCKWISE = 2;
-       SCS_32BIT_BINARY = 0;
-       SCS_DOS_BINARY = 1;
-       SCS_OS216_BINARY = 5;
-       SCS_PIF_BINARY = 3;
-       SCS_POSIX_BINARY = 4;
-    { GetBoundsRect, SetBoundsRect }
-       SCS_WOW_BINARY = 2;
-       DCB_DISABLE = 8;
-       DCB_ENABLE = 4;
-       DCB_RESET = 1;
-       DCB_SET = 3;
-    { GetCharacterPlacement, GetFontLanguageInfo }
-       DCB_ACCUMULATE = 2;
-       GCP_DBCS = 1;
-       GCP_ERROR = $8000;
-       GCP_CLASSIN = $80000;
-       GCP_DIACRITIC = 256;
-       GCP_DISPLAYZWG = $400000;
-       GCP_GLYPHSHAPE = 16;
-       GCP_JUSTIFY = $10000;
-       GCP_JUSTIFYIN = $200000;
-       GCP_KASHIDA = 1024;
-       GCP_LIGATE = 32;
-       GCP_MAXEXTENT = $100000;
-       GCP_NEUTRALOVERRIDE = $2000000;
-       GCP_NUMERICOVERRIDE = $1000000;
-       GCP_NUMERICSLATIN = $4000000;
-       GCP_NUMERICSLOCAL = $8000000;
-       GCP_REORDER = 2;
-       GCP_SYMSWAPOFF = $800000;
-       GCP_USEKERNING = 8;
-       FLI_GLYPHS = $40000;
-    { GetClassLong, GetClassWord }
-       FLI_MASK = $103b;
-       GCW_ATOM = -32;
-       GCL_CBCLSEXTRA = -20;
-       GCL_CBWNDEXTRA = -18;
-       GCL_HBRBACKGROUND = -10;
-       GCL_HCURSOR = -12;
-       GCL_HICON = -14;
-       GCL_HICONSM = -34;
-       GCL_HMODULE = -16;
-       GCL_MENUNAME = -8;
-       GCL_STYLE = -26;
-    { GetClipboardFormat, SetClipboardData }
-       GCL_WNDPROC = -24;
-       CF_BITMAP = 2;
-       CF_DIB = 8;
-       CF_PALETTE = 9;
-       CF_ENHMETAFILE = 14;
-       CF_METAFILEPICT = 3;
-       CF_OEMTEXT = 7;
-       CF_TEXT = 1;
-       CF_UNICODETEXT = 13;
-       CF_DIF = 5;
-       CF_DSPBITMAP = 130;
-       CF_DSPENHMETAFILE = 142;
-       CF_DSPMETAFILEPICT = 131;
-       CF_DSPTEXT = 129;
-       CF_GDIOBJFIRST = 768;
-       CF_GDIOBJLAST = 1023;
-       CF_HDROP = 15;
-       CF_LOCALE = 16;
-       CF_OWNERDISPLAY = 128;
-       CF_PENDATA = 10;
-       CF_PRIVATEFIRST = 512;
-       CF_PRIVATELAST = 767;
-       CF_RIFF = 11;
-       CF_SYLK = 4;
-       CF_WAVE = 12;
-    { GetCommMask }
-       CF_TIFF = 6;
-       EV_BREAK = 64;
-       EV_CTS = 8;
-       EV_DSR = 16;
-       EV_ERR = 128;
-       EV_EVENT1 = 2048;
-       EV_EVENT2 = 4096;
-       EV_PERR = 512;
-       EV_RING = 256;
-       EV_RLSD = 32;
-       EV_RX80FULL = 1024;
-       EV_RXCHAR = 1;
-       EV_RXFLAG = 2;
-    { GetCommModemStatus }
-       EV_TXEMPTY = 4;
-       MS_CTS_ON = $10;
-       MS_DSR_ON = $20;
-       MS_RING_ON = $40;
-    { GetComputerName }
-       MS_RLSD_ON = $80;
-    { GetConsoleMode }
-       MAX_COMPUTERNAME_LENGTH = 15;
-       ENABLE_LINE_INPUT = 2;
-       ENABLE_ECHO_INPUT = 4;
-       ENABLE_PROCESSED_INPUT = 1;
-       ENABLE_WINDOW_INPUT = 8;
-       ENABLE_MOUSE_INPUT = 16;
-       ENABLE_PROCESSED_OUTPUT = 1;
-    { GetCPInfo }
-       ENABLE_WRAP_AT_EOL_OUTPUT = 2;
-       CP_ACP = 0;
-       CP_MACCP = 2;
-    { GetDateFormat }
-       CP_OEMCP = 1;
-//       DATE_SHORTDATE = 1;
-//       DATE_LONGDATE = 2;
-    { GetDCEx }
-       DATE_USE_ALT_CALENDAR = 4;
-       DCX_WINDOW = $1;
-       DCX_CACHE = $2;
-       DCX_PARENTCLIP = $20;
-       DCX_CLIPSIBLINGS = $10;
-       DCX_CLIPCHILDREN = $8;
-       DCX_NORESETATTRS = $4;
-       DCX_LOCKWINDOWUPDATE = $400;
-       DCX_EXCLUDERGN = $40;
-       DCX_INTERSECTRGN = $80;
-    { GetDeviceCaps }
-       DCX_VALIDATE = $200000;
-       DRIVERVERSION = 0;
-       TECHNOLOGY = 2;
-       DT_PLOTTER = 0;
-       DT_RASDISPLAY = 1;
-       DT_RASPRINTER = 2;
-       DT_RASCAMERA = 3;
-       DT_CHARSTREAM = 4;
-       DT_METAFILE = 5;
-       DT_DISPFILE = 6;
-       HORZSIZE = 4;
-       VERTSIZE = 6;
-       HORZRES = 8;
-       VERTRES = 10;
-       LOGPIXELSX = 88;
-       LOGPIXELSY = 90;
-       BITSPIXEL = 12;
-       PLANES = 14;
-       NUMBRUSHES = 16;
-       NUMPENS = 18;
-       NUMFONTS = 22;
-       NUMCOLORS = 24;
-       ASPECTX = 40;
-       ASPECTY = 42;
-       ASPECTXY = 44;
-       PDEVICESIZE = 26;
-       CLIPCAPS = 36;
-       SIZEPALETTE = 104;
-       NUMRESERVED = 106;
-       COLORRES = 108;
-//       PHYSICALWIDTH = 110;
-//       PHYSICALHEIGHT = 111;
-//       PHYSICALOFFSETX = 112;
-//       PHYSICALOFFSETY = 113;
-//       SCALINGFACTORX = 114;
-//       SCALINGFACTORY = 115;
-       VREFRESH = 116;
-       DESKTOPHORZRES = 118;
-       DESKTOPVERTRES = 117;
-       BLTALIGNMENT = 119;
-       RASTERCAPS = 38;
-       RC_BANDING = 2;
-       RC_BITBLT = 1;
-       RC_BITMAP64 = 8;
-       RC_DI_BITMAP = 128;
-       RC_DIBTODEV = 512;
-       RC_FLOODFILL = 4096;
-       RC_GDI20_OUTPUT = 16;
-       RC_PALETTE = 256;
-       RC_SCALING = 4;
-       RC_STRETCHBLT = 2048;
-       RC_STRETCHDIB = 8192;
-       CURVECAPS = 28;
-       CC_NONE = 0;
-       CC_CIRCLES = 1;
-       CC_PIE = 2;
-       CC_CHORD = 4;
-       CC_ELLIPSES = 8;
-       CC_WIDE = 16;
-       CC_STYLED = 32;
-       CC_WIDESTYLED = 64;
-       CC_INTERIORS = 128;
-       CC_ROUNDRECT = 256;
-       LINECAPS = 30;
-       LC_NONE = 0;
-       LC_POLYLINE = 2;
-       LC_MARKER = 4;
-       LC_POLYMARKER = 8;
-       LC_WIDE = 16;
-       LC_STYLED = 32;
-       LC_WIDESTYLED = 64;
-       LC_INTERIORS = 128;
-       POLYGONALCAPS = 32;
-       PC_NONE = 0;
-       PC_POLYGON = 1;
-       PC_RECTANGLE = 2;
-       PC_WINDPOLYGON = 4;
-       PC_SCANLINE = 8;
-       PC_WIDE = 16;
-       PC_STYLED = 32;
-       PC_WIDESTYLED = 64;
-       PC_INTERIORS = 128;
-       TEXTCAPS = 34;
-       TC_OP_CHARACTER = 1;
-       TC_OP_STROKE = 2;
-       TC_CP_STROKE = 4;
-       TC_CR_90 = 8;
-       TC_CR_ANY = 16;
-       TC_SF_X_YINDEP = 32;
-       TC_SA_DOUBLE = 64;
-       TC_SA_INTEGER = 128;
-       TC_SA_CONTIN = 256;
-       TC_EA_DOUBLE = 512;
-       TC_IA_ABLE = 1024;
-       TC_UA_ABLE = 2048;
-       TC_SO_ABLE = 4096;
-       TC_RA_ABLE = 8192;
-       TC_VA_ABLE = 16384;
-       TC_RESERVED = 32768;
-       TC_SCROLLBLT = 65536;
-    { GetDriveType }
-       PC_PATHS = 512;
-       DRIVE_REMOVABLE = 2;
-       DRIVE_FIXED = 3;
-       DRIVE_REMOTE = 4;
-       DRIVE_CDROM = 5;
-       DRIVE_RAMDISK = 6;
-       DRIVE_UNKNOWN = 0;
-    { GetExceptionCode }
-       DRIVE_NO_ROOT_DIR = 1;
-       EXCEPTION_ACCESS_VIOLATION = $c0000005;
-       EXCEPTION_BREAKPOINT = $80000003;
-       EXCEPTION_DATATYPE_MISALIGNMENT = $80000002;
-       EXCEPTION_SINGLE_STEP = $80000004;
-       EXCEPTION_ARRAY_BOUNDS_EXCEEDED = $c000008c;
-       EXCEPTION_FLT_DENORMAL_OPERAND = $c000008d;
-       EXCEPTION_FLT_DIVIDE_BY_ZERO = $c000008e;
-       EXCEPTION_FLT_INEXACT_RESULT = $c000008f;
-       EXCEPTION_FLT_INVALID_OPERATION = $c0000090;
-       EXCEPTION_FLT_OVERFLOW = $c0000091;
-       EXCEPTION_FLT_STACK_CHECK = $c0000092;
-       EXCEPTION_FLT_UNDERFLOW = $c0000093;
-       EXCEPTION_INT_DIVIDE_BY_ZERO = $c0000094;
-       EXCEPTION_INT_OVERFLOW = $c0000095;
-       EXCEPTION_PRIV_INSTRUCTION = $c0000096;
-       EXCEPTION_NONCONTINUABLE_EXCEPTION = $c0000025;
-       EXCEPTION_NONCONTINUABLE = $1;
-       EXCEPTION_STACK_OVERFLOW = $c00000fd;
-    { GetFileType }
-       EXCEPTION_INVALID_DISPOSITION = $c0000026;
-       FILE_TYPE_UNKNOWN = 0;
-       FILE_TYPE_DISK = 1;
-       FILE_TYPE_CHAR = 2;
-    { GetGlyphOutline }
-       FILE_TYPE_PIPE = 3;
-       GGO_BITMAP = 1;
-       GGO_NATIVE = 2;
-       GGO_METRICS = 0;
-       GGO_GRAY2_BITMAP = 4;
-       GGO_GRAY4_BITMAP = 5;
-       GGO_GRAY8_BITMAP = 6;
-    { GetGraphicsMode }
-       GDI_ERROR = $ffffffff;
-       GM_COMPATIBLE = 1;
-    { GetHandleInformation }
-       GM_ADVANCED = 2;
-       HANDLE_FLAG_INHERIT = 1;
-    { GetMapMode }
-       HANDLE_FLAG_PROTECT_FROM_CLOSE = 2;
-       MM_ANISOTROPIC = 8;
-       MM_HIENGLISH = 5;
-       MM_HIMETRIC = 3;
-       MM_ISOTROPIC = 7;
-       MM_LOENGLISH = 4;
-       MM_LOMETRIC = 2;
-       MM_TEXT = 1;
-    { GetMenuDefaultItem }
-       MM_TWIPS = 6;
-       GMDI_GOINTOPOPUPS = $2;
-    { PeekMessage }
-       GMDI_USEDISABLED = $1;
-       PM_NOREMOVE = 0;
-       PM_REMOVE = 1;
-    { GetNamedPipeHandleState }
-       PM_NOYIELD = 2;
-//       PIPE_NOWAIT = 1;
-    { GetNamedPipeInfo }
-//       PIPE_READMODE_MESSAGE = 2;
-       PIPE_CLIENT_END = 0;
-       PIPE_SERVER_END = 1;
-    { GetNextWindow, GetWindow }
-//       PIPE_TYPE_MESSAGE = 4;
-       GW_HWNDNEXT = 2;
-       GW_HWNDPREV = 3;
-       GW_CHILD = 5;
-       GW_HWNDFIRST = 0;
-       GW_HWNDLAST = 1;
-    { GetPath }
-       GW_OWNER = 4;
-       PT_MOVETO = 6;
-       PT_LINETO = 2;
-       PT_BEZIERTO = 4;
-    { GetProcessShutdownParameters }
-       PT_CLOSEFIGURE = 1;
-    { GetQueueStatus }
-       SHUTDOWN_NORETRY = 1;
-       QS_ALLEVENTS = 191;
-       QS_ALLINPUT = 255;
-       QS_HOTKEY = 128;
-       QS_INPUT = 7;
-       QS_KEY = 1;
-       QS_MOUSE = 6;
-       QS_MOUSEBUTTON = 4;
-       QS_MOUSEMOVE = 2;
-       QS_PAINT = 32;
-       QS_POSTMESSAGE = 8;
-       QS_SENDMESSAGE = 64;
-    { GetScrollInfo, SetScrollInfo }
-       QS_TIMER = 16;
-       SIF_ALL = 23;
-       SIF_PAGE = 2;
-       SIF_POS = 4;
-       SIF_RANGE = 1;
-    { GetStdHandle }
-       SIF_DISABLENOSCROLL = 8;
-       STD_INPUT_HANDLE = $fffffff6;
-       STD_OUTPUT_HANDLE = $fffffff5;
-       STD_ERROR_HANDLE = $fffffff4;
-    { GetStockObject }
-       BLACK_BRUSH = 4;
-       DKGRAY_BRUSH = 3;
-       GRAY_BRUSH = 2;
-       HOLLOW_BRUSH = 5;
-       LTGRAY_BRUSH = 1;
-       NULL_BRUSH = 5;
-       WHITE_BRUSH = 0;
-       BLACK_PEN = 7;
-       NULL_PEN = 8;
-       WHITE_PEN = 6;
-       ANSI_FIXED_FONT = 11;
-       ANSI_VAR_FONT = 12;
-       DEVICE_DEFAULT_FONT = 14;
-       DEFAULT_GUI_FONT = 17;
-       OEM_FIXED_FONT = 10;
-       SYSTEM_FONT = 13;
-       SYSTEM_FIXED_FONT = 16;
-    { GetStringTypeA }
-       DEFAULT_PALETTE = 15;
-       CT_CTYPE1 = 1;
-       CT_CTYPE2 = 2;
-       CT_CTYPE3 = 4;
-       C1_UPPER = 1;
-       C1_LOWER = 2;
-       C1_DIGIT = 4;
-       C1_SPACE = 8;
-       C1_PUNCT = 16;
-       C1_CNTRL = 32;
-       C1_BLANK = 64;
-       C1_XDIGIT = 128;
-       C1_ALPHA = 256;
-       C2_LEFTTORIGHT = 1;
-       C2_RIGHTTOLEFT = 2;
-       C2_EUROPENUMBER = 3;
-       C2_EUROPESEPARATOR = 4;
-       C2_EUROPETERMINATOR = 5;
-       C2_ARABICNUMBER = 6;
-       C2_COMMONSEPARATOR = 7;
-       C2_BLOCKSEPARATOR = 8;
-       C2_SEGMENTSEPARATOR = 9;
-       C2_WHITESPACE = 10;
-       C2_OTHERNEUTRAL = 11;
-       C2_NOTAPPLICABLE = 0;
-       C3_NONSPACING = 1;
-       C3_DIACRITIC = 2;
-       C3_VOWELMARK = 4;
-       C3_SYMBOL = 8;
-       C3_KATAKANA = 16;
-       C3_HIRAGANA = 32;
-       C3_HALFWIDTH = 64;
-       C3_FULLWIDTH = 128;
-       C3_IDEOGRAPH = 256;
-       C3_KASHIDA = 512;
-       C3_ALPHA = 32768;
-    { GetSysColor }
-       C3_NOTAPPLICABLE = 0;
-       COLOR_3DDKSHADOW = 21;
-       COLOR_3DFACE = 15;
-       COLOR_3DHILIGHT = 20;
-       COLOR_3DLIGHT = 22;
-       COLOR_BTNHILIGHT = 20;
-       COLOR_3DSHADOW = 16;
-       COLOR_ACTIVEBORDER = 10;
-       COLOR_ACTIVECAPTION = 2;
-       COLOR_APPWORKSPACE = 12;
-       COLOR_BACKGROUND = 1;
-       COLOR_DESKTOP = 1;
-       COLOR_BTNFACE = 15;
-       COLOR_BTNHIGHLIGHT = 20;
-       COLOR_BTNSHADOW = 16;
-       COLOR_BTNTEXT = 18;
-       COLOR_CAPTIONTEXT = 9;
-       COLOR_GRAYTEXT = 17;
-       COLOR_HIGHLIGHT = 13;
-       COLOR_HIGHLIGHTTEXT = 14;
-       COLOR_INACTIVEBORDER = 11;
-       COLOR_INACTIVECAPTION = 3;
-       COLOR_INACTIVECAPTIONTEXT = 19;
-       COLOR_INFOBK = 24;
-       COLOR_INFOTEXT = 23;
-       COLOR_MENU = 4;
-       COLOR_MENUTEXT = 7;
-       COLOR_SCROLLBAR = 0;
-       COLOR_WINDOW = 5;
-       COLOR_WINDOWFRAME = 6;
-    { GetSystemMetrics }
-       COLOR_WINDOWTEXT = 8;
-       SM_CYMIN = 29;
-       SM_CXMIN = 28;
-       SM_ARRANGE = 56;
-       SM_CLEANBOOT = 67;
-       SM_CMETRICS = 75;
-       SM_CMOUSEBUTTONS = 43;
-       SM_CXBORDER = 5;
-       SM_CYBORDER = 6;
-       SM_CXCURSOR = 13;
-       SM_CYCURSOR = 14;
-       SM_CXDLGFRAME = 7;
-       SM_CYDLGFRAME = 8;
-       SM_CXDOUBLECLK = 36;
-       SM_CYDOUBLECLK = 37;
-       SM_CXDRAG = 32;
-       SM_CYDRAG = 33;
-       SM_CXEDGE = 32;
-       SM_CYEDGE = 33;
-       SM_CXFIXEDFRAME = 32;
-       SM_CYFIXEDFRAME = 33;
-       SM_CXFRAME = 32;
-       SM_CYFRAME = 33;
-       SM_CXFULLSCREEN = 16;
-       SM_CYFULLSCREEN = 17;
-       SM_CXHSCROLL = 21;
-       SM_CYHSCROLL = 3;
-       SM_CXHTHUMB = 10;
-       SM_CXICON = 11;
-       SM_CYICON = 12;
-       SM_CXICONSPACING = 38;
-       SM_CYICONSPACING = 39;
-       SM_CXMAXIMIZED = 61;
-       SM_CYMAXIMIZED = 62;
-       SM_CXMAXTRACK = 59;
-       SM_CYMAXTRACK = 60;
-       SM_CXMENUCHECK = 71;
-       SM_CYMENUCHECK = 72;
-       SM_CXMENUSIZE = 54;
-       SM_CYMENUSIZE = 55;
-       SM_CXMINIMIZED = 57;
-       SM_CYMINIMIZED = 58;
-       SM_CXMINSPACING = 47;
-       SM_CYMINSPACING = 48;
-       SM_CXMINTRACK = 34;
-       SM_CYMINTRACK = 35;
-       SM_CXSCREEN = 0;
-       SM_CYSCREEN = 1;
-       SM_CXSIZE = 30;
-       SM_CYSIZE = 31;
-       SM_CXSIZEFRAME = 32;
-       SM_CYSIZEFRAME = 33;
-       SM_CXSMICON = 49;
-       SM_CYSMICON = 50;
-       SM_CXSMSIZE = 52;
-       SM_CYSMSIZE = 53;
-       SM_CXVSCROLL = 2;
-//       SM_CYHSCROLL = 3;
-//       SM_CXHSCROLL = 21;
-//       SM_CYVSCROLL = 20;
-       SM_CYVTHUMB = 9;
-       SM_CYCAPTION = 4;
-       SM_CYKANJIWINDOW = 18;
-       SM_CYMENU = 15;
-       SM_CYSMCAPTION = 51;
-       SM_DBCSENABLED = 42;
-       SM_DEBUG = 22;
-       SM_MENUDROPALIGNMENT = 40;
-       SM_MIDEASTENABLED = 74;
-       SM_MOUSEPRESENT = 19;
-       SM_NETWORK = 63;
-       SM_PENWINDOWS = 41;
-       SM_SECURE = 44;
-       SM_SHOWSOUNDS = 70;
-       SM_SLOWMACHINE = 73;
-       SM_SWAPBUTTON = 23;
-       ARW_BOTTOMLEFT = 0;
-       ARW_BOTTOMRIGHT = $1;
-       ARW_HIDE = $8;
-       ARW_TOPLEFT = $2;
-       ARW_TOPRIGHT = $3;
-       ARW_DOWN = $4;
-       ARW_LEFT = 0;
-       ARW_RIGHT = 0;
-    { GetSystemPaletteUse }
-       ARW_UP = $4;
-       SYSPAL_NOSTATIC = 2;
-       SYSPAL_STATIC = 1;
-    { GetTapeParameters, SetTapeParameters }
-       SYSPAL_ERROR = 0;
-       GET_TAPE_MEDIA_INFORMATION = 0;
-       GET_TAPE_DRIVE_INFORMATION = 1;
-       SET_TAPE_MEDIA_INFORMATION = 0;
-    { GetTapePosition }
-       SET_TAPE_DRIVE_INFORMATION = 1;
-       TAPE_ABSOLUTE_POSITION = 0;
-    { GetTextAlign }
-       TAPE_LOGICAL_POSITION = $1;
-       TA_BASELINE = 24;
-       TA_BOTTOM = 8;
-       TA_TOP = 0;
-       TA_CENTER = 6;
-       TA_LEFT = 0;
-       TA_RIGHT = 2;
-       TA_RTLREADING = 256;
-       TA_NOUPDATECP = 0;
-       TA_UPDATECP = 1;
-       VTA_BASELINE = 24;
-    { GetThreadPriority }
-       VTA_CENTER = 6;
-       THREAD_PRIORITY_ABOVE_NORMAL = 1;
-       THREAD_PRIORITY_BELOW_NORMAL = -1;
-       THREAD_PRIORITY_HIGHEST = 2;
-       THREAD_PRIORITY_IDLE = -15;
-       THREAD_PRIORITY_LOWEST = -2;
-       THREAD_PRIORITY_NORMAL = 0;
-       THREAD_PRIORITY_TIME_CRITICAL = 15;
-       THREAD_PRIORITY_ERROR_RETURN = 2147483647;
-    { GetTimeFormat }
-       TLS_MINIMUM_AVAILABLE = 64;
-       TIME_NOMINUTESORSECONDS = 1;
-       TIME_NOSECONDS = 2;
-       TIME_NOTIMEMARKER = 4;
-    { GetTimeZoneInformation }
-       TIME_FORCE24HOURFORMAT = 8;
-       TIME_ZONE_ID_UNKNOWN = 0;
-       TIME_ZONE_ID_STANDARD = 1;
-    { GetUserObjectInformation }
-       TIME_ZONE_ID_DAYLIGHT = 2;
-       UOI_FLAGS = 1;
-       UOI_NAME = 2;
-    { GetVolumeInformation }
-       UOI_TYPE = 3;
-       FS_CASE_IS_PRESERVED = 2;
-       FS_CASE_SENSITIVE = 1;
-       FS_UNICODE_STORED_ON_DISK = 4;
-       FS_PERSISTENT_ACLS = 8;
-       FS_FILE_COMPRESSION = 16;
-    { GetWindowLong }
-       FS_VOL_IS_COMPRESSED = 32768;
-       GWL_EXSTYLE = -20;
-       GWL_STYLE = -16;
-       GWL_WNDPROC = -4;
-       GWL_HINSTANCE = -6;
-       GWL_HWNDPARENT = -8;
-       GWL_ID = -12;
-       GWL_USERDATA = -21;
-       DWL_DLGPROC = 4;
-       DWL_MSGRESULT = 0;
-    { GlobalAlloc, GlobalFlags }
-       DWL_USER = 8;
-       GMEM_FIXED = 0;
-       GMEM_MOVEABLE = 2;
-       GPTR = 64;
-       GHND = 66;
-       GMEM_DDESHARE = 8192;
-       GMEM_DISCARDABLE = 256;
-       GMEM_LOWER = 4096;
-       GMEM_NOCOMPACT = 16;
-       GMEM_NODISCARD = 32;
-       GMEM_NOT_BANKED = 4096;
-       GMEM_NOTIFY = 16384;
-       GMEM_SHARE = 8192;
-       GMEM_ZEROINIT = 64;
-       GMEM_DISCARDED = 16384;
-       GMEM_INVALID_HANDLE = 32768;
-    { HeapAlloc, HeapReAlloc }
-       GMEM_LOCKCOUNT = 255;
-       HEAP_GENERATE_EXCEPTIONS = 4;
-       HEAP_NO_SERIALIZE = 1;
-       HEAP_ZERO_MEMORY = 8;
-       STATUS_NO_MEMORY = $c0000017;
-       STATUS_ACCESS_VIOLATION = $c0000005;
-    { ImageList_Create }
-       HEAP_REALLOC_IN_PLACE_ONLY = 16;
-       ILC_COLOR = 0;
-       ILC_COLOR4 = 4;
-       ILC_COLOR8 = 8;
-       ILC_COLOR16 = 16;
-       ILC_COLOR24 = 24;
-       ILC_COLOR32 = 32;
-       ILC_COLORDDB = 254;
-       ILC_MASK = 1;
-    { ImageList_Draw, ImageList_DrawEx }
-       ILC_PALETTE = 2048;
-       ILD_BLEND25 = 2;
-       ILD_BLEND50 = 4;
-       ILD_SELECTED = 4;
-       ILD_BLEND = 4;
-       ILD_FOCUS = 2;
-       ILD_MASK = 16;
-       ILD_NORMAL = 0;
-       ILD_TRANSPARENT = 1;
-       CLR_NONE = $ffffffff;
-    { ImageList_LoadImage }
-       CLR_DEFAULT = $ff000000;
-//       LR_DEFAULTCOLOR = 0;
-       LR_LOADFROMFILE = 16;
-       LR_LOADMAP3DCOLORS = 4096;
-       LR_LOADTRANSPARENT = 32;
-    { ImmConfigureIME }
-//       LR_MONOCHROME = 1;
-       IME_CONFIG_GENERAL = 1;
-       IME_CONFIG_REGISTERWORD = 2;
-    { ImmGetConversionList }
-       IME_CONFIG_SELECTDICTIONARY = 3;
-       GCL_CONVERSION = 1;
-       GCL_REVERSECONVERSION = 2;
-    { ImmGetGuideLine }
-       GCL_REVERSE_LENGTH = 3;
-       GGL_LEVEL = 1;
-       GGL_INDEX = 2;
-       GGL_STRING = 3;
-       GGL_PRIVATE = 4;
-       GL_LEVEL_ERROR = 2;
-       GL_LEVEL_FATAL = 1;
-       GL_LEVEL_INFORMATION = 4;
-       GL_LEVEL_NOGUIDELINE = 0;
-       GL_LEVEL_WARNING = 3;
-       GL_ID_CANNOTSAVE = 17;
-       GL_ID_NOCONVERT = 32;
-       GL_ID_NODICTIONARY = 16;
-       GL_ID_NOMODULE = 1;
-       GL_ID_READINGCONFLICT = 35;
-       GL_ID_TOOMANYSTROKE = 34;
-       GL_ID_TYPINGERROR = 33;
-       GL_ID_UNKNOWN = 0;
-       GL_ID_INPUTREADING = 36;
-       GL_ID_INPUTRADICAL = 37;
-       GL_ID_INPUTCODE = 38;
-       GL_ID_CHOOSECANDIDATE = 40;
-    { ImmGetProperty }
-       GL_ID_REVERSECONVERSION = 41;
-       IGP_PROPERTY = 4;
-       IGP_CONVERSION = 8;
-       IGP_SENTENCE = 12;
-       IGP_UI = 16;
-       IGP_SETCOMPSTR = 20;
-       IGP_SELECT = 24;
-       IME_PROP_AT_CARET = 65536;
-       IME_PROP_SPECIAL_UI = 131072;
-       IME_PROP_CANDLIST_START_FROM_1 = 262144;
-       IME_PROP_UNICODE = 524288;
-       UI_CAP_2700 = 1;
-       UI_CAP_ROT90 = 2;
-       UI_CAP_ROTANY = 4;
-       SCS_CAP_COMPSTR = 1;
-       SCS_CAP_MAKEREAD = 2;
-       SELECT_CAP_CONVERSION = 1;
-    { ImmNotifyIME }
-       SELECT_CAP_SENTENCE = 2;
-       NI_CHANGECANDIDATELIST = 19;
-       NI_CLOSECANDIDATE = 17;
-       NI_COMPOSITIONSTR = 21;
-       NI_OPENCANDIDATE = 16;
-       NI_SELECTCANDIDATESTR = 18;
-       NI_SETCANDIDATE_PAGESIZE = 23;
-       NI_SETCANDIDATE_PAGESTART = 22;
-       CPS_CANCEL = 4;
-       CPS_COMPLETE = 1;
-       CPS_CONVERT = 2;
-    { ImmSetCompositionString }
-       CPS_REVERT = 3;
-       SCS_SETSTR = 9;
-       SCS_CHANGEATTR = 18;
-    { ImmUnregisterWord }
-       SCS_CHANGECLAUSE = 36;
-       IME_REGWORD_STYLE_EUDC = 1;
-       IME_REGWORD_STYLE_USER_FIRST = $80000000;
-    { InitializeSecurityDescriptor }
-       IME_REGWORD_STYLE_USER_LAST = -1;
-    { IsTextUnicode }
-       SECURITY_DESCRIPTOR_REVISION = 1;
-       IS_TEXT_UNICODE_ASCII16 = 1;
-       IS_TEXT_UNICODE_REVERSE_ASCII16 = 16;
-       IS_TEXT_UNICODE_STATISTICS = 2;
-       IS_TEXT_UNICODE_REVERSE_STATISTICS = 32;
-       IS_TEXT_UNICODE_CONTROLS = 4;
-       IS_TEXT_UNICODE_REVERSE_CONTROLS = 64;
-       IS_TEXT_UNICODE_SIGNATURE = 8;
-       IS_TEXT_UNICODE_REVERSE_SIGNATURE = 128;
-       IS_TEXT_UNICODE_ILLEGAL_CHARS = 256;
-       IS_TEXT_UNICODE_ODD_LENGTH = 512;
-       IS_TEXT_UNICODE_NULL_BYTES = 4096;
-       IS_TEXT_UNICODE_UNICODE_MASK = 15;
-       IS_TEXT_UNICODE_REVERSE_MASK = 240;
-       IS_TEXT_UNICODE_NOT_UNICODE_MASK = 3840;
-    { JournalPlaybackProc, KeyboardProc }
-       IS_TEXT_UNICODE_NOT_ASCII_MASK = 61440;
-       HC_GETNEXT = 1;
-       HC_SKIP = 2;
-       HC_SYSMODALOFF = 5;
-       HC_SYSMODALON = 4;
-    { keybd_event }
-       HC_NOREMOVE = 3;
-       KEYEVENTF_EXTENDEDKEY = 1;
-    { LoadBitmap }
-       KEYEVENTF_KEYUP = 2;
-       OBM_BTNCORNERS = 32758;
-       OBM_BTSIZE = 32761;
-       OBM_CHECK = 32760;
-       OBM_CHECKBOXES = 32759;
-       OBM_CLOSE = 32754;
-       OBM_COMBO = 32738;
-       OBM_DNARROW = 32752;
-       OBM_DNARROWD = 32742;
-       OBM_DNARROWI = 32736;
-       OBM_LFARROW = 32750;
-       OBM_LFARROWI = 32734;
-       OBM_LFARROWD = 32740;
-       OBM_MNARROW = 32739;
-       OBM_OLD_CLOSE = 32767;
-       OBM_OLD_DNARROW = 32764;
-       OBM_OLD_LFARROW = 32762;
-       OBM_OLD_REDUCE = 32757;
-       OBM_OLD_RESTORE = 32755;
-       OBM_OLD_RGARROW = 32763;
-       OBM_OLD_UPARROW = 32765;
-       OBM_OLD_ZOOM = 32756;
-       OBM_REDUCE = 32749;
-       OBM_REDUCED = 32746;
-       OBM_RESTORE = 32747;
-       OBM_RESTORED = 32744;
-       OBM_RGARROW = 32751;
-       OBM_RGARROWD = 32741;
-       OBM_RGARROWI = 32735;
-       OBM_SIZE = 32766;
-       OBM_UPARROW = 32753;
-       OBM_UPARROWD = 32743;
-       OBM_UPARROWI = 32737;
-       OBM_ZOOM = 32748;
-       OBM_ZOOMD = 32745;
-    { LoadLibraryEx }
-       DONT_RESOLVE_DLL_REFERENCES = 1;
-       LOAD_LIBRARY_AS_DATAFILE = 2;
-       LOAD_WITH_ALTERED_SEARCH_PATH = 8;
-    { LocalAlloc, LocalFlags }
-       LMEM_FIXED = 0;
-       LMEM_MOVEABLE = 2;
-       LPTR = 64;
-       LHND = 66;
-       NONZEROLHND = 2;
-       NONZEROLPTR = 0;
-       LMEM_NONZEROLHND = 2;
-       LMEM_NONZEROLPTR = 0;
-       LMEM_DISCARDABLE = 3840;
-       LMEM_NOCOMPACT = 16;
-       LMEM_NODISCARD = 32;
-       LMEM_ZEROINIT = 64;
-       LMEM_DISCARDED = 16384;
-       LMEM_MODIFY = 128;
-       LMEM_INVALID_HANDLE = 32768;
-       LMEM_LOCKCOUNT = 255;
-    { LockFileEx }
-       LOCKFILE_FAIL_IMMEDIATELY = 1;
-    { LogonUser }
-    { LZCopy, LZInit, LZRead }
-    { MessageBeep, MessageBox }
-       LOCKFILE_EXCLUSIVE_LOCK = 2;
-       MB_USERICON = $80;
-       MB_ICONASTERISK = $40;
-       MB_ICONEXCLAMATION = $30;
-       MB_ICONWARNING = $30;
-       MB_ICONERROR = $10;
-       MB_ICONHAND = $10;
-       MB_ICONQUESTION = $20;
-       MB_OK = 0;
-       MB_ABORTRETRYIGNORE = $2;
-       MB_APPLMODAL = 0;
-       MB_DEFAULT_DESKTOP_ONLY = $20000;
-       MB_HELP = $4000;
-       MB_RIGHT = $80000;
-       MB_RTLREADING = $100000;
-       MB_TOPMOST = $40000;
-       MB_DEFBUTTON1 = 0;
-       MB_DEFBUTTON2 = $100;
-       MB_DEFBUTTON3 = $200;
-       MB_DEFBUTTON4 = $300;
-       MB_ICONINFORMATION = $40;
-       MB_ICONSTOP = $10;
-       MB_OKCANCEL = $1;
-       MB_RETRYCANCEL = $5;
-       MB_SERVICE_NOTIFICATION = $40000;
-       MB_SETFOREGROUND = $10000;
-       MB_SYSTEMMODAL = $1000;
-       MB_TASKMODAL = $2000;
-       MB_YESNO = $4;
-       MB_YESNOCANCEL = $3;
-       IDABORT = 3;
-       IDCANCEL = 2;
-       IDCLOSE = 8;
-       IDHELP = 9;
-       IDIGNORE = 5;
-       IDNO = 7;
-       IDOK = 1;
-       IDRETRY = 4;
-    { MessageProc }
-       IDYES = 6;
-       MSGF_DIALOGBOX = 0;
-       MSGF_MENU = 2;
-       MSGF_NEXTWINDOW = 6;
-       MSGF_SCROLLBAR = 5;
-       MSGF_MAINLOOP = 8;
-    { ModifyWorldTransform }
-       MSGF_USER = 4096;
-       MWT_IDENTITY = 1;
-       MWT_LEFTMULTIPLY = 2;
-    { mouse_event }
-       MWT_RIGHTMULTIPLY = 3;
-       MOUSEEVENTF_ABSOLUTE = 32768;
-       MOUSEEVENTF_MOVE = 1;
-       MOUSEEVENTF_LEFTDOWN = 2;
-       MOUSEEVENTF_LEFTUP = 4;
-       MOUSEEVENTF_RIGHTDOWN = 8;
-       MOUSEEVENTF_RIGHTUP = 16;
-       MOUSEEVENTF_MIDDLEDOWN = 32;
-    { MoveFileEx }
-       MOUSEEVENTF_MIDDLEUP = 64;
-       MOVEFILE_REPLACE_EXISTING = 1;
-       MOVEFILE_COPY_ALLOWED = 2;
-    { MsgWaitForMultipleObjects, WaitForMultipleObjectsEx }
-       MOVEFILE_DELAY_UNTIL_REBOOT = 4;
-       WAIT_OBJECT_0 = 0;
-       WAIT_ABANDONED_0 = $80;
-       WAIT_TIMEOUT = $102;
-       WAIT_IO_COMPLETION = $c0;
-       WAIT_ABANDONED = $80;
-       WAIT_FAILED = $ffffffff;
-       MAXIMUM_WAIT_OBJECTS = $40;
-    { MultiByteToWideChar }
-       MAXIMUM_SUSPEND_COUNT = $7f;
-       MB_PRECOMPOSED = 1;
-       MB_COMPOSITE = 2;
-       MB_ERR_INVALID_CHARS = 8;
-    { NDdeSetTrustedShare }
-    { NetAccessCheck }
-    { NetServerEnum }
-    { NetServiceControl }
-    { NetUserEnum }
-    { OpenProcessToken }
-       MB_USEGLYPHCHARS = 4;
-       TOKEN_ADJUST_DEFAULT = 128;
-       TOKEN_ADJUST_GROUPS = 64;
-       TOKEN_ADJUST_PRIVILEGES = 32;
-       TOKEN_ALL_ACCESS = $f00ff;
-       TOKEN_ASSIGN_PRIMARY = 1;
-       TOKEN_DUPLICATE = 2;
-       TOKEN_EXECUTE = $20000;
-       TOKEN_IMPERSONATE = 4;
-       TOKEN_QUERY = 8;
-       TOKEN_QUERY_SOURCE = 16;
-       TOKEN_READ = $20008;
-    { OpenSCManager }
-       TOKEN_WRITE = $200e0;
-       SC_MANAGER_ALL_ACCESS = $f003f;
-       SC_MANAGER_CONNECT = 1;
-       SC_MANAGER_CREATE_SERVICE = 2;
-       SC_MANAGER_ENUMERATE_SERVICE = 4;
-       SC_MANAGER_LOCK = 8;
-       SC_MANAGER_QUERY_LOCK_STATUS = 16;
-    { PrepareTape }
-       SC_MANAGER_MODIFY_BOOT_CONFIG = 32;
-       TAPE_FORMAT = $5;
-       TAPE_LOAD = 0;
-       TAPE_LOCK = $3;
-       TAPE_TENSION = $2;
-       TAPE_UNLOAD = $1;
-    { PropertySheet }
-       TAPE_UNLOCK = $4;
-       IS_PSREBOOTSYSTEM = 3;
-    { PropSheetPageProc }
-       IS_PSRESTARTWINDOWS = 2;
-       PSPCB_CREATE = 2;
-    { PurgeComm }
-       PSPCB_RELEASE = 1;
-       PURGE_TXABORT = 1;
-       PURGE_RXABORT = 2;
-       PURGE_TXCLEAR = 4;
-    { QueryServiceObjectSecurity }
-       PURGE_RXCLEAR = 8;
-       OWNER_SECURITY_INFORMATION = $1;
-       GROUP_SECURITY_INFORMATION = $2;
-       DACL_SECURITY_INFORMATION = $4;
-    { ReadEventLog, ReportEvent }
-       SACL_SECURITY_INFORMATION = $8;
-       EVENTLOG_FORWARDS_READ = 4;
-       EVENTLOG_BACKWARDS_READ = 8;
-       EVENTLOG_SEEK_READ = 2;
-       EVENTLOG_SEQUENTIAL_READ = 1;
-       EVENTLOG_ERROR_TYPE = 1;
-       EVENTLOG_WARNING_TYPE = 2;
-       EVENTLOG_INFORMATION_TYPE = 4;
-       EVENTLOG_AUDIT_SUCCESS = 8;
-    { RedrawWindow }
-       EVENTLOG_AUDIT_FAILURE = 16;
-       RDW_ERASE = 4;
-       RDW_FRAME = 1024;
-       RDW_INTERNALPAINT = 2;
-       RDW_INVALIDATE = 1;
-       RDW_NOERASE = 32;
-       RDW_NOFRAME = 2048;
-       RDW_NOINTERNALPAINT = 16;
-       RDW_VALIDATE = 8;
-       RDW_ERASENOW = 512;
-       RDW_UPDATENOW = 256;
-       RDW_ALLCHILDREN = 128;
-    { RegCreateKeyEx }
-       RDW_NOCHILDREN = 64;
-       REG_OPTION_VOLATILE = $1;
-       REG_OPTION_NON_VOLATILE = 0;
-       REG_CREATED_NEW_KEY = $1;
-    { RegEnumValue }
-       REG_OPENED_EXISTING_KEY = $2;
-       REG_BINARY = 3;
-       REG_DWORD = 4;
-       REG_DWORD_LITTLE_ENDIAN = 4;
-       REG_DWORD_BIG_ENDIAN = 5;
-       REG_EXPAND_SZ = 2;
-       REG_LINK = 6;
-       REG_MULTI_SZ = 7;
-       REG_NONE = 0;
-       REG_RESOURCE_LIST = 8;
-    { RegisterHotKey }
-       REG_SZ = 1;
-       MOD_ALT = 1;
-       MOD_CONTROL = 2;
-       MOD_SHIFT = 4;
-       MOD_WIN = 8;
-       IDHOT_SNAPDESKTOP = -2;
-    { RegNotifyChangeKeyValue }
-       IDHOT_SNAPWINDOW = -1;
-       REG_NOTIFY_CHANGE_NAME = $1;
-       REG_NOTIFY_CHANGE_ATTRIBUTES = $2;
-       REG_NOTIFY_CHANGE_LAST_SET = $4;
-    { ScrollWindowEx }
-       REG_NOTIFY_CHANGE_SECURITY = $8;
-       SW_ERASE = 4;
-       SW_INVALIDATE = 2;
-    { SendMessageTimeout }
-       SW_SCROLLCHILDREN = 1;
-       SMTO_ABORTIFHUNG = 2;
-       SMTO_BLOCK = 1;
-    { SetBkMode }
-       SMTO_NORMAL = 0;
-       OPAQUE = 2;
-    { SetDebugErrorLevel }
-       TRANSPARENT = 1;
-       SLE_ERROR = 1;
-       SLE_MINORERROR = 2;
-    { SetErrorMode }
-       SLE_WARNING = 3;
-       SEM_FAILCRITICALERRORS = 1;
-       SEM_NOALIGNMENTFAULTEXCEPT = 4;
-       SEM_NOGPFAULTERRORBOX = 2;
-    { SetICMMode }
-       SEM_NOOPENFILEERRORBOX = 32768;
-       ICM_ON = 2;
-       ICM_OFF = 1;
-    { SetJob }
-    { Locale Information }
-       ICM_QUERY = 3;
-       LOCALE_ILANGUAGE = 1;
-       LOCALE_SLANGUAGE = 2;
-       LOCALE_SENGLANGUAGE = 4097;
-       LOCALE_SABBREVLANGNAME = 3;
-       LOCALE_SNATIVELANGNAME = 4;
-       LOCALE_ICOUNTRY = 5;
-       LOCALE_SCOUNTRY = 6;
-       LOCALE_SENGCOUNTRY = 4098;
-       LOCALE_SABBREVCTRYNAME = 7;
-       LOCALE_SNATIVECTRYNAME = 8;
-       LOCALE_IDEFAULTLANGUAGE = 9;
-       LOCALE_IDEFAULTCOUNTRY = 10;
-       LOCALE_IDEFAULTANSICODEPAGE = 4100;
-       LOCALE_IDEFAULTCODEPAGE = 11;
-       LOCALE_SLIST = 12;
-       LOCALE_IMEASURE = 13;
-       LOCALE_SDECIMAL = 14;
-       LOCALE_STHOUSAND = 15;
-       LOCALE_SGROUPING = 16;
-       LOCALE_IDIGITS = 17;
-       LOCALE_ILZERO = 18;
-       LOCALE_INEGNUMBER = 4112;
-       LOCALE_SCURRENCY = 20;
-       LOCALE_SMONDECIMALSEP = 22;
-       LOCALE_SMONTHOUSANDSEP = 23;
-       LOCALE_SMONGROUPING = 24;
-       LOCALE_ICURRDIGITS = 25;
-       LOCALE_ICURRENCY = 27;
-       LOCALE_INEGCURR = 28;
-       LOCALE_SDATE = 29;
-       LOCALE_STIME = 30;
-       LOCALE_STIMEFORMAT = 4099;
-       LOCALE_SSHORTDATE = 31;
-       LOCALE_SLONGDATE = 32;
-       LOCALE_IDATE = 33;
-       LOCALE_ILDATE = 34;
-       LOCALE_ITIME = 35;
-       LOCALE_ITLZERO = 37;
-       LOCALE_IDAYLZERO = 38;
-       LOCALE_IMONLZERO = 39;
-       LOCALE_S1159 = 40;
-       LOCALE_S2359 = 41;
-       LOCALE_ICALENDARTYPE = 4105;
-       LOCALE_IOPTIONALCALENDAR = 4107;
-       LOCALE_IFIRSTDAYOFWEEK = 4108;
-       LOCALE_IFIRSTWEEKOFYEAR = 4109;
-       LOCALE_SDAYNAME1 = 42;
-       LOCALE_SDAYNAME2 = 43;
-       LOCALE_SDAYNAME3 = 44;
-       LOCALE_SDAYNAME4 = 45;
-       LOCALE_SDAYNAME5 = 46;
-       LOCALE_SDAYNAME6 = 47;
-       LOCALE_SDAYNAME7 = 48;
-       LOCALE_SABBREVDAYNAME1 = 49;
-       LOCALE_SABBREVDAYNAME2 = 50;
-       LOCALE_SABBREVDAYNAME3 = 51;
-       LOCALE_SABBREVDAYNAME4 = 52;
-       LOCALE_SABBREVDAYNAME5 = 53;
-       LOCALE_SABBREVDAYNAME6 = 54;
-       LOCALE_SABBREVDAYNAME7 = 55;
-       LOCALE_SMONTHNAME1 = 56;
-       LOCALE_SMONTHNAME2 = 57;
-       LOCALE_SMONTHNAME3 = 58;
-       LOCALE_SMONTHNAME4 = 59;
-       LOCALE_SMONTHNAME5 = 60;
-       LOCALE_SMONTHNAME6 = 61;
-       LOCALE_SMONTHNAME7 = 62;
-       LOCALE_SMONTHNAME8 = 63;
-       LOCALE_SMONTHNAME9 = 64;
-       LOCALE_SMONTHNAME10 = 65;
-       LOCALE_SMONTHNAME11 = 66;
-       LOCALE_SMONTHNAME12 = 67;
-       LOCALE_SMONTHNAME13 = 4110;
-       LOCALE_SABBREVMONTHNAME1 = 68;
-       LOCALE_SABBREVMONTHNAME2 = 69;
-       LOCALE_SABBREVMONTHNAME3 = 70;
-       LOCALE_SABBREVMONTHNAME4 = 71;
-       LOCALE_SABBREVMONTHNAME5 = 72;
-       LOCALE_SABBREVMONTHNAME6 = 73;
-       LOCALE_SABBREVMONTHNAME7 = 74;
-       LOCALE_SABBREVMONTHNAME8 = 75;
-       LOCALE_SABBREVMONTHNAME9 = 76;
-       LOCALE_SABBREVMONTHNAME10 = 77;
-       LOCALE_SABBREVMONTHNAME11 = 78;
-       LOCALE_SABBREVMONTHNAME12 = 79;
-       LOCALE_SABBREVMONTHNAME13 = 4111;
-       LOCALE_SPOSITIVESIGN = 80;
-       LOCALE_SNEGATIVESIGN = 81;
-       LOCALE_IPOSSIGNPOSN = 82;
-       LOCALE_INEGSIGNPOSN = 83;
-       LOCALE_IPOSSYMPRECEDES = 84;
-       LOCALE_IPOSSEPBYSPACE = 85;
-       LOCALE_INEGSYMPRECEDES = 86;
-       LOCALE_INEGSEPBYSPACE = 87;
-    { Calendar Type Information }
-       LOCALE_NOUSEROVERRIDE = $80000000;
-       CAL_ICALINTVALUE = 1;
-       CAL_IYEAROFFSETRANGE = 3;
-       CAL_SABBREVDAYNAME1 = 14;
-       CAL_SABBREVDAYNAME2 = 15;
-       CAL_SABBREVDAYNAME3 = 16;
-       CAL_SABBREVDAYNAME4 = 17;
-       CAL_SABBREVDAYNAME5 = 18;
-       CAL_SABBREVDAYNAME6 = 19;
-       CAL_SABBREVDAYNAME7 = 20;
-       CAL_SABBREVMONTHNAME1 = 34;
-       CAL_SABBREVMONTHNAME2 = 35;
-       CAL_SABBREVMONTHNAME3 = 36;
-       CAL_SABBREVMONTHNAME4 = 37;
-       CAL_SABBREVMONTHNAME5 = 38;
-       CAL_SABBREVMONTHNAME6 = 39;
-       CAL_SABBREVMONTHNAME7 = 40;
-       CAL_SABBREVMONTHNAME8 = 41;
-       CAL_SABBREVMONTHNAME9 = 42;
-       CAL_SABBREVMONTHNAME10 = 43;
-       CAL_SABBREVMONTHNAME11 = 44;
-       CAL_SABBREVMONTHNAME12 = 45;
-       CAL_SABBREVMONTHNAME13 = 46;
-       CAL_SCALNAME = 2;
-       CAL_SDAYNAME1 = 7;
-       CAL_SDAYNAME2 = 8;
-       CAL_SDAYNAME3 = 9;
-       CAL_SDAYNAME4 = 10;
-       CAL_SDAYNAME5 = 11;
-       CAL_SDAYNAME6 = 12;
-       CAL_SDAYNAME7 = 13;
-       CAL_SERASTRING = 4;
-       CAL_SLONGDATE = 6;
-       CAL_SMONTHNAME1 = 21;
-       CAL_SMONTHNAME2 = 22;
-       CAL_SMONTHNAME3 = 23;
-       CAL_SMONTHNAME4 = 24;
-       CAL_SMONTHNAME5 = 25;
-       CAL_SMONTHNAME6 = 26;
-       CAL_SMONTHNAME7 = 27;
-       CAL_SMONTHNAME8 = 28;
-       CAL_SMONTHNAME9 = 29;
-       CAL_SMONTHNAME10 = 30;
-       CAL_SMONTHNAME11 = 31;
-       CAL_SMONTHNAME12 = 32;
-       CAL_SMONTHNAME13 = 33;
-    { SetProcessWorkingSetSize }
-       CAL_SSHORTDATE = 5;
-    { SetPrinter }
-    { SetService }
-    { SetStretchBltMode }
-       PROCESS_SET_QUOTA = 256;
-       BLACKONWHITE = 1;
-       COLORONCOLOR = 3;
-       HALFTONE = 4;
-       STRETCH_ANDSCANS = 1;
-       STRETCH_DELETESCANS = 3;
-       STRETCH_HALFTONE = 4;
-       STRETCH_ORSCANS = 2;
-    { SetSystemCursor }
-       WHITEONBLACK = 2;
-       OCR_NORMAL = 32512;
-       OCR_IBEAM = 32513;
-       OCR_WAIT = 32514;
-       OCR_CROSS = 32515;
-       OCR_UP = 32516;
-       OCR_SIZE = 32640;
-       OCR_ICON = 32641;
-       OCR_SIZENWSE = 32642;
-       OCR_SIZENESW = 32643;
-       OCR_SIZEWE = 32644;
-       OCR_SIZENS = 32645;
-       OCR_SIZEALL = 32646;
-       OCR_NO = 32648;
-    { SetTapePosition }
-       OCR_APPSTARTING = 32650;
-       TAPE_ABSOLUTE_BLOCK = $1;
-       TAPE_LOGICAL_BLOCK = $2;
-       TAPE_REWIND = 0;
-       TAPE_SPACE_END_OF_DATA = $4;
-       TAPE_SPACE_FILEMARKS = $6;
-       TAPE_SPACE_RELATIVE_BLOCKS = $5;
-       TAPE_SPACE_SEQUENTIAL_FMKS = $7;
-       TAPE_SPACE_SEQUENTIAL_SMKS = $9;
-    { SetUnhandledExceptionFilter }
-       TAPE_SPACE_SETMARKS = $8;
-       EXCEPTION_EXECUTE_HANDLER = 1;
-       EXCEPTION_CONTINUE_EXECUTION = -1;
-    { SetWindowPos, DeferWindowPos }
-       EXCEPTION_CONTINUE_SEARCH = 0;
-       SWP_DRAWFRAME = 32;
-       SWP_FRAMECHANGED = 32;
-       SWP_HIDEWINDOW = 128;
-       SWP_NOACTIVATE = 16;
-       SWP_NOCOPYBITS = 256;
-       SWP_NOMOVE = 2;
-       SWP_NOSIZE = 1;
-       SWP_NOREDRAW = 8;
-       SWP_NOZORDER = 4;
-       SWP_SHOWWINDOW = 64;
-       SWP_NOOWNERZORDER = 512;
-       SWP_NOREPOSITION = 512;
-    { SHAddToRecentDocs }
-    { SHAppBarMessage }
-    { SHChangeNotify }
-    { ShellProc }
-       SWP_NOSENDCHANGING = 1024;
-       HSHELL_ACTIVATESHELLWINDOW = 3;
-       HSHELL_GETMINRECT = 5;
-       HSHELL_LANGUAGE = 8;
-       HSHELL_REDRAW = 6;
-       HSHELL_TASKMAN = 7;
-       HSHELL_WINDOWACTIVATED = 4;
-       HSHELL_WINDOWCREATED = 1;
-    { SHGetFileInfo }
-    { SHGetSpecialFolderLocation }
-    { ShowWindow }
-       HSHELL_WINDOWDESTROYED = 2;
-       SW_HIDE = 0;
-       SW_MAXIMIZE = 3;
-       SW_MINIMIZE = 6;
-       SW_RESTORE = 9;
-       SW_SHOW = 5;
-       SW_SHOWDEFAULT = 10;
-       SW_SHOWMAXIMIZED = 3;
-       SW_SHOWMINIMIZED = 2;
-       SW_SHOWMINNOACTIVE = 7;
-       SW_SHOWNA = 8;
-       SW_SHOWNOACTIVATE = 4;
-       SW_SHOWNORMAL = 1;
-       WPF_RESTORETOMAXIMIZED = 2;
-    { Sleep }
-       WPF_SETMINPOSITION = 1;
-    { SystemParametersInfo }
-       INFINITE = -1;
-       SPI_GETACCESSTIMEOUT = 60;
-       SPI_GETANIMATION = 72;
-       SPI_GETBEEP = 1;
-       SPI_GETBORDER = 5;
-       SPI_GETDEFAULTINPUTLANG = 89;
-       SPI_GETDRAGFULLWINDOWS = 38;
-       SPI_GETFASTTASKSWITCH = 35;
-       SPI_GETFILTERKEYS = 50;
-       SPI_GETFONTSMOOTHING = 74;
-       SPI_GETGRIDGRANULARITY = 18;
-       SPI_GETHIGHCONTRAST = 66;
-       SPI_GETICONMETRICS = 45;
-       SPI_GETICONTITLELOGFONT = 31;
-       SPI_GETICONTITLEWRAP = 25;
-       SPI_GETKEYBOARDDELAY = 22;
-       SPI_GETKEYBOARDPREF = 68;
-       SPI_GETKEYBOARDSPEED = 10;
-       SPI_GETLOWPOWERACTIVE = 83;
-       SPI_GETLOWPOWERTIMEOUT = 79;
-       SPI_GETMENUDROPALIGNMENT = 27;
-       SPI_GETMINIMIZEDMETRICS = 43;
-       SPI_GETMOUSE = 3;
-       SPI_GETMOUSEKEYS = 54;
-       SPI_GETMOUSETRAILS = 94;
-       SPI_GETNONCLIENTMETRICS = 41;
-       SPI_GETPOWEROFFACTIVE = 84;
-       SPI_GETPOWEROFFTIMEOUT = 80;
-       SPI_GETSCREENREADER = 70;
-       SPI_GETSCREENSAVEACTIVE = 16;
-       SPI_GETSCREENSAVETIMEOUT = 14;
-       SPI_GETSERIALKEYS = 62;
-       SPI_GETSHOWSOUNDS = 56;
-       SPI_GETSOUNDSENTRY = 64;
-       SPI_GETSTICKYKEYS = 58;
-       SPI_GETTOGGLEKEYS = 52;
-       SPI_GETWINDOWSEXTENSION = 92;
-       SPI_GETWORKAREA = 48;
-       SPI_ICONHORIZONTALSPACING = 13;
-       SPI_ICONVERTICALSPACING = 24;
-       SPI_LANGDRIVER = 12;
-       SPI_SCREENSAVERRUNNING = 97;
-       SPI_SETACCESSTIMEOUT = 61;
-       SPI_SETANIMATION = 73;
-       SPI_SETBEEP = 2;
-       SPI_SETBORDER = 6;
-       SPI_SETDEFAULTINPUTLANG = 90;
-       SPI_SETDESKPATTERN = 21;
-       SPI_SETDESKWALLPAPER = 20;
-       SPI_SETDOUBLECLICKTIME = 32;
-       SPI_SETDOUBLECLKHEIGHT = 30;
-       SPI_SETDOUBLECLKWIDTH = 29;
-       SPI_SETDRAGFULLWINDOWS = 37;
-       SPI_SETDRAGHEIGHT = 77;
-       SPI_SETDRAGWIDTH = 76;
-       SPI_SETFASTTASKSWITCH = 36;
-       SPI_SETFILTERKEYS = 51;
-       SPI_SETFONTSMOOTHING = 75;
-       SPI_SETGRIDGRANULARITY = 19;
-       SPI_SETHANDHELD = 78;
-       SPI_SETHIGHCONTRAST = 67;
-       SPI_SETICONMETRICS = 46;
-       SPI_SETICONTITLELOGFONT = 34;
-       SPI_SETICONTITLEWRAP = 26;
-       SPI_SETKEYBOARDDELAY = 23;
-       SPI_SETKEYBOARDPREF = 69;
-       SPI_SETKEYBOARDSPEED = 11;
-       SPI_SETLANGTOGGLE = 91;
-       SPI_SETLOWPOWERACTIVE = 85;
-       SPI_SETLOWPOWERTIMEOUT = 81;
-       SPI_SETMENUDROPALIGNMENT = 28;
-       SPI_SETMINIMIZEDMETRICS = 44;
-       SPI_SETMOUSE = 4;
-       SPI_SETMOUSEBUTTONSWAP = 33;
-       SPI_SETMOUSEKEYS = 55;
-       SPI_SETMOUSETRAILS = 93;
-       SPI_SETNONCLIENTMETRICS = 42;
-       SPI_SETPENWINDOWS = 49;
-       SPI_SETPOWEROFFACTIVE = 86;
-       SPI_SETPOWEROFFTIMEOUT = 82;
-       SPI_SETSCREENREADER = 71;
-       SPI_SETSCREENSAVEACTIVE = 17;
-       SPI_SETSCREENSAVETIMEOUT = 15;
-       SPI_SETSERIALKEYS = 63;
-       SPI_SETSHOWSOUNDS = 57;
-       SPI_SETSOUNDSENTRY = 65;
-       SPI_SETSTICKYKEYS = 59;
-       SPI_SETTOGGLEKEYS = 53;
-       SPI_SETWORKAREA = 47;
-       SPIF_UPDATEINIFILE = 1;
-       SPIF_SENDWININICHANGE = 2;
-    { TrackPopupMenu, TrackPopMenuEx }
-       SPIF_SENDCHANGE = 2;
-       TPM_CENTERALIGN = $4;
-       TPM_LEFTALIGN = 0;
-       TPM_RIGHTALIGN = $8;
-       TPM_LEFTBUTTON = 0;
-       TPM_RIGHTBUTTON = $2;
-       TPM_HORIZONTAL = 0;
-    { TranslateCharsetInfo }
-       TPM_VERTICAL = $40;
-       TCI_SRCCHARSET = 1;
-       TCI_SRCCODEPAGE = 2;
-    { VerFindFile }
-       TCI_SRCFONTSIG = 3;
-       VFFF_ISSHAREDFILE = 1;
-       VFF_CURNEDEST = 1;
-       VFF_FILEINUSE = 2;
-    { VerInstallFile }
-       VFF_BUFFTOOSMALL = 4;
-       VIFF_FORCEINSTALL = 1;
-       VIFF_DONTDELETEOLD = 2;
-       VIF_TEMPFILE = $1;
-       VIF_MISMATCH = $2;
-       VIF_SRCOLD = $4;
-       VIF_DIFFLANG = $8;
-       VIF_DIFFCODEPG = $10;
-       VIF_DIFFTYPE = $20;
-       VIF_WRITEPROT = $40;
-       VIF_FILEINUSE = $80;
-       VIF_OUTOFSPACE = $100;
-       VIF_ACCESSVIOLATION = $200;
-       VIF_SHARINGVIOLATION = $400;
-       VIF_CANNOTCREATE = $800;
-       VIF_CANNOTDELETE = $1000;
-       VIF_CANNOTDELETECUR = $4000;
-       VIF_CANNOTRENAME = $2000;
-       VIF_OUTOFMEMORY = $8000;
-       VIF_CANNOTREADSRC = $10000;
-       VIF_CANNOTREADDST = $20000;
-    { WideCharToMultiByte }
-       VIF_BUFFTOOSMALL = $40000;
-       WC_COMPOSITECHECK = 512;
-       WC_DISCARDNS = 16;
-       WC_SEPCHARS = 32;
-    { WinHelp }
-       WC_DEFAULTCHAR = 64;
-       HELP_COMMAND = $102;
-       HELP_CONTENTS = $3;
-       HELP_CONTEXT = $1;
-       HELP_CONTEXTPOPUP = $8;
-       HELP_FORCEFILE = $9;
-       HELP_HELPONHELP = $4;
-       HELP_INDEX = $3;
-       HELP_KEY = $101;
-       HELP_MULTIKEY = $201;
-       HELP_PARTIALKEY = $105;
-       HELP_QUIT = $2;
-       HELP_SETCONTENTS = $5;
-       HELP_SETINDEX = $5;
-       HELP_CONTEXTMENU = $a;
-       HELP_FINDER = $b;
-       HELP_WM_HELP = $c;
-       HELP_TCARD = $8000;
-       HELP_TCARD_DATA = $10;
-    { WNetAddConnectino2 }
-       HELP_TCARD_OTHER_CALLER = $11;
-    { WNetConnectionDialog, WNetDisconnectDialog, WNetOpenEnum }
-       CONNECT_UPDATE_PROFILE = 1;
-       RESOURCETYPE_DISK = 1;
-       RESOURCETYPE_PRINT = 2;
-       RESOURCETYPE_ANY = 0;
-       RESOURCE_CONNECTED = 1;
-       RESOURCE_GLOBALNET = 2;
-       RESOURCE_REMEMBERED = 3;
-       RESOURCEUSAGE_CONNECTABLE = 1;
-    { WNetGetResourceInformation, WNetGetResourceParent }
-       RESOURCEUSAGE_CONTAINER = 2;
-       WN_BAD_NETNAME = $43;
-       WN_EXTENDED_ERROR = $4b8;
-       WN_MORE_DATA = $ea;
-       WN_NO_NETWORK = $4c6;
-       WN_SUCCESS = 0;
-       WN_ACCESS_DENIED = $5;
-       WN_BAD_PROVIDER = $4b4;
-    { WNetGetUniversalName }
-       WN_NOT_AUTHENTICATED = $4dc;
-       UNIVERSAL_NAME_INFO_LEVEL = 1;
-    { GetExitCodeThread }
-       REMOTE_NAME_INFO_LEVEL = 2;
-    { COMMPROP structure }
-       STILL_ACTIVE = $103;
-       SP_SERIALCOMM = $1;
-       BAUD_075 = $1;
-       BAUD_110 = $2;
-       BAUD_134_5 = $4;
-       BAUD_150 = $8;
-       BAUD_300 = $10;
-       BAUD_600 = $20;
-       BAUD_1200 = $40;
-       BAUD_1800 = $80;
-       BAUD_2400 = $100;
-       BAUD_4800 = $200;
-       BAUD_7200 = $400;
-       BAUD_9600 = $800;
-       BAUD_14400 = $1000;
-       BAUD_19200 = $2000;
-       BAUD_38400 = $4000;
-       BAUD_56K = $8000;
-       BAUD_57600 = $40000;
-       BAUD_115200 = $20000;
-       BAUD_128K = $10000;
-       BAUD_USER = $10000000;
-       PST_FAX = $21;
-       PST_LAT = $101;
-       PST_MODEM = $6;
-       PST_NETWORK_BRIDGE = $100;
-       PST_PARALLELPORT = $2;
-       PST_RS232 = $1;
-       PST_RS422 = $3;
-       PST_RS423 = $4;
-       PST_RS449 = $5;
-       PST_SCANNER = $22;
-       PST_TCPIP_TELNET = $102;
-       PST_UNSPECIFIED = 0;
-       PST_X25 = $103;
-       PCF_16BITMODE = $200;
-       PCF_DTRDSR = $1;
-       PCF_INTTIMEOUTS = $80;
-       PCF_PARITY_CHECK = $8;
-       PCF_RLSD = $4;
-       PCF_RTSCTS = $2;
-       PCF_SETXCHAR = $20;
-       PCF_SPECIALCHARS = $100;
-       PCF_TOTALTIMEOUTS = $40;
-       PCF_XONXOFF = $10;
-       SP_BAUD = $2;
-       SP_DATABITS = $4;
-       SP_HANDSHAKING = $10;
-       SP_PARITY = $1;
-       SP_PARITY_CHECK = $20;
-       SP_RLSD = $40;
-       SP_STOPBITS = $8;
-       DATABITS_5 = 1;
-       DATABITS_6 = 2;
-       DATABITS_7 = 4;
-       DATABITS_8 = 8;
-       DATABITS_16 = 16;
-       DATABITS_16X = 32;
-       STOPBITS_10 = 1;
-       STOPBITS_15 = 2;
-       STOPBITS_20 = 4;
-       PARITY_NONE = 256;
-       PARITY_ODD = 512;
-       PARITY_EVEN = 1024;
-       PARITY_MARK = 2048;
-       PARITY_SPACE = 4096;
-    { DCB structure }
-       COMMPROP_INITIALIZED = $e73cf52e;
-       CBR_110 = 110;
-       CBR_300 = 300;
-       CBR_600 = 600;
-       CBR_1200 = 1200;
-       CBR_2400 = 2400;
-       CBR_4800 = 4800;
-       CBR_9600 = 9600;
-       CBR_14400 = 14400;
-       CBR_19200 = 19200;
-       CBR_38400 = 38400;
-       CBR_56000 = 56000;
-       CBR_57600 = 57600;
-       CBR_115200 = 115200;
-       CBR_128000 = 128000;
-       CBR_256000 = 256000;
-       DTR_CONTROL_DISABLE = 0;
-       DTR_CONTROL_ENABLE = 1;
-       DTR_CONTROL_HANDSHAKE = 2;
-       RTS_CONTROL_DISABLE = 0;
-       RTS_CONTROL_ENABLE = 1;
-       RTS_CONTROL_HANDSHAKE = 2;
-       RTS_CONTROL_TOGGLE = 3;
-       EVENPARITY = 2;
-       MARKPARITY = 3;
-       NOPARITY = 0;
-       ODDPARITY = 1;
-       ONESTOPBIT = 0;
-       ONE5STOPBITS = 1;
-    { Debugging events }
-       TWOSTOPBITS = 2;
-       CREATE_PROCESS_DEBUG_EVENT = 3;
-       CREATE_THREAD_DEBUG_EVENT = 2;
-       EXCEPTION_DEBUG_EVENT = 1;
-       EXIT_PROCESS_DEBUG_EVENT = 5;
-       EXIT_THREAD_DEBUG_EVENT = 4;
-       LOAD_DLL_DEBUG_EVENT = 6;
-       OUTPUT_DEBUG_STRING_EVENT = 8;
-       UNLOAD_DLL_DEBUG_EVENT = 7;
-    { PROCESS_HEAP_ENTRY structure }
-       RIP_EVENT = 9;
-       PROCESS_HEAP_REGION = 1;
-       PROCESS_HEAP_UNCOMMITTED_RANGE = 2;
-       PROCESS_HEAP_ENTRY_BUSY = 4;
-       PROCESS_HEAP_ENTRY_MOVEABLE = 16;
-    { Win32s }
-       PROCESS_HEAP_ENTRY_DDESHARE = 32;
-    { WIN32_STREAM_ID structure }
-       HINSTANCE_ERROR = 32;
-       BACKUP_DATA = 1;
-       BACKUP_EA_DATA = 2;
-       BACKUP_SECURITY_DATA = 3;
-       BACKUP_ALTERNATE_DATA = 4;
-       BACKUP_LINK = 5;
-       STREAM_MODIFIED_WHEN_READ = 1;
-    { STARTUPINFO structure }
-       STREAM_CONTAINS_SECURITY = 2;
-       STARTF_USESHOWWINDOW = 1;
-       STARTF_USEPOSITION = 4;
-       STARTF_USESIZE = 2;
-       STARTF_USECOUNTCHARS = 8;
-       STARTF_USEFILLATTRIBUTE = 16;
-       STARTF_FORCEONFEEDBACK = 64;
-       STARTF_FORCEOFFFEEDBACK = 128;
-    { OSVERSIONINFO structure }
-       STARTF_USESTDHANDLES = 256;
-       VER_PLATFORM_WIN32s = 0;
-    { PROPSHEETPAGE structure }
-       VER_PLATFORM_WIN32_NT = 2;
-       MAXPROPPAGES = 100;
-       PSP_DEFAULT = 0;
-       PSP_DLGINDIRECT = 1;
-       PSP_HASHELP = 32;
-       PSP_USECALLBACK = 128;
-       PSP_USEHICON = 2;
-       PSP_USEICONID = 4;
-       PSP_USEREFPARENT = 64;
-       PSP_USETITLE = 8;
-    { PROPSHEETHEADER structure }
-       PSP_RTLREADING = 16;
-       PSH_DEFAULT = 0;
-       PSH_HASHELP = 512;
-       PSH_MODELESS = 1024;
-       PSH_NOAPPLYNOW = 128;
-       PSH_PROPSHEETPAGE = 8;
-       PSH_PROPTITLE = 1;
-       PSH_USECALLBACK = 256;
-       PSH_USEHICON = 2;
-       PSH_USEICONID = 4;
-       PSH_USEPSTARTPAGE = 64;
-       PSH_WIZARD = 32;
-       PSH_RTLREADING = 2048;
-       PSCB_INITIALIZED = 1;
-    { PSN_APPLY message }
-       PSCB_PRECREATE = 2;
-       PSNRET_NOERROR = 0;
-    { Property Sheet }
-       PSNRET_INVALID_NOCHANGEPAGE = 2;
-       PSBTN_APPLYNOW = 4;
-       PSBTN_BACK = 0;
-       PSBTN_CANCEL = 5;
-       PSBTN_FINISH = 2;
-       PSBTN_HELP = 6;
-       PSBTN_NEXT = 1;
-       PSBTN_OK = 3;
-       PSWIZB_BACK = 1;
-       PSWIZB_NEXT = 2;
-       PSWIZB_FINISH = 4;
-       PSWIZB_DISABLEDFINISH = 8;
-       ID_PSREBOOTSYSTEM = 3;
-       ID_PSRESTARTWINDOWS = 2;
-       WIZ_BODYCX = 184;
-       WIZ_BODYX = 92;
-       WIZ_CXBMP = 80;
-       WIZ_CXDLG = 276;
-       WIZ_CYDLG = 140;
-    { VX_FIXEDFILEINFO structure }
-       VS_VERSION_INFO = 1;
-       VS_FF_DEBUG = $1;
-       VS_FF_INFOINFERRED = $10;
-       VS_FF_PATCHED = $4;
-       VS_FF_PRERELEASE = $2;
-       VS_FF_PRIVATEBUILD = $8;
-       VS_FF_SPECIALBUILD = $20;
-       VOS_UNKNOWN = 0;
-       VOS_DOS = $10000;
-       VOS_OS216 = $20000;
-       VOS_OS232 = $30000;
-       VOS_NT = $40000;
-       VOS_DOS_WINDOWS16 = $10001;
-       VOS_DOS_WINDOWS32 = $10004;
-       VOS_OS216_PM16 = $20002;
-       VOS_OS232_PM32 = $30003;
-       VOS_NT_WINDOWS32 = $40004;
-       VFT_UNKNOWN = 0;
-       VFT_APP = $1;
-       VFT_DLL = $2;
-       VFT_DRV = $3;
-       VFT_FONT = $4;
-       VFT_VXD = $5;
-       VFT_STATIC_LIB = $7;
-       VFT2_UNKNOWN = 0;
-       VFT2_DRV_PRINTER = $1;
-       VFT2_DRV_KEYBOARD = $2;
-       VFT2_DRV_LANGUAGE = $3;
-       VFT2_DRV_DISPLAY = $4;
-       VFT2_DRV_MOUSE = $5;
-       VFT2_DRV_NETWORK = $6;
-       VFT2_DRV_SYSTEM = $7;
-       VFT2_DRV_INSTALLABLE = $8;
-       VFT2_DRV_SOUND = $9;
-       VFT2_FONT_RASTER = $1;
-       VFT2_FONT_VECTOR = $2;
-    { PANOSE structure }
-       VFT2_FONT_TRUETYPE = $3;
-       PAN_ANY = 0;
-       PAN_NO_FIT = 1;
-       PAN_FAMILY_TEXT_DISPLAY = 2;
-       PAN_FAMILY_SCRIPT = 3;
-       PAN_FAMILY_DECORATIVE = 4;
-       PAN_FAMILY_PICTORIAL = 5;
-       PAN_SERIF_COVE = 2;
-       PAN_SERIF_OBTUSE_COVE = 3;
-       PAN_SERIF_SQUARE_COVE = 4;
-       PAN_SERIF_OBTUSE_SQUARE_COVE = 5;
-       PAN_SERIF_SQUARE = 6;
-       PAN_SERIF_THIN = 7;
-       PAN_SERIF_BONE = 8;
-       PAN_SERIF_EXAGGERATED = 9;
-       PAN_SERIF_TRIANGLE = 10;
-       PAN_SERIF_NORMAL_SANS = 11;
-       PAN_SERIF_OBTUSE_SANS = 12;
-       PAN_SERIF_PERP_SANS = 13;
-       PAN_SERIF_FLARED = 14;
-       PAN_SERIF_ROUNDED = 15;
-       PAN_WEIGHT_VERY_LIGHT = 2;
-       PAN_WEIGHT_LIGHT = 3;
-       PAN_WEIGHT_THIN = 4;
-       PAN_WEIGHT_BOOK = 5;
-       PAN_WEIGHT_MEDIUM = 6;
-       PAN_WEIGHT_DEMI = 7;
-       PAN_WEIGHT_BOLD = 8;
-       PAN_WEIGHT_HEAVY = 9;
-       PAN_WEIGHT_BLACK = 10;
-       PAN_WEIGHT_NORD = 11;
-       PAN_PROP_OLD_STYLE = 2;
-       PAN_PROP_MODERN = 3;
-       PAN_PROP_EVEN_WIDTH = 4;
-       PAN_PROP_EXPANDED = 5;
-       PAN_PROP_CONDENSED = 6;
-       PAN_PROP_VERY_EXPANDED = 7;
-       PAN_PROP_VERY_CONDENSED = 8;
-       PAN_PROP_MONOSPACED = 9;
-       PAN_CONTRAST_NONE = 2;
-       PAN_CONTRAST_VERY_LOW = 3;
-       PAN_CONTRAST_LOW = 4;
-       PAN_CONTRAST_MEDIUM_LOW = 5;
-       PAN_CONTRAST_MEDIUM = 6;
-       PAN_CONTRAST_MEDIUM_HIGH = 7;
-       PAN_CONTRAST_HIGH = 8;
-       PAN_CONTRAST_VERY_HIGH = 9;
-       PAN_STROKE_GRADUAL_DIAG = 2;
-       PAN_STROKE_GRADUAL_TRAN = 3;
-       PAN_STROKE_GRADUAL_VERT = 4;
-       PAN_STROKE_GRADUAL_HORZ = 5;
-       PAN_STROKE_RAPID_VERT = 6;
-       PAN_STROKE_RAPID_HORZ = 7;
-       PAN_STROKE_INSTANT_VERT = 8;
-       PAN_STRAIGHT_ARMS_HORZ = 2;
-       PAN_STRAIGHT_ARMS_WEDGE = 3;
-       PAN_STRAIGHT_ARMS_VERT = 4;
-       PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5;
-       PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6;
-       PAN_BENT_ARMS_HORZ = 7;
-       PAN_BENT_ARMS_VERT = 9;
-       PAN_BENT_ARMS_WEDGE = 8;
-       PAN_BENT_ARMS_SINGLE_SERIF = 10;
-       PAN_BENT_ARMS_DOUBLE_SERIF = 11;
-       PAN_LETT_NORMAL_CONTACT = 2;
-       PAN_LETT_NORMAL_WEIGHTED = 3;
-       PAN_LETT_NORMAL_BOXED = 4;
-       PAN_LETT_NORMAL_FLATTENED = 5;
-       PAN_LETT_NORMAL_ROUNDED = 6;
-       PAN_LETT_NORMAL_OFF_CENTER = 7;
-       PAN_LETT_NORMAL_SQUARE = 8;
-       PAN_LETT_OBLIQUE_CONTACT = 9;
-       PAN_LETT_OBLIQUE_WEIGHTED = 10;
-       PAN_LETT_OBLIQUE_BOXED = 11;
-       PAN_LETT_OBLIQUE_FLATTENED = 12;
-       PAN_LETT_OBLIQUE_ROUNDED = 13;
-       PAN_LETT_OBLIQUE_OFF_CENTER = 14;
-       PAN_LETT_OBLIQUE_SQUARE = 15;
-       PAN_MIDLINE_STANDARD_TRIMMED = 2;
-       PAN_MIDLINE_STANDARD_POINTED = 3;
-       PAN_MIDLINE_STANDARD_SERIFED = 4;
-       PAN_MIDLINE_HIGH_TRIMMED = 5;
-       PAN_MIDLINE_HIGH_POINTED = 6;
-       PAN_MIDLINE_HIGH_SERIFED = 7;
-       PAN_MIDLINE_CONSTANT_TRIMMED = 8;
-       PAN_MIDLINE_CONSTANT_POINTED = 9;
-       PAN_MIDLINE_CONSTANT_SERIFED = 10;
-       PAN_MIDLINE_LOW_TRIMMED = 11;
-       PAN_MIDLINE_LOW_POINTED = 12;
-       PAN_MIDLINE_LOW_SERIFED = 13;
-       PAN_XHEIGHT_CONSTANT_SMALL = 2;
-       PAN_XHEIGHT_CONSTANT_STD = 3;
-       PAN_XHEIGHT_CONSTANT_LARGE = 4;
-       PAN_XHEIGHT_DUCKING_SMALL = 5;
-       PAN_XHEIGHT_DUCKING_STD = 6;
-    { PALETTENTRY structure }
-       PAN_XHEIGHT_DUCKING_LARGE = 7;
-       PC_EXPLICIT = 2;
-       PC_NOCOLLAPSE = 4;
-    { LOGBRUSH structure }
-       PC_RESERVED = 1;
-       BS_DIBPATTERN = 5;
-       BS_DIBPATTERN8X8 = 8;
-       BS_DIBPATTERNPT = 6;
-       BS_HATCHED = 2;
-       BS_HOLLOW = 1;
-       BS_NULL = 1;
-       BS_PATTERN = 3;
-       BS_PATTERN8X8 = 7;
-    { DEVMODE structure }
-       BS_SOLID = 0;
-       DM_ORIENTATION = $1;
-       DM_PAPERSIZE = $2;
-       DM_PAPERLENGTH = $4;
-       DM_PAPERWIDTH = $8;
-       DM_SCALE = $10;
-       DM_COPIES = $100;
-       DM_DEFAULTSOURCE = $200;
-       DM_PRINTQUALITY = $400;
-       DM_COLOR = $800;
-       DM_DUPLEX = $1000;
-       DM_YRESOLUTION = $2000;
-       DM_TTOPTION = $4000;
-       DM_COLLATE = $8000;
-       DM_FORMNAME = $10000;
-       DM_LOGPIXELS = $20000;
-//       DM_BITSPERPEL = $40000;
-//       DM_PELSWIDTH = $80000;
-//       DM_PELSHEIGHT = $100000;
-//       DM_DISPLAYFLAGS = $200000;
-//       DM_DISPLAYFREQUENCY = $400000;
-       DM_ICMMETHOD = $800000;
-       DM_ICMINTENT = $1000000;
-       DM_MEDIATYPE = $2000000;
-       DM_DITHERTYPE = $4000000;
-       DMORIENT_LANDSCAPE = 2;
-       DMORIENT_PORTRAIT = 1;
-       DMPAPER_LETTER = 1;
-       DMPAPER_LEGAL = 5;
-       DMPAPER_A4 = 9;
-       DMPAPER_CSHEET = 24;
-       DMPAPER_DSHEET = 25;
-       DMPAPER_ESHEET = 26;
-       DMPAPER_LETTERSMALL = 2;
-       DMPAPER_TABLOID = 3;
-       DMPAPER_LEDGER = 4;
-       DMPAPER_STATEMENT = 6;
-       DMPAPER_EXECUTIVE = 7;
-       DMPAPER_A3 = 8;
-       DMPAPER_A4SMALL = 10;
-       DMPAPER_A5 = 11;
-       DMPAPER_B4 = 12;
-       DMPAPER_B5 = 13;
-       DMPAPER_FOLIO = 14;
-       DMPAPER_QUARTO = 15;
-       DMPAPER_10X14 = 16;
-       DMPAPER_11X17 = 17;
-       DMPAPER_NOTE = 18;
-       DMPAPER_ENV_9 = 19;
-       DMPAPER_ENV_10 = 20;
-       DMPAPER_ENV_11 = 21;
-       DMPAPER_ENV_12 = 22;
-       DMPAPER_ENV_14 = 23;
-       DMPAPER_ENV_DL = 27;
-       DMPAPER_ENV_C5 = 28;
-       DMPAPER_ENV_C3 = 29;
-       DMPAPER_ENV_C4 = 30;
-       DMPAPER_ENV_C6 = 31;
-       DMPAPER_ENV_C65 = 32;
-       DMPAPER_ENV_B4 = 33;
-       DMPAPER_ENV_B5 = 34;
-       DMPAPER_ENV_B6 = 35;
-       DMPAPER_ENV_ITALY = 36;
-       DMPAPER_ENV_MONARCH = 37;
-       DMPAPER_ENV_PERSONAL = 38;
-       DMPAPER_FANFOLD_US = 39;
-       DMPAPER_FANFOLD_STD_GERMAN = 40;
-       DMPAPER_FANFOLD_LGL_GERMAN = 41;
-       DMRES_HIGH = -4;
-       DMRES_MEDIUM = -3;
-       DMRES_LOW = -2;
-       DMRES_DRAFT = -1;
-       DMCOLOR_COLOR = 2;
-       DMCOLOR_MONOCHROME = 1;
-       DMDUP_SIMPLEX = 1;
-       DMDUP_HORIZONTAL = 3;
-       DMDUP_VERTICAL = 2;
-       DMTT_BITMAP = 1;
-       DMTT_DOWNLOAD = 2;
-       DMTT_SUBDEV = 3;
-       DMCOLLATE_TRUE = 1;
-       DMCOLLATE_FALSE = 0;
-       DM_GRAYSCALE = 1;
-       DM_INTERLACED = 2;
-       DMICMMETHOD_NONE = 1;
-       DMICMMETHOD_SYSTEM = 2;
-       DMICMMETHOD_DRIVER = 3;
-       DMICMMETHOD_DEVICE = 4;
-       DMICMMETHOD_USER = 256;
-       DMICM_SATURATE = 1;
-       DMICM_CONTRAST = 2;
-       DMICM_COLORMETRIC = 3;
-       DMICM_USER = 256;
-       DMMEDIA_STANDARD = 1;
-       DMMEDIA_GLOSSY = 3;
-       DMMEDIA_TRANSPARENCY = 2;
-       DMMEDIA_USER = 256;
-       DMDITHER_NONE = 1;
-       DMDITHER_COARSE = 2;
-       DMDITHER_FINE = 3;
-       DMDITHER_LINEART = 4;
-       DMDITHER_GRAYSCALE = 10;
-    { RGNDATAHEADER structure }
-       DMDITHER_USER = 256;
-    { TTPOLYGONHEADER structure }
-       RDH_RECTANGLES = 1;
-    { TTPOLYCURVE structure }
-       TT_POLYGON_TYPE = 24;
-       TT_PRIM_LINE = 1;
-    { GCP_RESULTS structure }
-       TT_PRIM_QSPLINE = 2;
-       GCPCLASS_ARABIC = 2;
-       GCPCLASS_HEBREW = 2;
-       GCPCLASS_LATIN = 1;
-       GCPCLASS_LATINNUMBER = 5;
-       GCPCLASS_LOCALNUMBER = 4;
-       GCPCLASS_LATINNUMERICSEPARATOR = 7;
-       GCPCLASS_LATINNUMERICTERMINATOR = 6;
-       GCPCLASS_NEUTRAL = 3;
-       GCPCLASS_NUMERICSEPARATOR = 8;
-       GCPCLASS_PREBOUNDLTR = 128;
-       GCPCLASS_PREBOUNDRTL = 64;
-       GCPCLASS_POSTBOUNDLTR = 32;
-       GCPCLASS_POSTBOUNDRTL = 16;
-       GCPGLYPH_LINKBEFORE = 32768;
-    { RASTERIZER_STATUS structure }
-       GCPGLYPH_LINKAFTER = 16384;
-       TT_AVAILABLE = 1;
-    { COLORADJUSTMENT structure }
-       TT_ENABLED = 2;
-       CA_NEGATIVE = 1;
-       CA_LOG_FILTER = 2;
-       ILLUMINANT_DEVICE_DEFAULT = 0;
-       ILLUMINANT_A = 1;
-       ILLUMINANT_B = 2;
-       ILLUMINANT_C = 3;
-       ILLUMINANT_D50 = 4;
-       ILLUMINANT_D55 = 5;
-       ILLUMINANT_D65 = 6;
-       ILLUMINANT_D75 = 7;
-       ILLUMINANT_F2 = 8;
-       ILLUMINANT_TUNGSTEN = 1;
-       ILLUMINANT_DAYLIGHT = 3;
-       ILLUMINANT_FLUORESCENT = 8;
-    { DOCINFO structure }
-       ILLUMINANT_NTSC = 3;
-    { EMRMETAHEADER structure }
-       DI_APPBANDING = 1;
-       EMR_HEADER = 1;
-    { RTF event masks }
-       ENHMETA_SIGNATURE = 1179469088;
-       ENM_CHANGE = 1;
-       ENM_CORRECTTEXT = 4194304;
-       ENM_DROPFILES = 1048576;
-       ENM_KEYEVENTS = 65536;
-       ENM_MOUSEEVENTS = 131072;
-       ENM_PROTECTED = 2097152;
-       ENM_REQUESTRESIZE = 262144;
-       ENM_SCROLL = 4;
-       ENM_SELCHANGE = 524288;
-       ENM_UPDATE = 2;
-    { RTF styles }
-       ENM_NONE = 0;
-       ES_DISABLENOSCROLL = 8192;
-       ES_EX_NOCALLOLEINIT = 16777216;
-       ES_NOIME = 524288;
-       ES_SAVESEL = 32768;
-       ES_SELFIME = 262144;
-       ES_SUNKEN = 16384;
-       ES_VERTICAL = 4194304;
-    { EM_SETOPTIONS message }
-       ES_SELECTIONBAR = 16777216;
-       ECOOP_SET = 1;
-       ECOOP_OR = 2;
-       ECOOP_AND = 3;
-       ECOOP_XOR = 4;
-       ECO_AUTOWORDSELECTION = 1;
-       ECO_AUTOVSCROLL = 64;
-       ECO_AUTOHSCROLL = 128;
-       ECO_NOHIDESEL = 256;
-       ECO_READONLY = 2048;
-       ECO_WANTRETURN = 4096;
-       ECO_SAVESEL = 32768;
-       ECO_SELECTIONBAR = 16777216;
-    { EM_SETCHARFORMAT message }
-       ECO_VERTICAL = 4194304;
-       SCF_WORD = 2;
-    { EM_STREAMOUT message }
-       SCF_SELECTION = 1;
-       SF_TEXT = 1;
-       SF_RTF = 2;
-       SF_RTFNOOBJS = 3;
-       SF_TEXTIZED = 4;
-       SFF_SELECTION = 32768;
-    { EM_FINDWORDBREAK message }
-       SFF_PLAINRTF = 16384;
-       WB_CLASSIFY = 3;
-//       WB_ISDELIMITER = 2;
-//       WB_LEFT = 0;
-       WB_LEFTBREAK = 6;
-       WB_PREVBREAK = 6;
-       WB_MOVEWORDLEFT = 4;
-       WB_MOVEWORDPREV = 4;
-       WB_MOVEWORDRIGHT = 5;
-       WB_MOVEWORDNEXT = 5;
-//       WB_RIGHT = 1;
-       WB_RIGHTBREAK = 7;
-    { EM_GETPUNCTUATION message }
-       WB_NEXTBREAK = 7;
-       PC_LEADING = 2;
-       PC_FOLLOWING = 1;
-       PC_DELIMITER = 4;
-    { EM_SETWORDWRAPMODE message }
-       PC_OVERFLOW = 3;
-       WBF_WORDWRAP = 16;
-       WBF_WORDBREAK = 32;
-       WBF_OVERFLOW = 64;
-       WBF_LEVEL1 = 128;
-       WBF_LEVEL2 = 256;
-       WBF_CUSTOM = 512;
-       WBF_BREAKAFTER = 64;
-       WBF_BREAKLINE = 32;
-    { CHARFORMAT structure }
-       WBF_ISWHITE = 16;
-       CFM_BOLD = 1;
-       CFM_COLOR = 1073741824;
-       CFM_FACE = 536870912;
-       CFM_ITALIC = 2;
-       CFM_OFFSET = 268435456;
-       CFM_PROTECTED = 16;
-       CFM_SIZE = $80000000;
-       CFM_STRIKEOUT = 8;
-       CFM_UNDERLINE = 4;
-       CFE_AUTOCOLOR = 1073741824;
-       CFE_BOLD = 1;
-       CFE_ITALIC = 2;
-       CFE_STRIKEOUT = 8;
-       CFE_UNDERLINE = 4;
-    { PARAFORMAT structure }
-       CFE_PROTECTED = 16;
-       PFM_ALIGNMENT = 8;
-       PFM_NUMBERING = 32;
-       PFM_OFFSET = 4;
-       PFM_OFFSETINDENT = $80000000;
-       PFM_RIGHTINDENT = 2;
-       PFM_STARTINDENT = 1;
-       PFM_TABSTOPS = 16;
-       PFN_BULLET = 1;
-       PFA_LEFT = 1;
-       PFA_RIGHT = 2;
-    { SELCHANGE structure }
-       PFA_CENTER = 3;
-       SEL_EMPTY = 0;
-       SEL_TEXT = 1;
-       SEL_OBJECT = 2;
-       SEL_MULTICHAR = 4;
-    { RTF clipboard formats }
-       SEL_MULTIOBJECT = 8;
-       CF_RTF = 'Rich Text Format';
-    { DRAWITEMSTRUCT structure }
-       CF_RETEXTOBJ = 'RichEdit Text and Objects';
-       ODT_BUTTON = 4;
-       ODT_COMBOBOX = 3;
-       ODT_LISTBOX = 2;
-       ODT_LISTVIEW = 102;
-       ODT_MENU = 1;
-       ODT_STATIC = 5;
-       ODT_TAB = 101;
-       ODT_HEADER = 100;
-       ODA_DRAWENTIRE = 1;
-       ODA_FOCUS = 4;
-       ODA_SELECT = 2;
-       ODS_CHECKED = 8;
-       ODS_COMBOBOXEDIT = 4096;
-       ODS_DEFAULT = 32;
-       ODS_DISABLED = 4;
-       ODS_FOCUS = 16;
-       ODS_GRAYED = 2;
-    { Common control styles }
-       ODS_SELECTED = 1;
-       CCS_ADJUSTABLE = $20;
-       CCS_BOTTOM = $3;
-       CCS_NODIVIDER = $40;
-       CCS_NOMOVEY = $2;
-       CCS_NOPARENTALIGN = $8;
-       CCS_NORESIZE = $4;
-    { Header control styles }
-       CCS_TOP = $1;
-       HDS_BUTTONS = 2;
-       HDS_HIDDEN = 8;
-    { HD_ITEM structure }
-       HDS_HORZ = 0;
-       HDI_BITMAP = 16;
-       HDI_FORMAT = 4;
-       HDI_HEIGHT = 1;
-       HDI_LPARAM = 8;
-       HDI_TEXT = 2;
-       HDI_WIDTH = 1;
-       HDF_CENTER = 2;
-       HDF_LEFT = 0;
-       HDF_RIGHT = 1;
-       HDF_RTLREADING = 4;
-       HDF_BITMAP = 8192;
-       HDF_OWNERDRAW = 32768;
-       HDF_STRING = 16384;
-    { HD_HITTESTINFO structure }
-       HDF_JUSTIFYMASK = 3;
-       HHT_NOWHERE = 1;
-       HHT_ONDIVIDER = 4;
-       HHT_ONDIVOPEN = 8;
-       HHT_ONHEADER = 2;
-       HHT_TOLEFT = 2048;
-    { TBADDBITMAP structure }
-       HHT_TORIGHT = 1024;
-       IDB_STD_LARGE_COLOR = 1;
-       IDB_STD_SMALL_COLOR = 0;
-       IDB_VIEW_LARGE_COLOR = 5;
-       IDB_VIEW_SMALL_COLOR = 4;
-       STD_COPY = 1;
-       STD_CUT = 0;
-       STD_DELETE = 5;
-       STD_FILENEW = 6;
-       STD_FILEOPEN = 7;
-       STD_FILESAVE = 8;
-       STD_FIND = 12;
-       STD_HELP = 11;
-       STD_PASTE = 2;
-       STD_PRINT = 14;
-       STD_PRINTPRE = 9;
-       STD_PROPERTIES = 10;
-       STD_REDOW = 4;
-       STD_REPLACE = 13;
-       STD_UNDO = 3;
-       VIEW_LARGEICONS = 0;
-       VIEW_SMALLICONS = 1;
-       VIEW_LIST = 2;
-       VIEW_DETAILS = 3;
-       VIEW_SORTNAME = 4;
-       VIEW_SORTSIZE = 5;
-       VIEW_SORTDATE = 6;
-    { Toolbar styles }
-       VIEW_SORTTYPE = 7;
-       TBSTYLE_ALTDRAG = 1024;
-       TBSTYLE_TOOLTIPS = 256;
-       TBSTYLE_WRAPABLE = 512;
-       TBSTYLE_BUTTON = 0;
-       TBSTYLE_CHECK = 2;
-       TBSTYLE_CHECKGROUP = 6;
-       TBSTYLE_GROUP = 4;
-    { Toolbar states }
-       TBSTYLE_SEP = 1;
-       TBSTATE_CHECKED = 1;
-       TBSTATE_ENABLED = 4;
-       TBSTATE_HIDDEN = 8;
-       TBSTATE_INDETERMINATE = 16;
-       TBSTATE_PRESSED = 2;
-    { Tooltip styles }
-       TBSTATE_WRAP = 32;
-       TTS_ALWAYSTIP = 1;
-    { TOOLINFO structure }
-       TTS_NOPREFIX = 2;
-       TTF_IDISHWND = 1;
-       TTF_CENTERTIP = 2;
-       TTF_RTLREADING = 4;
-    { TTM_SETDELAYTIME message }
-       TTF_SUBCLASS = 16;
-       TTDT_AUTOMATIC = 0;
-       TTDT_AUTOPOP = 2;
-       TTDT_INITIAL = 3;
-    { Status window }
-       TTDT_RESHOW = 1;
-       SBARS_SIZEGRIP = 256;
-    { DL_DRAGGING message }
-//       SBARS_SIZEGRIP = 256;
-       DL_MOVECURSOR = 3;
-       DL_COPYCURSOR = 2;
-    { Up-down control styles }
-       DL_STOPCURSOR = 1;
-       UDS_ALIGNLEFT = 8;
-       UDS_ALIGNRIGHT = 4;
-       UDS_ARROWKEYS = 32;
-       UDS_AUTOBUDDY = 16;
-       UDS_HORZ = 64;
-       UDS_NOTHOUSANDS = 128;
-       UDS_SETBUDDYINT = 2;
-    { UDM_SETRANGE message }
-       UDS_WRAP = 1;
-       UD_MAXVAL = 32767;
-    { HKM_GETHOTKEY message }
-       UD_MINVAL = -32767;
-       HOTKEYF_ALT = 4;
-       HOTKEYF_CONTROL = 2;
-       HOTKEYF_EXT = 8;
-    { HKM_SETRULES message }
-       HOTKEYF_SHIFT = 1;
-       HKCOMB_A = 8;
-       HKCOMB_C = 4;
-       HKCOMB_CA = 64;
-       HKCOMB_NONE = 1;
-       HKCOMB_S = 2;
-       HKCOMB_SA = 32;
-       HKCOMB_SC = 16;
-    { Trackbar styles }
-       HKCOMB_SCA = 128;
-       TBS_HORZ = 0;
-       TBS_VERT = 2;
-       TBS_AUTOTICKS = 1;
-       TBS_NOTICKS = 16;
-       TBS_TOP = 4;
-       TBS_BOTTOM = 0;
-       TBS_LEFT = 4;
-       TBS_RIGHT = 0;
-       TBS_BOTH = 8;
-       TBS_ENABLESELRANGE = 32;
-       TBS_FIXEDLENGTH = 64;
-       TBS_NOTHUMB = 128;
-       TB_BOTTOM = 7;
-       TB_ENDTRACK = 8;
-       TB_LINEDOWN = 1;
-       TB_LINEUP = 0;
-       TB_PAGEDOWN = 3;
-       TB_PAGEUP = 2;
-       TB_THUMBPOSITION = 4;
-       TB_THUMBTRACK = 5;
-    { List view styles }
-       TB_TOP = 6;
-       LVS_ALIGNLEFT = 2048;
-       LVS_ALIGNTOP = 0;
-       LVS_AUTOARRANGE = 256;
-       LVS_EDITLABELS = 512;
-       LVS_ICON = 0;
-       LVS_LIST = 3;
-       LVS_NOCOLUMNHEADER = 16384;
-       LVS_NOLABELWRAP = 128;
-       LVS_NOSCROLL = 8192;
-       LVS_NOSORTHEADER = 32768;
-       LVS_OWNERDRAWFIXED = 1024;
-       LVS_REPORT = 1;
-       LVS_SHAREIMAGELISTS = 64;
-       LVS_SHOWSELALWAYS = 8;
-       LVS_SINGLESEL = 4;
-       LVS_SMALLICON = 2;
-       LVS_SORTASCENDING = 16;
-       LVS_SORTDESCENDING = 32;
-       LVS_TYPESTYLEMASK = 64512;
-       LVSIL_NORMAL = 0;
-       LVSIL_SMALL = 1;
-       LVSIL_STATE = 2;
-       LVIS_CUT = 4;
-       LVIS_DROPHILITED = 8;
-       LVIS_FOCUSED = 1;
-       LVIS_SELECTED = 2;
-       LVIS_OVERLAYMASK = 3840;
-    { LV_ITEM structure }
-       LVIS_STATEIMAGEMASK = 61440;
-       LVIF_TEXT = 1;
-       LVIF_IMAGE = 2;
-       LVIF_PARAM = 4;
-       LVIF_STATE = 8;
-    { LVM_GETNEXTITEM structure }
-       LVIF_DI_SETITEM = 4096;
-       LVNI_ABOVE = 256;
-       LVNI_ALL = 0;
-       LVNI_BELOW = 512;
-       LVNI_TOLEFT = 1024;
-       LVNI_TORIGHT = 2048;
-       LVNI_CUT = 4;
-       LVNI_DROPHILITED = 8;
-       LVNI_FOCUSED = 1;
-    { LV_FINDINFO structure }
-       LVNI_SELECTED = 2;
-       LVFI_PARAM = 1;
-       LVFI_PARTIAL = 8;
-       LVFI_STRING = 2;
-       LVFI_WRAP = 32;
-    { LV_HITTESTINFO structure }
-       LVFI_NEARESTXY = 64;
-       LVHT_ABOVE = 8;
-       LVHT_BELOW = 16;
-       LVHT_NOWHERE = 1;
-       LVHT_ONITEMICON = 2;
-       LVHT_ONITEMLABEL = 4;
-       LVHT_ONITEMSTATEICON = 8;
-       LVHT_TOLEFT = 64;
-    { LV_COLUMN structure }
-       LVHT_TORIGHT = 32;
-       LVCF_FMT = 1;
-       LVCF_SUBITEM = 8;
-       LVCF_TEXT = 4;
-       LVCF_WIDTH = 2;
-       LVCFMT_CENTER = 2;
-       LVCFMT_LEFT = 0;
-    { ListView_GetItemRect }
-       LVCFMT_RIGHT = 1;
-       LVIR_BOUNDS = 0;
-       LVIR_ICON = 1;
-       LVIR_LABEL = 2;
-    { LVM_ARRANGE message }
-       LVIR_SELECTBOUNDS = 3;
-       LVA_ALIGNLEFT = 1;
-       LVA_ALIGNTOP = 2;
-       LVA_DEFAULT = 0;
-    { LVM_SETCOLUMNWIDTH message }
-       LVA_SNAPTOGRID = 5;
-       LVSCW_AUTOSIZE = -1;
-    { Tree View styles }
-       LVSCW_AUTOSIZE_USEHEADER = -2;
-       TVS_DISABLEDRAGDROP = 16;
-       TVS_EDITLABELS = 8;
-       TVS_HASBUTTONS = 1;
-       TVS_HASLINES = 2;
-       TVS_LINESATROOT = 4;
-    { Tree View states }
-       TVS_SHOWSELALWAYS = 32;
-       TVIS_BOLD = 16;
-       TVIS_CUT = 4;
-       TVIS_DROPHILITED = 8;
-       TVIS_EXPANDED = 32;
-       TVIS_EXPANDEDONCE = 64;
-       TVIS_FOCUSED = 1;
-       TVIS_OVERLAYMASK = 3840;
-       TVIS_SELECTED = 2;
-       TVIS_STATEIMAGEMASK = 61440;
-    { TV_ITEM structure }
-       TVIS_USERMASK = 61440;
-       TVIF_CHILDREN = 64;
-       TVIF_HANDLE = 16;
-       TVIF_IMAGE = 2;
-       TVIF_PARAM = 4;
-       TVIF_SELECTEDIMAGE = 32;
-       TVIF_STATE = 8;
-       TVIF_TEXT = 1;
-       I_CHILDRENCALLBACK = -1;
-    { TV_HITTESTINFO structure }
-       I_IMAGECALLBACK = -1;
-       TVHT_ABOVE = 256;
-       TVHT_BELOW = 512;
-       TVHT_NOWHERE = 1;
-       TVHT_ONITEM = 70;
-       TVHT_ONITEMBUTTON = 16;
-       TVHT_ONITEMICON = 2;
-       TVHT_ONITEMINDENT = 8;
-       TVHT_ONITEMLABEL = 4;
-       TVHT_ONITEMRIGHT = 32;
-       TVHT_ONITEMSTATEICON = 64;
-       TVHT_TOLEFT = 2048;
-    { TVM_EXPAND message }
-       TVHT_TORIGHT = 1024;
-       TVE_COLLAPSE = 1;
-       TVE_COLLAPSERESET = 32768;
-       TVE_EXPAND = 2;
-    { TVM_GETIMAGELIST message }
-       TVE_TOGGLE = 3;
-       TVSIL_NORMAL = 0;
-    { TVM_GETNEXTITEM message }
-       TVSIL_STATE = 2;
-       TVGN_CARET = 9;
-       TVGN_CHILD = 4;
-       TVGN_DROPHILITE = 8;
-       TVGN_FIRSTVISIBLE = 5;
-       TVGN_NEXT = 1;
-       TVGN_NEXTVISIBLE = 6;
-       TVGN_PARENT = 3;
-       TVGN_PREVIOUS = 2;
-       TVGN_PREVIOUSVISIBLE = 7;
-    { TVN_SELCHANGED message }
-       TVGN_ROOT = 0;
-       TVC_BYKEYBOARD = 2;
-       TVC_BYMOUSE = 1;
-    { Tab control styles }
-       TVC_UNKNOWN = 0;
-       TCS_BUTTONS = 256;
-       TCS_FIXEDWIDTH = 1024;
-       TCS_FOCUSNEVER = 32768;
-       TCS_FOCUSONBUTTONDOWN = 4096;
-       TCS_FORCEICONLEFT = 16;
-       TCS_FORCELABELLEFT = 32;
-       TCS_MULTILINE = 512;
-       TCS_OWNERDRAWFIXED = 8192;
-       TCS_RAGGEDRIGHT = 2048;
-       TCS_RIGHTJUSTIFY = 0;
-       TCS_SINGLELINE = 0;
-       TCS_TABS = 0;
-    { TC_ITEM structure }
-       TCS_TOOLTIPS = 16384;
-       TCIF_TEXT = 1;
-       TCIF_IMAGE = 2;
-       TCIF_PARAM = 8;
-    { TC_HITTESTINFO structure }
-       TCIF_RTLREADING = 4;
-       TCHT_NOWHERE = 1;
-       TCHT_ONITEM = 6;
-       TCHT_ONITEMICON = 2;
-    { Animation control styles }
-       TCHT_ONITEMLABEL = 4;
-       ACS_AUTOPLAY = 4;
-       ACS_CENTER = 1;
-    { MODEMDEVCAPS structure }
-       ACS_TRANSPARENT = 2;
-       DIALOPTION_BILLING = 64;
-       DIALOPTION_QUIET = 128;
-       DIALOPTION_DIALTONE = 256;
-       MDMVOLFLAG_LOW = 1;
-       MDMVOLFLAG_MEDIUM = 2;
-       MDMVOLFLAG_HIGH = 4;
-       MDMVOL_LOW = 0;
-       MDMVOL_MEDIUM = 1;
-       MDMVOL_HIGH = 2;
-       MDMSPKRFLAG_OFF = 1;
-       MDMSPKRFLAG_DIAL = 2;
-       MDMSPKRFLAG_ON = 4;
-       MDMSPKRFLAG_CALLSETUP = 8;
-       MDMSPKR_OFF = 0;
-       MDMSPKR_DIAL = 1;
-       MDMSPKR_ON = 2;
-       MDMSPKR_CALLSETUP = 3;
-       MDM_BLIND_DIAL = 512;
-       MDM_CCITT_OVERRIDE = 64;
-       MDM_CELLULAR = 8;
-       MDM_COMPRESSION = 1;
-       MDM_ERROR_CONTROL = 2;
-       MDM_FLOWCONTROL_HARD = 16;
-       MDM_FLOWCONTROL_SOFT = 32;
-       MDM_FORCED_EC = 4;
-       MDM_SPEED_ADJUST = 128;
-       MDM_TONE_DIAL = 256;
-    { Languages }
-       MDM_V23_OVERRIDE = 1024;
-       LANG_BULGARIAN = 2;
-       LANG_CHINESE = 4;
-       LANG_CROATIAN = 26;
-       LANG_CZECH = 5;
-       LANG_DANISH = 6;
-       LANG_DUTCH = 19;
-       LANG_ENGLISH = 9;
-       LANG_FINNISH = 11;
-       LANG_FRENCH = 12;
-       LANG_GERMAN = 7;
-       LANG_GREEK = 8;
-       LANG_HUNGARIAN = 14;
-       LANG_ICELANDIC = 15;
-       LANG_ITALIAN = 16;
-       LANG_JAPANESE = 17;
-       LANG_KOREAN = 18;
-       LANG_NEUTRAL = 0;
-       LANG_NORWEGIAN = 20;
-       LANG_POLISH = 21;
-       LANG_PORTUGUESE = 22;
-       LANG_ROMANIAN = 24;
-       LANG_RUSSIAN = 25;
-       LANG_SLOVAK = 27;
-       LANG_SLOVENIAN = 36;
-       LANG_SPANISH = 10;
-       LANG_SWEDISH = 29;
-       LANG_TURKISH = 31;
-       SUBLANG_CHINESE_SIMPLIFIED = 2;
-       SUBLANG_CHINESE_TRADITIONAL = 1;
-       SUBLANG_CHINESE_HONGKONG = 3;
-       SUBLANG_CHINESE_SINGAPORE = 4;
-       SUBLANG_DEFAULT = 1;
-       SUBLANG_DUTCH = 1;
-       SUBLANG_DUTCH_BELGIAN = 2;
-       SUBLANG_ENGLISH_AUS = 3;
-       SUBLANG_ENGLISH_CAN = 4;
-       SUBLANG_ENGLISH_EIRE = 6;
-       SUBLANG_ENGLISH_NZ = 5;
-       SUBLANG_ENGLISH_UK = 2;
-       SUBLANG_ENGLISH_US = 1;
-       SUBLANG_FRENCH = 1;
-       SUBLANG_FRENCH_BELGIAN = 2;
-       SUBLANG_FRENCH_CANADIAN = 3;
-       SUBLANG_FRENCH_SWISS = 4;
-       SUBLANG_GERMAN = 1;
-       SUBLANG_GERMAN_AUSTRIAN = 3;
-       SUBLANG_GERMAN_SWISS = 2;
-       SUBLANG_ITALIAN = 1;
-       SUBLANG_ITALIAN_SWISS = 2;
-       SUBLANG_NEUTRAL = 0;
-       SUBLANG_NORWEGIAN_BOKMAL = 1;
-       SUBLANG_NORWEGIAN_NYNORSK = 2;
-       SUBLANG_PORTUGUESE = 2;
-       SUBLANG_PORTUGUESE_BRAZILIAN = 1;
-       SUBLANG_SPANISH = 1;
-       SUBLANG_SPANISH_MEXICAN = 2;
-       SUBLANG_SPANISH_MODERN = 3;
-       SUBLANG_SYS_DEFAULT = 2;
-       NLS_VALID_LOCALE_MASK = 1048575;
-       SORT_DEFAULT = 0;
-       SORT_JAPANESE_XJIS = 0;
-       SORT_JAPANESE_UNICODE = 1;
-       SORT_CHINESE_BIG5 = 0;
-       SORT_CHINESE_UNICODE = 1;
-       SORT_KOREAN_KSC = 0;
-    { SYSTEM_INFO structure }
-       SORT_KOREAN_UNICODE = 1;
-       PROCESSOR_INTEL_386 = 386;
-       PROCESSOR_INTEL_486 = 486;
-       PROCESSOR_INTEL_PENTIUM = 586;
-       PROCESSOR_MIPS_R4000 = 4000;
-    { FSCTL_SET_COMPRESSION }
-       PROCESSOR_ALPHA_21064 = 21064;
-       COMPRESSION_FORMAT_NONE = 0;
-       COMPRESSION_FORMAT_DEFAULT = 1;
-    { TAPE_GET_DRIVE_PARAMETERS structure }
-       COMPRESSION_FORMAT_LZNT1 = 2;
-       TAPE_DRIVE_COMPRESSION = 131072;
-       TAPE_DRIVE_ECC = 65536;
-       TAPE_DRIVE_ERASE_BOP_ONLY = 64;
-       TAPE_DRIVE_ERASE_LONG = 32;
-       TAPE_DRIVE_ERASE_IMMEDIATE = 128;
-       TAPE_DRIVE_ERASE_SHORT = 16;
-       TAPE_DRIVE_FIXED = 1;
-       TAPE_DRIVE_FIXED_BLOCK = 1024;
-       TAPE_DRIVE_INITIATOR = 4;
-       TAPE_DRIVE_PADDING = 262144;
-       TAPE_DRIVE_GET_ABSOLUTE_BLK = 1048576;
-       TAPE_DRIVE_GET_LOGICAL_BLK = 2097152;
-       TAPE_DRIVE_REPORT_SMKS = 524288;
-       TAPE_DRIVE_SELECT = 2;
-       TAPE_DRIVE_SET_EOT_WZ_SIZE = 4194304;
-       TAPE_DRIVE_TAPE_CAPACITY = 256;
-       TAPE_DRIVE_TAPE_REMAINING = 512;
-       TAPE_DRIVE_VARIABLE_BLOCK = 2048;
-       TAPE_DRIVE_WRITE_PROTECT = 4096;
-       TAPE_DRIVE_ABS_BLK_IMMED = -2147475456;
-       TAPE_DRIVE_ABSOLUTE_BLK = -2147479552;
-       TAPE_DRIVE_END_OF_DATA = -2147418112;
-       TAPE_DRIVE_FILEMARKS = -2147221504;
-       TAPE_DRIVE_LOAD_UNLOAD = -2147483647;
-       TAPE_DRIVE_LOAD_UNLD_IMMED = -2147483616;
-       TAPE_DRIVE_LOCK_UNLOCK = -2147483644;
-       TAPE_DRIVE_LOCK_UNLK_IMMED = -2147483520;
-       TAPE_DRIVE_LOG_BLK_IMMED = -2147450880;
-       TAPE_DRIVE_LOGICAL_BLK = -2147467264;
-       TAPE_DRIVE_RELATIVE_BLKS = -2147352576;
-       TAPE_DRIVE_REVERSE_POSITION = -2143289344;
-       TAPE_DRIVE_REWIND_IMMEDIATE = -2147483640;
-       TAPE_DRIVE_SEQUENTIAL_FMKS = -2146959360;
-       TAPE_DRIVE_SEQUENTIAL_SMKS = -2145386496;
-       TAPE_DRIVE_SET_BLOCK_SIZE = -2147483632;
-       TAPE_DRIVE_SET_COMPRESSION = -2147483136;
-       TAPE_DRIVE_SET_ECC = -2147483392;
-       TAPE_DRIVE_SET_PADDING = -2147482624;
-       TAPE_DRIVE_SET_REPORT_SMKS = -2147481600;
-       TAPE_DRIVE_SETMARKS = -2146435072;
-       TAPE_DRIVE_SPACE_IMMEDIATE = -2139095040;
-       TAPE_DRIVE_TENSION = -2147483646;
-       TAPE_DRIVE_TENSION_IMMED = -2147483584;
-       TAPE_DRIVE_WRITE_FILEMARKS = -2113929216;
-       TAPE_DRIVE_WRITE_LONG_FMKS = -2013265920;
-       TAPE_DRIVE_WRITE_MARK_IMMED = -1879048192;
-       TAPE_DRIVE_WRITE_SETMARKS = -2130706432;
-    { Standard rights }
-       TAPE_DRIVE_WRITE_SHORT_FMKS = -2080374784;
-       STANDARD_RIGHTS_REQUIRED = $f0000;
-       STANDARD_RIGHTS_WRITE = $20000;
-       STANDARD_RIGHTS_READ = $20000;
-       STANDARD_RIGHTS_EXECUTE = $20000;
-       STANDARD_RIGHTS_ALL = $1f0000;
-    { ACCESS_MASK }
-       SPECIFIC_RIGHTS_ALL = $ffff;
-       MAXIMUM_ALLOWED = $2000000;
-    { SID }
-       GENERIC_ALL = $10000000;
-       SECURITY_NULL_RID = 0;
-       SECURITY_WORLD_RID = 0;
-       SECURITY_LOCAL_RID = 0;
-       SECURITY_CREATOR_OWNER_RID = 0;
-       SECURITY_CREATOR_GROUP_RID = $1;
-       SECURITY_DIALUP_RID = $1;
-       SECURITY_NETWORK_RID = $2;
-       SECURITY_BATCH_RID = $3;
-       SECURITY_INTERACTIVE_RID = $4;
-       SECURITY_LOGON_IDS_RID = $5;
-       SECURITY_LOGON_IDS_RID_COUNT = $3;
-       SECURITY_SERVICE_RID = $6;
-       SECURITY_LOCAL_SYSTEM_RID = $12;
-       SECURITY_BUILTIN_DOMAIN_RID = $20;
-       DOMAIN_USER_RID_ADMIN = $1f4;
-       DOMAIN_USER_RID_GUEST = $1f5;
-       DOMAIN_GROUP_RID_ADMINS = $200;
-       DOMAIN_GROUP_RID_USERS = $201;
-       DOMAIN_ALIAS_RID_ADMINS = $220;
-       DOMAIN_ALIAS_RID_USERS = $221;
-       DOMAIN_ALIAS_RID_GUESTS = $222;
-       DOMAIN_ALIAS_RID_POWER_USERS = $223;
-       DOMAIN_ALIAS_RID_ACCOUNT_OPS = $224;
-       DOMAIN_ALIAS_RID_SYSTEM_OPS = $225;
-       DOMAIN_ALIAS_RID_PRINT_OPS = $226;
-       DOMAIN_ALIAS_RID_BACKUP_OPS = $227;
-    { TOKEN_GROUPS structure }
-       DOMAIN_ALIAS_RID_REPLICATOR = $228;
-       SE_GROUP_MANDATORY = $1;
-       SE_GROUP_ENABLED_BY_DEFAULT = $2;
-       SE_GROUP_ENABLED = $4;
-       SE_GROUP_OWNER = $8;
-    { SECURITY_DESCRIPTOR_CONTROL }
-       SE_GROUP_LOGON_ID = $c0000000;
-//       SECURITY_DESCRIPTOR_REVISION = 1;
-       SECURITY_DESCRIPTOR_MIN_LENGTH = 20;
-       SE_OWNER_DEFAULTED = 1;
-       SE_GROUP_DEFAULTED = 2;
-       SE_DACL_PRESENT = 4;
-       SE_DACL_DEFAULTED = 8;
-       SE_SACL_PRESENT = 16;
-       SE_SACL_DEFAULTED = 32;
-    { PRIVILEGE_SET }
-       SE_SELF_RELATIVE = 32768;
-       SE_PRIVILEGE_ENABLED_BY_DEFAULT = $1;
-       SE_PRIVILEGE_ENABLED = $2;
-       SE_PRIVILEGE_USED_FOR_ACCESS = $80000000;
-       PRIVILEGE_SET_ALL_NECESSARY = $1;
-    { OPENFILENAME structure }
-       OFN_ALLOWMULTISELECT = $200;
-       OFN_CREATEPROMPT = $2000;
-       OFN_ENABLEHOOK = $20;
-       OFN_ENABLETEMPLATE = $40;
-       OFN_ENABLETEMPLATEHANDLE = $80;
-       OFN_EXPLORER = $80000;
-       OFN_EXTENSIONDIFFERENT = $400;
-       OFN_FILEMUSTEXIST = $1000;
-       OFN_HIDEREADONLY = $4;
-       OFN_LONGNAMES = $200000;
-       OFN_NOCHANGEDIR = $8;
-       OFN_NODEREFERENCELINKS = $100000;
-       OFN_NOLONGNAMES = $40000;
-       OFN_NONETWORKBUTTON = $20000;
-       OFN_NOREADONLYRETURN = $8000;
-       OFN_NOTESTFILECREATE = $10000;
-       OFN_NOVALIDATE = $100;
-       OFN_OVERWRITEPROMPT = $2;
-       OFN_PATHMUSTEXIST = $800;
-       OFN_READONLY = $1;
-       OFN_SHAREAWARE = $4000;
-    { SHAREVISTRING message }
-       OFN_SHOWHELP = $10;
-       OFN_SHAREFALLTHROUGH = $2;
-       OFN_SHARENOWARN = $1;
-    { Open/Save notifications }
-       OFN_SHAREWARN = 0;
-       CDN_INITDONE = $fffffda7;
-       CDN_SELCHANGE = $fffffda6;
-       CDN_FOLDERCHANGE = $fffffda5;
-       CDN_SHAREVIOLATION = $fffffda4;
-       CDN_HELP = $fffffda3;
-       CDN_FILEOK = $fffffda2;
-    { Open/Save messages }
-       CDN_TYPECHANGE = $fffffda1;
-       CDM_GETFILEPATH = $465;
-       CDM_GETFOLDERIDLIST = $467;
-       CDM_GETFOLDERPATH = $466;
-       CDM_GETSPEC = $464;
-       CDM_HIDECONTROL = $469;
-       CDM_SETCONTROLTEXT = $468;
-    { CHOOSECOLOR structure }
-       CDM_SETDEFEXT = $46a;
-       CC_ENABLEHOOK = $10;
-       CC_ENABLETEMPLATE = $20;
-       CC_ENABLETEMPLATEHANDLE = $40;
-       CC_FULLOPEN = $2;
-       CC_PREVENTFULLOPEN = $4;
-       CC_RGBINIT = $1;
-       CC_SHOWHELP = $8;
-    { FINDREPLACE structure }
-       CC_SOLIDCOLOR = $80;
-       FR_DIALOGTERM = $40;
-       FR_DOWN = $1;
-       FR_ENABLEHOOK = $100;
-       FR_ENABLETEMPLATE = $200;
-       FR_ENABLETEMPLATEHANDLE = $2000;
-       FR_FINDNEXT = $8;
-       FR_HIDEUPDOWN = $4000;
-       FR_HIDEMATCHCASE = $8000;
-       FR_HIDEWHOLEWORD = $10000;
-       FR_MATCHCASE = $4;
-       FR_NOMATCHCASE = $800;
-       FR_NOUPDOWN = $400;
-       FR_NOWHOLEWORD = $1000;
-       FR_REPLACE = $10;
-       FR_REPLACEALL = $20;
-       FR_SHOWHELP = $80;
-    { CHOOSEFONT structure }
-       FR_WHOLEWORD = $2;
-       CF_APPLY = $200;
-       CF_ANSIONLY = $400;
-       CF_BOTH = $3;
-       CF_TTONLY = $40000;
-       CF_EFFECTS = $100;
-       CF_ENABLEHOOK = $8;
-       CF_ENABLETEMPLATE = $10;
-       CF_ENABLETEMPLATEHANDLE = $20;
-       CF_FIXEDPITCHONLY = $4000;
-       CF_FORCEFONTEXIST = $10000;
-       CF_INITTOLOGFONTSTRUCT = $40;
-       CF_LIMITSIZE = $2000;
-       CF_NOOEMFONTS = $800;
-       CF_NOFACESEL = $80000;
-       CF_NOSCRIPTSEL = $800000;
-       CF_NOSTYLESEL = $100000;
-       CF_NOSIZESEL = $200000;
-       CF_NOSIMULATIONS = $1000;
-       CF_NOVECTORFONTS = $800;
-       CF_NOVERTFONTS = $1000000;
-       CF_PRINTERFONTS = $2;
-       CF_SCALABLEONLY = $20000;
-       CF_SCREENFONTS = $1;
-       CF_SCRIPTSONLY = $400;
-       CF_SELECTSCRIPT = $400000;
-       CF_SHOWHELP = $4;
-       CF_USESTYLE = $80;
-       CF_WYSIWYG = $8000;
-       BOLD_FONTTYPE = $100;
-       ITALIC_FONTTYPE = $200;
-       PRINTER_FONTTYPE = $4000;
-       REGULAR_FONTTYPE = $400;
-       SCREEN_FONTTYPE = $2000;
-    { LBSELCHSTRING message }
-       SIMULATED_FONTTYPE = $8000;
-       CD_LBSELCHANGE = 0;
-       CD_LBSELADD = 2;
-       CD_LBSELSUB = 1;
-    { DEVNAMES structure }
-       CD_LBSELNOITEMS = -1;
-    { PRINTDLG structure }
-       DN_DEFAULTPRN = 1;
-       PD_ALLPAGES = 0;
-       PD_COLLATE = 16;
-       PD_DISABLEPRINTTOFILE = 524288;
-       PD_ENABLEPRINTHOOK = 4096;
-       PD_ENABLEPRINTTEMPLATE = 16384;
-       PD_ENABLEPRINTTEMPLATEHANDLE = 65536;
-       PD_ENABLESETUPHOOK = 8192;
-       PD_ENABLESETUPTEMPLATE = 32768;
-       PD_ENABLESETUPTEMPLATEHANDLE = 131072;
-       PD_HIDEPRINTTOFILE = 1048576;
-       PD_NOPAGENUMS = 8;
-       PD_NOSELECTION = 4;
-       PD_NOWARNING = 128;
-       PD_PAGENUMS = 2;
-       PD_PRINTSETUP = 64;
-       PD_PRINTTOFILE = 32;
-       PD_RETURNDC = 256;
-       PD_RETURNDEFAULT = 1024;
-       PD_RETURNIC = 512;
-       PD_SELECTION = 1;
-       PD_SHOWHELP = 2048;
-       PD_USEDEVMODECOPIES = 262144;
-    { PAGESETUPDLG structure }
-       PD_USEDEVMODECOPIESANDCOLLATE = 262144;
-       PSD_DEFAULTMINMARGINS = 0;
-       PSD_DISABLEMARGINS = 16;
-       PSD_DISABLEORIENTATION = 256;
-       PSD_DISABLEPAGEPAINTING = 524288;
-       PSD_DISABLEPAPER = 512;
-       PSD_DISABLEPRINTER = 32;
-       PSD_ENABLEPAGEPAINTHOOK = 262144;
-       PSD_ENABLEPAGESETUPHOOK = 8192;
-       PSD_ENABLEPAGESETUPTEMPLATE = 32768;
-       PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 131072;
-       PSD_INHUNDREDTHSOFMILLIMETERS = 8;
-       PSD_INTHOUSANDTHSOFINCHES = 4;
-       PSD_INWININIINTLMEASURE = 0;
-       PSD_MARGINS = 2;
-       PSD_MINMARGINS = 1;
-       PSD_NOWARNING = 128;
-       PSD_RETURNDEFAULT = 1024;
-    { WM_SHOWWINDOW message }
-       PSD_SHOWHELP = 2048;
-       SW_OTHERUNZOOM = 4;
-       SW_OTHERZOOM = 2;
-       SW_PARENTCLOSING = 1;
-    { Virtual Key codes }
-       SW_PARENTOPENING = 3;
-       VK_LBUTTON = 1;
-       VK_RBUTTON = 2;
-       VK_CANCEL = 3;
-       VK_MBUTTON = 4;
-       VK_BACK = 8;
-       VK_TAB = 9;
-       VK_CLEAR = 12;
-       VK_RETURN = 13;
-       VK_SHIFT = 16;
-       VK_CONTROL = 17;
-       VK_MENU = 18;
-       VK_PAUSE = 19;
-       VK_CAPITAL = 20;
-       VK_ESCAPE = 27;
-       VK_SPACE = 32;
-       VK_PRIOR = 33;
-       VK_NEXT = 34;
-       VK_END = 35;
-       VK_HOME = 36;
-       VK_LEFT = 37;
-       VK_UP = 38;
-       VK_RIGHT = 39;
-       VK_DOWN = 40;
-       VK_SELECT = 41;
-       VK_EXECUTE = 43;
-       VK_SNAPSHOT = 44;
-       VK_INSERT = 45;
-       VK_DELETE = 46;
-       VK_HELP = 47;
-       VK_0 = 48;
-       VK_1 = 49;
-       VK_2 = 50;
-       VK_3 = 51;
-       VK_4 = 52;
-       VK_5 = 53;
-       VK_6 = 54;
-       VK_7 = 55;
-       VK_8 = 56;
-       VK_9 = 57;
-       VK_A = 65;
-       VK_B = 66;
-       VK_C = 67;
-       VK_D = 68;
-       VK_E = 69;
-       VK_F = 70;
-       VK_G = 71;
-       VK_H = 72;
-       VK_I = 73;
-       VK_J = 74;
-       VK_K = 75;
-       VK_L = 76;
-       VK_M = 77;
-       VK_N = 78;
-       VK_O = 79;
-       VK_P = 80;
-       VK_Q = 81;
-       VK_R = 82;
-       VK_S = 83;
-       VK_T = 84;
-       VK_U = 85;
-       VK_V = 86;
-       VK_W = 87;
-       VK_X = 88;
-       VK_Y = 89;
-       VK_Z = 90;
-       VK_NUMPAD0 = 96;
-       VK_NUMPAD1 = 97;
-       VK_NUMPAD2 = 98;
-       VK_NUMPAD3 = 99;
-       VK_NUMPAD4 = 100;
-       VK_NUMPAD5 = 101;
-       VK_NUMPAD6 = 102;
-       VK_NUMPAD7 = 103;
-       VK_NUMPAD8 = 104;
-       VK_NUMPAD9 = 105;
-       VK_MULTIPLY = 106;
-       VK_ADD = 107;
-       VK_SEPARATOR = 108;
-       VK_SUBTRACT = 109;
-       VK_DECIMAL = 110;
-       VK_DIVIDE = 111;
-       VK_F1 = 112;
-       VK_F2 = 113;
-       VK_F3 = 114;
-       VK_F4 = 115;
-       VK_F5 = 116;
-       VK_F6 = 117;
-       VK_F7 = 118;
-       VK_F8 = 119;
-       VK_F9 = 120;
-       VK_F10 = 121;
-       VK_F11 = 122;
-       VK_F12 = 123;
-       VK_F13 = 124;
-       VK_F14 = 125;
-       VK_F15 = 126;
-       VK_F16 = 127;
-       VK_F17 = 128;
-       VK_F18 = 129;
-       VK_F19 = 130;
-       VK_F20 = 131;
-       VK_F21 = 132;
-       VK_F22 = 133;
-       VK_F23 = 134;
-    { GetAsyncKeyState }
-       VK_F24 = 135;
-       VK_NUMLOCK = 144;
-       VK_SCROLL = 145;
-       VK_LSHIFT = 160;
-       VK_LCONTROL = 162;
-       VK_LMENU = 164;
-       VK_RSHIFT = 161;
-       VK_RCONTROL = 163;
-    { ImmGetVirtualKey }
-       VK_RMENU = 165;
-    { Keystroke Message Flags }
-       VK_PROCESSKEY = 229;
-       KF_ALTDOWN = 8192;
-       KF_DLGMODE = 2048;
-       KF_EXTENDED = 256;
-       KF_MENUMODE = 4096;
-       KF_REPEAT = 16384;
-    { GetKeyboardLayoutName }
-       KF_UP = 32768;
-    { WM_ACTIVATE message }
-       KL_NAMELENGTH = 9;
-       WA_ACTIVE = 1;
-       WA_CLICKACTIVE = 2;
-    { WM_ACTIVATE message }
-       WA_INACTIVE = 0;
-       PWR_CRITICALRESUME = 3;
-       PWR_SUSPENDREQUEST = 1;
-       PWR_SUSPENDRESUME = 2;
-       PWR_FAIL = -1;
-    { WM_NOTIFYFORMAT message }
-       PWR_OK = 1;
-       NF_QUERY = 3;
-       NF_REQUERY = 4;
-       NFR_ANSI = 1;
-    { WM_SIZING message }
-       NFR_UNICODE = 2;
-       WMSZ_BOTTOM = 6;
-       WMSZ_BOTTOMLEFT = 7;
-       WMSZ_BOTTOMRIGHT = 8;
-       WMSZ_LEFT = 1;
-       WMSZ_RIGHT = 2;
-       WMSZ_TOP = 3;
-       WMSZ_TOPLEFT = 4;
-    { WM_MOUSEACTIVATE message }
-       WMSZ_TOPRIGHT = 5;
-       MA_ACTIVATE = 1;
-       MA_ACTIVATEANDEAT = 2;
-       MA_NOACTIVATE = 3;
-    { WM_SIZE message }
-       MA_NOACTIVATEANDEAT = 4;
-       SIZE_MAXHIDE = 4;
-       SIZE_MAXIMIZED = 2;
-       SIZE_MAXSHOW = 3;
-       SIZE_MINIMIZED = 1;
-    { WM_NCCALCSIZE message }
-       SIZE_RESTORED = 0;
-       WVR_ALIGNTOP = 16;
-       WVR_ALIGNLEFT = 32;
-       WVR_ALIGNBOTTOM = 64;
-       WVR_ALIGNRIGHT = 128;
-       WVR_HREDRAW = 256;
-       WVR_VREDRAW = 512;
-       WVR_REDRAW = 768;
-    { WM_NCHITTEST message }
-       WVR_VALIDRECTS = 1024;
-       HTBOTTOM = 15;
-       HTBOTTOMLEFT = 16;
-       HTBOTTOMRIGHT = 17;
-       HTCAPTION = 2;
-       HTCLIENT = 1;
-       HTERROR = -2;
-       HTGROWBOX = 4;
-       HTHSCROLL = 6;
-       HTLEFT = 10;
-       HTMENU = 5;
-       HTNOWHERE = 0;
-       HTREDUCE = 8;
-       HTRIGHT = 11;
-       HTSIZE = 4;
-       HTSYSMENU = 3;
-       HTTOP = 12;
-       HTTOPLEFT = 13;
-       HTTOPRIGHT = 14;
-       HTTRANSPARENT = -1;
-       HTVSCROLL = 7;
-    { Mouse messages }
-       HTZOOM = 9;
-       MK_CONTROL = 8;
-       MK_LBUTTON = 1;
-       MK_MBUTTON = 16;
-       MK_RBUTTON = 2;
-    { WNDCLASS structure }
-       MK_SHIFT = 4;
-       CS_BYTEALIGNCLIENT = 4096;
-       CS_BYTEALIGNWINDOW = 8192;
-       CS_CLASSDC = 64;
-       CS_DBLCLKS = 8;
-       CS_GLOBALCLASS = 16384;
-       CS_HREDRAW = 2;
-       CS_NOCLOSE = 512;
-       CS_OWNDC = 32;
-       CS_PARENTDC = 128;
-       CS_SAVEBITS = 2048;
-       CS_VREDRAW = 1;
-    { ACCEL structure }
-       DLGWINDOWEXTRA = 30;
-       FALT = 16;
-       FCONTROL = 8;
-       FNOINVERT = 2;
-       FSHIFT = 4;
-    { MENUITEMINFO structure }
-       FVIRTKEY = 1;
-       MIIM_CHECKMARKS = 8;
-       MIIM_DATA = 32;
-       MIIM_ID = 2;
-       MIIM_STATE = 1;
-       MIIM_SUBMENU = 4;
-       MIIM_TYPE = 16;
-       MFT_BITMAP = $4;
-       MFT_MENUBARBREAK = $20;
-       MFT_MENUBREAK = $40;
-       MFT_OWNERDRAW = $100;
-       MFT_RADIOCHECK = $200;
-       MFT_RIGHTJUSTIFY = $4000;
-       MFT_SEPARATOR = $800;
-       MFT_STRING = 0;
-       MFS_CHECKED = $8;
-       MFS_DEFAULT = $1000;
-       MFS_DISABLED = $3;
-       MFS_ENABLED = 0;
-       MFS_GRAYED = $3;
-       MFS_HILITE = $80;
-       MFS_UNCHECKED = 0;
-    { SERIALKEYS structure }
-       MFS_UNHILITE = 0;
-       SERKF_AVAILABLE = 2;
-       SERKF_INDICATOR = 4;
-    { FILTERKEYS structure }
-       SERKF_SERIALKEYSON = 1;
-       FKF_AVAILABLE = 2;
-       FKF_CLICKON = 64;
-       FKF_FILTERKEYSON = 1;
-       FKF_HOTKEYACTIVE = 4;
-       FKF_HOTKEYSOUND = 16;
-       FKF_CONFIRMHOTKEY = 8;
-    { HELPINFO structure }
-       FKF_INDICATOR = 32;
-       HELPINFO_MENUITEM = 2;
-    { WM_PRINT message }
-       HELPINFO_WINDOW = 1;
-       PRF_CHECKVISIBLE = $1;
-       PRF_CHILDREN = $10;
-       PRF_CLIENT = $4;
-       PRF_ERASEBKGND = $8;
-       PRF_NONCLIENT = $2;
-    { WM_SYSCOMMAND message }
-       PRF_OWNED = $20;
-       SC_CLOSE = 61536;
-       SC_CONTEXTHELP = 61824;
-       SC_DEFAULT = 61792;
-       SC_HOTKEY = 61776;
-       SC_HSCROLL = 61568;
-       SC_KEYMENU = 61696;
-       SC_MAXIMIZE = 61488;
-       SC_ZOOM = 61488;
-       SC_MINIMIZE = 61472;
-       SC_ICON = 61472;
-       SC_MONITORPOWER = 61808;
-       SC_MOUSEMENU = 61584;
-       SC_MOVE = 61456;
-       SC_NEXTWINDOW = 61504;
-       SC_PREVWINDOW = 61520;
-       SC_RESTORE = 61728;
-       SC_SCREENSAVE = 61760;
-       SC_SIZE = 61440;
-       SC_TASKLIST = 61744;
-    { DM_GETDEFID message }
-       SC_VSCROLL = 61552;
-    { WM_GETDLGCODE message }
-       DC_HASDEFID = 21323;
-       DLGC_BUTTON = 8192;
-       DLGC_DEFPUSHBUTTON = 16;
-       DLGC_HASSETSEL = 8;
-       DLGC_RADIOBUTTON = 64;
-       DLGC_STATIC = 256;
-       DLGC_UNDEFPUSHBUTTON = 32;
-       DLGC_WANTALLKEYS = 4;
-       DLGC_WANTARROWS = 1;
-       DLGC_WANTCHARS = 128;
-       DLGC_WANTMESSAGE = 4;
-    { EM_SETMARGINS message }
-       DLGC_WANTTAB = 2;
-       EC_LEFTMARGIN = 1;
-       EC_RIGHTMARGIN = 2;
-    { LB_SETCOUNT message }
-       EC_USEFONTINFO = 65535;
-       LB_ERR = -1;
-    { CB_DIR message }
-       LB_ERRSPACE = -2;
-       CB_ERR = -1;
-    { WM_IME_CONTROL message }
-       CB_ERRSPACE = -2;
-       IMC_GETCANDIDATEPOS = 7;
-       IMC_GETCOMPOSITIONFONT = 9;
-       IMC_GETCOMPOSITIONWINDOW = 11;
-       IMC_GETSTATUSWINDOWPOS = 15;
-       IMC_CLOSESTATUSWINDOW = 33;
-       IMC_OPENSTATUSWINDOW = 34;
-       IMC_SETCANDIDATEPOS = 8;
-       IMC_SETCOMPOSITIONFONT = 10;
-       IMC_SETCOMPOSITIONWINDOW = 12;
-    { WM_IME_CONTROL message }
-       IMC_SETSTATUSWINDOWPOS = 16;
-       IMN_CHANGECANDIDATE = 3;
-       IMN_CLOSECANDIDATE = 4;
-       IMN_CLOSESTATUSWINDOW = 1;
-       IMN_GUIDELINE = 13;
-       IMN_OPENCANDIDATE = 5;
-       IMN_OPENSTATUSWINDOW = 2;
-       IMN_SETCANDIDATEPOS = 9;
-       IMN_SETCOMPOSITIONFONT = 10;
-       IMN_SETCOMPOSITIONWINDOW = 11;
-       IMN_SETCONVERSIONMODE = 6;
-       IMN_SETOPENSTATUS = 8;
-       IMN_SETSENTENCEMODE = 7;
-       IMN_SETSTATUSWINDOWPOS = 12;
-    { STICKYKEYS structure }
-       IMN_PRIVATE = 14;
-       SKF_AUDIBLEFEEDBACK = 64;
-       SKF_AVAILABLE = 2;
-       SKF_CONFIRMHOTKEY = 8;
-       SKF_HOTKEYACTIVE = 4;
-       SKF_HOTKEYSOUND = 16;
-       SKF_INDICATOR = 32;
-       SKF_STICKYKEYSON = 1;
-       SKF_TRISTATE = 128;
-    { MOUSEKEYS structure }
-       SKF_TWOKEYSOFF = 256;
-       MKF_AVAILABLE = 2;
-       MKF_CONFIRMHOTKEY = 8;
-       MKF_HOTKEYACTIVE = 4;
-       MKF_HOTKEYSOUND = 16;
-       MKF_INDICATOR = 32;
-       MKF_MOUSEKEYSON = 1;
-       MKF_MODIFIERS = 64;
-    { SOUNDSENTRY structure }
-       MKF_REPLACENUMBERS = 128;
-       SSF_AVAILABLE = 2;
-       SSF_SOUNDSENTRYON = 1;
-       SSTF_BORDER = 2;
-       SSTF_CHARS = 1;
-       SSTF_DISPLAY = 3;
-       SSTF_NONE = 0;
-       SSGF_DISPLAY = 3;
-       SSGF_NONE = 0;
-       SSWF_CUSTOM = 4;
-       SSWF_DISPLAY = 3;
-       SSWF_NONE = 0;
-       SSWF_TITLE = 1;
-    { ACCESSTIMEOUT structure }
-       SSWF_WINDOW = 2;
-       ATF_ONOFFFEEDBACK = 2;
-    { HIGHCONTRAST structure }
-       ATF_TIMEOUTON = 1;
-       HCF_AVAILABLE = 2;
-       HCF_CONFIRMHOTKEY = 8;
-       HCF_HIGHCONTRASTON = 1;
-       HCF_HOTKEYACTIVE = 4;
-       HCF_HOTKEYAVAILABLE = 64;
-       HCF_HOTKEYSOUND = 16;
-    { TOGGLEKEYS structure }
-       HCF_INDICATOR = 32;
-       TKF_AVAILABLE = 2;
-       TKF_CONFIRMHOTKEY = 8;
-       TKF_HOTKEYACTIVE = 4;
-       TKF_HOTKEYSOUND = 16;
-    { Installable Policy }
-       TKF_TOGGLEKEYSON = 1;
-    { SERVICE_INFO structure }
-       PP_DISPLAYERRORS = 1;
-       RESOURCEDISPLAYTYPE_DOMAIN = 1;
-       RESOURCEDISPLAYTYPE_FILE = 4;
-       RESOURCEDISPLAYTYPE_GENERIC = 0;
-       RESOURCEDISPLAYTYPE_GROUP = 5;
-       RESOURCEDISPLAYTYPE_SERVER = 2;
-    { KEY_EVENT_RECORD structure }
-       RESOURCEDISPLAYTYPE_SHARE = 3;
-       CAPSLOCK_ON = 128;
-       ENHANCED_KEY = 256;
-       LEFT_ALT_PRESSED = 2;
-       LEFT_CTRL_PRESSED = 8;
-       NUMLOCK_ON = 32;
-       RIGHT_ALT_PRESSED = 1;
-       RIGHT_CTRL_PRESSED = 4;
-       SCROLLLOCK_ON = 64;
-    { MOUSE_EVENT_RECORD structure }
-       SHIFT_PRESSED = 16;
-       FROM_LEFT_1ST_BUTTON_PRESSED = 1;
-       RIGHTMOST_BUTTON_PRESSED = 2;
-       FROM_LEFT_2ND_BUTTON_PRESSED = 4;
-       FROM_LEFT_3RD_BUTTON_PRESSED = 8;
-       FROM_LEFT_4TH_BUTTON_PRESSED = 16;
-       DOUBLE_CLICK = 2;
-    { INPUT_RECORD structure }
-       MOUSE_MOVED = 1;
-       KEY_EVENT = 1;
-       MOUSE_EVENT = 2;
-       WINDOW_BUFFER_SIZE_EVENT = 4;
-       MENU_EVENT = 8;
-    { BITMAPINFOHEADER structure }
-       FOCUS_EVENT = 16;
-       BI_RGB = 0;
-       BI_RLE8 = 1;
-       BI_RLE4 = 2;
-    { Extensions to OpenGL }
-    { ChoosePixelFormat }
-       BI_BITFIELDS = 3;
-       PFD_DRAW_TO_WINDOW = $4;
-       PFD_DRAW_TO_BITMAP = $8;
-       PFD_SUPPORT_GDI = $10;
-       PFD_SUPPORT_OPENGL = $20;
-       PFD_DOUBLEBUFFER = $1;
-       PFD_STEREO = $2;
-       PFD_DOUBLEBUFFER_DONTCARE = $40000000;
-       PFD_STEREO_DONTCARE = $80000000;
-       PFD_TYPE_RGBA = 0;
-       PFD_TYPE_COLORINDEX = 1;
-       PFD_MAIN_PLANE = 0;
-       PFD_OVERLAY_PLANE = 1;
-    { wglUseFontOutlines }
-       PFD_UNDERLAY_PLANE = -1;
-       WGL_FONT_LINES = 0;
-    { LAYERPLANEDESCRIPTOR structure }
-    { PIXELFORMATDESCRIPTOR structure }
-       WGL_FONT_POLYGONS = 1;
-       PFD_GENERIC_FORMAT = $40;
-       PFD_NEED_PALETTE = $80;
-       PFD_NEED_SYSTEM_PALETTE = $100;
-       PFD_SWAP_COPY = $400;
-       PFD_SWAP_EXCHANGE = $200;
-
-    { Common control window classes }
-       ANIMATE_CLASSW    = 'SysAnimate32';
-       HOTKEY_CLASSW     = 'msctls_hotkey32';
-       PROGRESS_CLASSW   = 'msctls_progress32';
-       STATUSCLASSNAMEW  = 'msctls_statusbar32';
-       TOOLBARCLASSNAMEW = 'ToolbarWindow32';
-       TOOLTIPS_CLASSW   = 'tooltips_class32';
-       TRACKBAR_CLASSW   = 'msctls_trackbar32';
-       UPDOWN_CLASSW     = 'msctls_updown32';
-       WC_HEADERW        = 'SysHeader32';
-       WC_LISTVIEWW      = 'SysListView32';
-       WC_TABCONTROLW    = 'SysTabControl32';
-       WC_TREEVIEWW      = 'SysTreeView32';
-
-       ANIMATE_CLASSA    = 'SysAnimate32';
-       HOTKEY_CLASSA     = 'msctls_hotkey32';
-       PROGRESS_CLASSA   = 'msctls_progress32';
-       STATUSCLASSNAMEA  = 'msctls_statusbar32';
-       TOOLBARCLASSNAMEA = 'ToolbarWindow32';
-       TOOLTIPS_CLASSA   = 'tooltips_class32';
-       TRACKBAR_CLASSA   = 'msctls_trackbar32';
-       UPDOWN_CLASSA     = 'msctls_updown32';
-       WC_HEADERA        = 'SysHeader32';
-       WC_LISTVIEWA      = 'SysListView32';
-       WC_TABCONTROLA    = 'SysTabControl32';
-       WC_TREEVIEWA      = 'SysTreeView32';
-
-    { Common dialog messages }
-       COLOROKSTRINGW    = 'commdlg_ColorOK';
-       FILEOKSTRINGW     = 'commdlg_FileNameOK';
-       FINDMSGSTRINGW    = 'commdlg_FindReplace';
-       HELPMSGSTRINGW    = 'commdlg_help';
-       LBSELCHSTRINGW    = 'commdlg_LBSelChangedNotify';
-       SETRGBSTRINGW     = 'commdlg_SetRGBColor';
-       SHAREVISTRINGW    = 'commdlg_ShareViolation';
-       COLOROKSTRINGA    = 'commdlg_ColorOK';
-       FILEOKSTRINGA     = 'commdlg_FileNameOK';
-       FINDMSGSTRINGA    = 'commdlg_FindReplace';
-       HELPMSGSTRINGA    = 'commdlg_help';
-       LBSELCHSTRINGA    = 'commdlg_LBSelChangedNotify';
-       SETRGBSTRINGA     = 'commdlg_SetRGBColor';
-       SHAREVISTRINGA    = 'commdlg_ShareViolation';
-
-       UNICODE_NULL : WCHAR = 0;
-       INVALID_HANDLE_VALUE : THANDLE = -1;
-       { PostMessage }
-       HWND_BROADCAST : HWND = $FFFF;
-       { RegCreateKey }
-       HKEY_CLASSES_ROOT : HKEY = $80000000;
-       HKEY_CURRENT_USER : HKEY = $80000001;
-       HKEY_LOCAL_MACHINE : HKEY = $80000002;
-       HKEY_USERS : HKEY = $80000003;
-       HKEY_PERFORMANCE_DATA : HKEY = 80000004;
-       HKEY_CURRENT_CONFIG : HKEY = $80000005;
-
-       HWND_BOTTOM : HWND = 1;
-       HWND_NOTOPMOST : HWND = -2;
-       HWND_TOP : HWND = 0;
-       HWND_TOPMOST : HWND = -1;
-
-       HINST_COMMCTRL : HINSTANCE = -1;
-
-       LPSTR_TEXTCALLBACKW : LPWSTR = nil;
-       LPSTR_TEXTCALLBACKA : LPSTR = nil;
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     Defines.h
+  
+     Windows32 API definitions
+  
+     Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+  
+     Author: Scott Christley <[email protected]>
+  
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+  { WARNING:  This file is automatically generated.  }
+    uses base;
+
+{$endif not windows_include_files}
+
+{$ifdef read_interface}
+
+{$ifndef _GNU_H_WINDOWS32_DEFINES}
+{$define _GNU_H_WINDOWS32_DEFINES}
+  {  Not convertable by H2PAS
+  #ifdef __cplusplus
+  extern "C"
+  #endif  __cplusplus  }
+
+  const
+     MAX_PATH = 260;
+    { was #define dname def_expr }
+    function UNICODE_NULL : WCHAR;
+
+
+  const
+     LF_FACESIZE = 32;
+     LF_FULLFACESIZE = 64;
+     ELF_VENDOR_SIZE = 4;
+     SECURITY_STATIC_TRACKING = 0;
+     SECURITY_DYNAMIC_TRACKING = 1;
+     MAX_DEFAULTCHAR = 2;
+     MAX_LEADBYTES = 12;
+     EXCEPTION_MAXIMUM_PARAMETERS = 15;
+     CCHDEVICENAME = 32;
+     CCHFORMNAME = 32;
+     MENU_TEXT_LEN = 40;
+     MAX_LANA = 254;
+     NCBNAMSZ = 16;
+     NETBIOS_NAME_LEN = 16;
+     OFS_MAXPATHNAME = 128;
+     MAX_TAB_STOPS = 32;
+     ANYSIZE_ARRAY = 1;
+     RAS_MaxCallbackNumber = 128;
+     RAS_MaxDeviceName = 128;
+     RAS_MaxDeviceType = 16;
+     RAS_MaxEntryName = 256;
+     RAS_MaxIpAddress = 15;
+     RAS_MaxIpxAddress = 21;
+     RAS_MaxPhoneNumber = 128;
+     UNLEN = 256;
+     PWLEN = 256;
+     CNLEN = 15;
+     DNLEN = 15;
+  { Unsigned types max  }
+     MAXDWORD = $FFFFFFFF;
+     MAXWORD = $FFFF;
+     MAXBYTE = $FF;
+  { Signed types max/min  }
+     MINCHAR = $80;
+     MAXCHAR = $7F;
+     MINSHORT = $8000;
+     MAXSHORT = $7FFF;
+     MINLONG = $80000000;
+     MAXLONG = $7FFFFFFF;
+  { _llseek  }
+     FILE_BEGIN = 0;
+     FILE_CURRENT = 1;
+     FILE_END = 2;
+  { _lopen, LZOpenFile, OpenFile  }
+     OF_READ = 0;
+     OF_READWRITE = 2;
+     OF_WRITE = 1;
+     OF_SHARE_COMPAT = 0;
+     OF_SHARE_DENY_NONE = 64;
+     OF_SHARE_DENY_READ = 48;
+     OF_SHARE_DENY_WRITE = 32;
+     OF_SHARE_EXCLUSIVE = 16;
+     OF_CANCEL = 2048;
+     OF_CREATE = 4096;
+     OF_DELETE = 512;
+     OF_EXIST = 16384;
+     OF_PARSE = 256;
+     OF_PROMPT = 8192;
+     OF_REOPEN = 32768;
+     OF_VERIFY = 1024;
+  { ActivateKeyboardLayout, LoadKeyboardLayout  }
+     HKL_NEXT = 1;
+     HKL_PREV = 0;
+     KLF_REORDER = 8;
+     KLF_UNLOADPREVIOUS = 4;
+     KLF_ACTIVATE = 1;
+     KLF_NOTELLSHELL = 128;
+     KLF_REPLACELANG = 16;
+     KLF_SUBSTITUTE_OK = 2;
+  { AppendMenu  }
+     MF_BITMAP = $4;
+     MF_DISABLED = $2;
+     MF_ENABLED = 0;
+     MF_GRAYED = $1;
+     MF_HELP = $4000;
+     MF_MENUBARBREAK = $20;
+     MF_MENUBREAK = $40;
+     MF_MOUSESELECT = $8000;
+     MF_OWNERDRAW = $100;
+     MF_POPUP = $10;
+     MF_SEPARATOR = $800;
+     MF_STRING = 0;
+     MF_SYSMENU = $2000;
+     MF_USECHECKBITMAPS = $200;
+  { Ternary Raster Operations - BitBlt  }
+     BLACKNESS = $00000042;
+     NOTSRCERASE = $001100A6;
+     NOTSRCCOPY = $00330008;
+     SRCERASE = $00440328;
+     DSTINVERT = $00550009;
+     PATINVERT = $005A0049;
+     SRCINVERT = $00660046;
+     SRCAND = $008800C6;
+     MERGEPAINT = $00BB0226;
+     MERGECOPY = $00C000CA;
+     SRCCOPY = $00CC0020;
+     SRCPAINT = $00EE0086;
+     PATCOPY = $00F00021;
+     PATPAINT = $00FB0A09;
+     WHITENESS = $00FF0062;
+  { Binary Raster Operations  }
+     R2_BLACK = 1;
+     R2_COPYPEN = 13;
+     R2_MASKNOTPEN = 3;
+     R2_MASKPEN = 9;
+     R2_MASKPENNOT = 5;
+     R2_MERGENOTPEN = 12;
+     R2_MERGEPEN = 15;
+     R2_MERGEPENNOT = 14;
+     R2_NOP = 11;
+     R2_NOT = 6;
+     R2_NOTCOPYPEN = 4;
+     R2_NOTMASKPEN = 8;
+     R2_NOTMERGEPEN = 2;
+     R2_NOTXORPEN = 10;
+     R2_WHITE = 16;
+     R2_XORPEN = 7;
+  { BroadcastSystemMessage  }
+     BSF_FLUSHDISK = 4;
+     BSF_FORCEIFHUNG = 32;
+     BSF_IGNORECURRENTTASK = 2;
+     BSF_NOHANG = 8;
+     BSF_POSTMESSAGE = 16;
+     BSF_QUERY = 1;
+     BSM_ALLCOMPONENTS = 0;
+     BSM_APPLICATIONS = 8;
+     BSM_INSTALLABLEDRIVERS = 4;
+     BSM_NETDRIVER = 2;
+     BSM_VXDS = 1;
+     BROADCAST_QUERY_DENY = 1112363332;
+  { BrowseCallbackProc  }
+  { CallNamedPipe  }
+     NMPWAIT_NOWAIT = 1;
+     NMPWAIT_WAIT_FOREVER = -(1);
+     NMPWAIT_USE_DEFAULT_WAIT = 0;
+  { CascadeWindows, TileWindows  }
+     MDITILE_SKIPDISABLED = 2;
+     MDITILE_HORIZONTAL = 1;
+     MDITILE_VERTICAL = 0;
+  { CBTProc  }
+     HCBT_ACTIVATE = 5;
+     HCBT_CLICKSKIPPED = 6;
+     HCBT_CREATEWND = 3;
+     HCBT_DESTROYWND = 4;
+     HCBT_KEYSKIPPED = 7;
+     HCBT_MINMAX = 1;
+     HCBT_MOVESIZE = 0;
+     HCBT_QS = 2;
+     HCBT_SETFOCUS = 9;
+     HCBT_SYSCOMMAND = 8;
+  { ChangeDisplaySettings  }
+     DM_BITSPERPEL = $40000;
+     DM_PELSWIDTH = $80000;
+     DM_PELSHEIGHT = $100000;
+     DM_DISPLAYFLAGS = $200000;
+     DM_DISPLAYFREQUENCY = $400000;
+     CDS_UPDATEREGISTRY = 1;
+     CDS_TEST = 2;
+     DISP_CHANGE_SUCCESSFUL = 0;
+     DISP_CHANGE_RESTART = 1;
+     DISP_CHANGE_BADFLAGS = -(4);
+     DISP_CHANGE_FAILED = -(1);
+     DISP_CHANGE_BADMODE = -(2);
+     DISP_CHANGE_NOTUPDATED = -(3);
+  { ChangeServiceConfig  }
+     SERVICE_NO_CHANGE = -(1);
+     SERVICE_WIN32_OWN_PROCESS = 16;
+     SERVICE_WIN32_SHARE_PROCESS = 32;
+     SERVICE_KERNEL_DRIVER = 1;
+     SERVICE_FILE_SYSTEM_DRIVER = 2;
+     SERVICE_INTERACTIVE_PROCESS = 256;
+     SERVICE_BOOT_START = 0;
+     SERVICE_SYSTEM_START = 1;
+     SERVICE_AUTO_START = 2;
+     SERVICE_DEMAND_START = 3;
+     SERVICE_DISABLED = 4;
+  { SERVICE_STATUS structure  }
+     SERVICE_STOPPED = 1;
+     SERVICE_START_PENDING = 2;
+     SERVICE_STOP_PENDING = 3;
+     SERVICE_RUNNING = 4;
+     SERVICE_CONTINUE_PENDING = 5;
+     SERVICE_PAUSE_PENDING = 6;
+     SERVICE_PAUSED = 7;
+     SERVICE_ACCEPT_STOP = 1;
+     SERVICE_ACCEPT_PAUSE_CONTINUE = 2;
+     SERVICE_ACCEPT_SHUTDOWN = 4;
+  { CheckDlgButton  }
+     BST_CHECKED = 1;
+     BST_INDETERMINATE = 2;
+     BST_UNCHECKED = 0;
+     BST_FOCUS = 8;
+     BST_PUSHED = 4;
+  { CheckMenuItem, HiliteMenuItem  }
+     MF_BYCOMMAND = 0;
+     MF_BYPOSITION = $400;
+     MF_CHECKED = $8;
+     MF_UNCHECKED = 0;
+     MF_HILITE = $80;
+     MF_UNHILITE = 0;
+  { ChildWindowFromPointEx  }
+     CWP_ALL = 0;
+     CWP_SKIPINVISIBLE = 1;
+     CWP_SKIPDISABLED = 2;
+     CWP_SKIPTRANSPARENT = 4;
+  { ClearCommError  }
+     CE_BREAK = 16;
+     CE_DNS = 2048;
+     CE_FRAME = 8;
+     CE_IOE = 1024;
+     CE_MODE = 32768;
+     CE_OOP = 4096;
+     CE_OVERRUN = 2;
+     CE_PTO = 512;
+     CE_RXOVER = 1;
+     CE_RXPARITY = 4;
+     CE_TXFULL = 256;
+  { ChooseMatchToTarget  }
+  { CombineRgn  }
+     RGN_AND = 1;
+     RGN_COPY = 5;
+     RGN_DIFF = 4;
+     RGN_OR = 2;
+     RGN_XOR = 3;
+     NULLREGION = 1;
+     SIMPLEREGION = 2;
+     COMPLEXREGION = 3;
+     ERROR = 0;
+  { CommonDlgExtendedError  }
+     CDERR_DIALOGFAILURE = $ffff;
+     CDERR_FINDRESFAILURE = 6;
+     CDERR_INITIALIZATION = 2;
+     CDERR_LOADRESFAILURE = 7;
+     CDERR_LOADSTRFAILURE = 5;
+     CDERR_LOCKRESFAILURE = 8;
+     CDERR_MEMALLOCFAILURE = 9;
+     CDERR_MEMLOCKFAILURE = 10;
+     CDERR_NOHINSTANCE = 4;
+     CDERR_NOHOOK = 11;
+     CDERR_NOTEMPLATE = 3;
+     CDERR_REGISTERMSGFAIL = 12;
+     CDERR_STRUCTSIZE = 1;
+     PDERR_CREATEICFAILURE = $1000 + 10;
+     PDERR_DEFAULTDIFFERENT = $1000 + 12;
+     PDERR_DNDMMISMATCH = $1000 + 9;
+     PDERR_GETDEVMODEFAIL = $1000 + 5;
+     PDERR_INITFAILURE = $1000 + 6;
+     PDERR_LOADDRVFAILURE = $1000 + 4;
+     PDERR_NODEFAULTPRN = $1000 + 8;
+     PDERR_NODEVICES = $1000 + 7;
+     PDERR_PARSEFAILURE = $1000 + 2;
+     PDERR_PRINTERNOTFOUND = $1000 + 11;
+     PDERR_RETDEFFAILURE = $1000 + 3;
+     PDERR_SETUPFAILURE = $1000 + 1;
+     CFERR_MAXLESSTHANMIN = $2000 + 2;
+     CFERR_NOFONTS = $2000 + 1;
+     FNERR_BUFFERTOOSMALL = $3000 + 3;
+     FNERR_INVALIDFILENAME = $3000 + 2;
+     FNERR_SUBCLASSFAILURE = $3000 + 1;
+     FRERR_BUFFERLENGTHZERO = $4000 + 1;
+  { CompareString, LCMapString  }
+     LOCALE_SYSTEM_DEFAULT = $800;
+     LOCALE_USER_DEFAULT = $400;
+     NORM_IGNORECASE = 1;
+     NORM_IGNOREKANATYPE = 65536;
+     NORM_IGNORENONSPACE = 2;
+     NORM_IGNORESYMBOLS = 4;
+     NORM_IGNOREWIDTH = 131072;
+     SORT_STRINGSORT = 4096;
+     LCMAP_BYTEREV = 2048;
+     LCMAP_FULLWIDTH = 8388608;
+     LCMAP_HALFWIDTH = 4194304;
+     LCMAP_HIRAGANA = 1048576;
+     LCMAP_KATAKANA = 2097152;
+     LCMAP_LOWERCASE = 256;
+     LCMAP_SORTKEY = 1024;
+     LCMAP_UPPERCASE = 512;
+  { ContinueDebugEvent  }
+     DBG_CONTINUE = $10002;
+     DBG_CONTROL_BREAK = $40010008;
+     DBG_CONTROL_C = $40010005;
+     DBG_EXCEPTION_NOT_HANDLED = $80010001;
+     DBG_TERMINATE_THREAD = $40010003;
+     DBG_TERMINATE_PROCESS = $40010004;
+  { ControlService  }
+     SERVICE_CONTROL_STOP = 1;
+     SERVICE_CONTROL_PAUSE = 2;
+     SERVICE_CONTROL_CONTINUE = 3;
+     SERVICE_CONTROL_INTERROGATE = 4;
+     SERVICE_CONTROL_SHUTDOWN = 5;
+  { CopyImage, LoadImage  }
+     IMAGE_BITMAP = 0;
+     IMAGE_CURSOR = 2;
+     IMAGE_ENHMETAFILE = 1;
+     IMAGE_ICON = 1;
+     LR_COPYDELETEORG = 8;
+     LR_COPYRETURNORG = 4;
+     LR_MONOCHROME = 1;
+     LR_CREATEDIBSECTION = 8192;
+     LR_DEFAULTSIZE = 64;
+  { CreateDesktop  }
+     DF_ALLOWOTHERACCOUNTHOOK = $1;
+     DESKTOP_CREATEMENU = $4;
+     DESKTOP_CREATEWINDOW = $2;
+     DESKTOP_ENUMERATE = $40;
+     DESKTOP_HOOKCONTROL = $8;
+     DESKTOP_JOURNALPLAYBACK = $20;
+     DESKTOP_JOURNALRECORD = $10;
+     DESKTOP_READOBJECTS = $1;
+     DESKTOP_SWITCHDESKTOP = $100;
+     DESKTOP_WRITEOBJECTS = $80;
+     WSF_VISIBLE = $1;
+  { CreateDIBitmap  }
+     CBM_INIT = $4;
+     DIB_PAL_COLORS = 1;
+     DIB_RGB_COLORS = 0;
+  { CreateFile, GetFileAttributes, SetFileAttributes  }
+     GENERIC_READ = $80000000;
+     GENERIC_WRITE = $40000000;
+  { file & pipe  }
+     FILE_READ_DATA = $0001;
+  { directory  }
+     FILE_LIST_DIRECTORY = $0001;
+  { file & pipe  }
+     FILE_WRITE_DATA = $0002;
+  { directory  }
+     FILE_ADD_FILE = $0002;
+  { file  }
+     FILE_APPEND_DATA = $0004;
+  { directory  }
+     FILE_ADD_SUBDIRECTORY = $0004;
+  { named pipe  }
+     FILE_CREATE_PIPE_INSTANCE = $0004;
+  { file & directory  }
+     FILE_READ_EA = $0008;
+     FILE_READ_PROPERTIES = FILE_READ_EA;
+  { file & directory  }
+     FILE_WRITE_EA = $0010;
+     FILE_WRITE_PROPERTIES = FILE_WRITE_EA;
+  { file  }
+     FILE_EXECUTE = $0020;
+  { directory  }
+     FILE_TRAVERSE = $0020;
+  { directory  }
+     FILE_DELETE_CHILD = $0040;
+  { all  }
+     FILE_READ_ATTRIBUTES = $0080;
+  { all  }
+     FILE_WRITE_ATTRIBUTES = $0100;
+  { displaced lower
+  #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
+  
+  #define FILE_GENERIC_READ         (STANDARD_RIGHTS_READ     |\
+                                     FILE_READ_DATA           |\
+                                     FILE_READ_ATTRIBUTES     |\
+                                     FILE_READ_EA             |\
+                                     SYNCHRONIZE)
+  
+  
+  #define FILE_GENERIC_WRITE        (STANDARD_RIGHTS_WRITE    |\
+                                     FILE_WRITE_DATA          |\
+                                     FILE_WRITE_ATTRIBUTES    |\
+                                     FILE_WRITE_EA            |\
+                                     FILE_APPEND_DATA         |\
+                                     SYNCHRONIZE)
+  
+  
+  #define FILE_GENERIC_EXECUTE      (STANDARD_RIGHTS_EXECUTE  |\
+                                     FILE_READ_ATTRIBUTES     |\
+                                     FILE_EXECUTE             |\
+                                     SYNCHRONIZE)
+   }
+     FILE_SHARE_DELETE = 4;
+     FILE_SHARE_READ = 1;
+     FILE_SHARE_WRITE = 2;
+     CONSOLE_TEXTMODE_BUFFER = 1;
+     CREATE_NEW = 1;
+     CREATE_ALWAYS = 2;
+     OPEN_EXISTING = 3;
+     OPEN_ALWAYS = 4;
+     TRUNCATE_EXISTING = 5;
+     FILE_ATTRIBUTE_ARCHIVE = 32;
+     FILE_ATTRIBUTE_COMPRESSED = 2048;
+     FILE_ATTRIBUTE_NORMAL = 128;
+     FILE_ATTRIBUTE_DIRECTORY = 16;
+     FILE_ATTRIBUTE_HIDDEN = 2;
+     FILE_ATTRIBUTE_READONLY = 1;
+     FILE_ATTRIBUTE_SYSTEM = 4;
+     FILE_ATTRIBUTE_TEMPORARY = 256;
+     FILE_FLAG_WRITE_THROUGH = 2147483648;
+     FILE_FLAG_OVERLAPPED = 1073741824;
+     FILE_FLAG_NO_BUFFERING = 536870912;
+     FILE_FLAG_RANDOM_ACCESS = 268435456;
+     FILE_FLAG_SEQUENTIAL_SCAN = 134217728;
+     FILE_FLAG_DELETE_ON_CLOSE = 67108864;
+     FILE_FLAG_BACKUP_SEMANTICS = 33554432;
+     FILE_FLAG_POSIX_SEMANTICS = 16777216;
+     SECURITY_ANONYMOUS = 0;
+     SECURITY_IDENTIFICATION = 65536;
+     SECURITY_IMPERSONATION = 131072;
+     SECURITY_DELEGATION = 196608;
+     SECURITY_CONTEXT_TRACKING = 262144;
+     SECURITY_EFFECTIVE_ONLY = 524288;
+     SECURITY_SQOS_PRESENT = 1048576;
+  { CreateFileMapping, VirtualAlloc, VirtualFree, VirtualProtect  }
+     SEC_COMMIT = 134217728;
+     SEC_IMAGE = 16777216;
+     SEC_NOCACHE = 268435456;
+     SEC_RESERVE = 67108864;
+     PAGE_READONLY = 2;
+     PAGE_READWRITE = 4;
+     PAGE_WRITECOPY = 8;
+     PAGE_EXECUTE = 16;
+     PAGE_EXECUTE_READ = 32;
+     PAGE_EXECUTE_READWRITE = 64;
+     PAGE_EXECUTE_WRITECOPY = 128;
+     PAGE_GUARD = 256;
+     PAGE_NOACCESS = 1;
+     PAGE_NOCACHE = 512;
+     MEM_COMMIT = 4096;
+     MEM_FREE = 65536;
+     MEM_RESERVE = 8192;
+     MEM_IMAGE = 16777216;
+     MEM_MAPPED = 262144;
+     MEM_PRIVATE = 131072;
+     MEM_DECOMMIT = 16384;
+     MEM_RELEASE = 32768;
+     MEM_TOP_DOWN = 1048576;
+     EXCEPTION_GUARD_PAGE = $80000001;
+     SECTION_EXTEND_SIZE = $10;
+     SECTION_MAP_READ = $4;
+     SECTION_MAP_WRITE = $2;
+     SECTION_QUERY = $1;
+     SECTION_ALL_ACCESS = $f001f;
+  { CreateFont  }
+     FW_DONTCARE = 0;
+     FW_THIN = 100;
+     FW_EXTRALIGHT = 200;
+     FW_LIGHT = 300;
+     FW_NORMAL = 400;
+     FW_REGULAR = FW_NORMAL;
+     FW_MEDIUM = 500;
+     FW_SEMIBOLD = 600;
+     FW_BOLD = 700;
+     FW_EXTRABOLD = 800;
+     FW_HEAVY = 900;
+     ANSI_CHARSET = 0;
+     DEFAULT_CHARSET = 1;
+     SYMBOL_CHARSET = 2;
+     SHIFTJIS_CHARSET = 128;
+     HANGEUL_CHARSET = 129;
+     GB2312_CHARSET = 134;
+     CHINESEBIG5_CHARSET = 136;
+     GREEK_CHARSET = 161;
+     TURKISH_CHARSET = 162;
+     HEBREW_CHARSET = 177;
+     ARABIC_CHARSET = 178;
+     BALTIC_CHARSET = 186;
+     RUSSIAN_CHARSET = 204;
+     THAI_CHARSET = 222;
+     EASTEUROPE_CHARSET = 238;
+     OEM_CHARSET = 255;
+     OUT_DEFAULT_PRECIS = 0;
+     OUT_STRING_PRECIS = 1;
+     OUT_CHARACTER_PRECIS = 2;
+     OUT_STROKE_PRECIS = 3;
+     OUT_TT_PRECIS = 4;
+     OUT_DEVICE_PRECIS = 5;
+     OUT_RASTER_PRECIS = 6;
+     OUT_TT_ONLY_PRECIS = 7;
+     OUT_OUTLINE_PRECIS = 8;
+     CLIP_DEFAULT_PRECIS = 0;
+     CLIP_CHARACTER_PRECIS = 1;
+     CLIP_STROKE_PRECIS = 2;
+     CLIP_MASK = 15;
+     CLIP_LH_ANGLES = 16;
+     CLIP_TT_ALWAYS = 32;
+     CLIP_EMBEDDED = 128;
+     DEFAULT_QUALITY = 0;
+     DRAFT_QUALITY = 1;
+     PROOF_QUALITY = 2;
+     DEFAULT_PITCH = 0;
+     FIXED_PITCH = 1;
+     VARIABLE_PITCH = 2;
+     FF_DECORATIVE = 80;
+     FF_DONTCARE = 0;
+     FF_MODERN = 48;
+     FF_ROMAN = 16;
+     FF_SCRIPT = 64;
+     FF_SWISS = 32;
+  { CreateHatchBrush  }
+     HS_BDIAGONAL = 3;
+     HS_CROSS = 4;
+     HS_DIAGCROSS = 5;
+     HS_FDIAGONAL = 2;
+     HS_HORIZONTAL = 0;
+     HS_VERTICAL = 1;
+  { CreateIconFromResourceEx  }
+     LR_DEFAULTCOLOR = 0;
+     LR_LOADREALSIZE = 128;
+  { already defined above !!
+  #define LR_MONOCHROME	(1)
+   }
+  { CreateMailslot, GetMailslotInfo  }
+     MAILSLOT_WAIT_FOREVER = $ffffffff;
+     MAILSLOT_NO_MESSAGE = $ffffffff;
+  { CreateMappedBitmap  }
+     CMB_MASKED = 2;
+  { CreateNamedPipe  }
+     PIPE_ACCESS_DUPLEX = 3;
+     PIPE_ACCESS_INBOUND = 1;
+     PIPE_ACCESS_OUTBOUND = 2;
+     WRITE_DAC = $40000;
+     WRITE_OWNER = $80000;
+     ACCESS_SYSTEM_SECURITY = $1000000;
+     PIPE_TYPE_BYTE = 0;
+     PIPE_TYPE_MESSAGE = 4;
+     PIPE_READMODE_BYTE = 0;
+     PIPE_READMODE_MESSAGE = 2;
+     PIPE_WAIT = 0;
+     PIPE_NOWAIT = 1;
+  { CreatePen, ExtCreatePen  }
+     PS_GEOMETRIC = 65536;
+     PS_COSMETIC = 0;
+     PS_ALTERNATE = 8;
+     PS_SOLID = 0;
+     PS_DASH = 1;
+     PS_DOT = 2;
+     PS_DASHDOT = 3;
+     PS_DASHDOTDOT = 4;
+     PS_NULL = 5;
+     PS_USERSTYLE = 7;
+     PS_INSIDEFRAME = 6;
+     PS_ENDCAP_ROUND = 0;
+     PS_ENDCAP_SQUARE = 256;
+     PS_ENDCAP_FLAT = 512;
+     PS_JOIN_BEVEL = 4096;
+     PS_JOIN_MITER = 8192;
+     PS_JOIN_ROUND = 0;
+     PS_STYLE_MASK = 15;
+     PS_ENDCAP_MASK = 3840;
+     PS_TYPE_MASK = 983040;
+  { CreatePolygonRgn  }
+     ALTERNATE = 1;
+     WINDING = 2;
+  { CreateProcess  }
+     CREATE_DEFAULT_ERROR_MODE = 67108864;
+     CREATE_NEW_CONSOLE = 16;
+     CREATE_NEW_PROCESS_GROUP = 512;
+     CREATE_SEPARATE_WOW_VDM = 2048;
+     CREATE_SUSPENDED = 4;
+     CREATE_UNICODE_ENVIRONMENT = 1024;
+     DEBUG_PROCESS = 1;
+     DEBUG_ONLY_THIS_PROCESS = 2;
+     DETACHED_PROCESS = 8;
+     HIGH_PRIORITY_CLASS = 128;
+     IDLE_PRIORITY_CLASS = 64;
+     NORMAL_PRIORITY_CLASS = 32;
+     REALTIME_PRIORITY_CLASS = 256;
+  { CreateService  }
+     SERVICE_ALL_ACCESS = $f01ff;
+     SERVICE_CHANGE_CONFIG = 2;
+     SERVICE_ENUMERATE_DEPENDENTS = 8;
+     SERVICE_INTERROGATE = 128;
+     SERVICE_PAUSE_CONTINUE = 64;
+     SERVICE_QUERY_CONFIG = 1;
+     SERVICE_QUERY_STATUS = 4;
+     SERVICE_START = 16;
+     SERVICE_STOP = 32;
+     SERVICE_USER_DEFINED_CONTROL = 256;
+     DELETE = $10000;
+     READ_CONTROL = $20000;
+     GENERIC_EXECUTE = $20000000;
+  { already defined above !!
+  #define SERVICE_WIN32_OWN_PROCESS	(16)
+  #define SERVICE_WIN32_SHARE_PROCESS	(32)
+  #define SERVICE_KERNEL_DRIVER	(1)
+  #define SERVICE_FILE_SYSTEM_DRIVER	(2)
+  #define SERVICE_INTERACTIVE_PROCESS	(256)
+  #define SERVICE_BOOT_START	(0)
+  #define SERVICE_SYSTEM_START	(1)
+  #define SERVICE_AUTO_START	(2)
+  #define SERVICE_DEMAND_START	(3)
+  #define SERVICE_DISABLED	(4)
+   }
+     SERVICE_ERROR_IGNORE = 0;
+     SERVICE_ERROR_NORMAL = 1;
+     SERVICE_ERROR_SEVERE = 2;
+     SERVICE_ERROR_CRITICAL = 3;
+  { CreateTapePartition, WriteTapemark  }
+     TAPE_FIXED_PARTITIONS = 0;
+     TAPE_INITIATOR_PARTITIONS = $2;
+     TAPE_SELECT_PARTITIONS = $1;
+     TAPE_FILEMARKS = $1;
+     TAPE_LONG_FILEMARKS = $3;
+     TAPE_SETMARKS = 0;
+     TAPE_SHORT_FILEMARKS = $2;
+  { CreateWindow  }
+     CW_USEDEFAULT = $80000000;
+     WS_BORDER = $800000;
+     WS_CAPTION = $c00000;
+     WS_CHILD = $40000000;
+     WS_CHILDWINDOW = $40000000;
+     WS_CLIPCHILDREN = $2000000;
+     WS_CLIPSIBLINGS = $4000000;
+     WS_DISABLED = $8000000;
+     WS_DLGFRAME = $400000;
+     WS_GROUP = $20000;
+     WS_HSCROLL = $100000;
+     WS_ICONIC = $20000000;
+     WS_MAXIMIZE = $1000000;
+     WS_MAXIMIZEBOX = $10000;
+     WS_MINIMIZE = $20000000;
+     WS_MINIMIZEBOX = $20000;
+     WS_OVERLAPPED = 0;
+     WS_OVERLAPPEDWINDOW = $cf0000;
+     WS_POPUP = $80000000;
+     WS_POPUPWINDOW = $80880000;
+     WS_SIZEBOX = $40000;
+     WS_SYSMENU = $80000;
+     WS_TABSTOP = $10000;
+     WS_THICKFRAME = $40000;
+     WS_TILED = 0;
+     WS_TILEDWINDOW = $cf0000;
+     WS_VISIBLE = $10000000;
+     WS_VSCROLL = $200000;
+     MDIS_ALLCHILDSTYLES = $1;
+     BS_3STATE = $5;
+     BS_AUTO3STATE = $6;
+     BS_AUTOCHECKBOX = $3;
+     BS_AUTORADIOBUTTON = $9;
+     BS_BITMAP = $80;
+     BS_BOTTOM = $800;
+     BS_CENTER = $300;
+     BS_CHECKBOX = $2;
+     BS_DEFPUSHBUTTON = $1;
+     BS_GROUPBOX = $7;
+     BS_ICON = $40;
+     BS_LEFT = $100;
+     BS_LEFTTEXT = $20;
+     BS_MULTILINE = $2000;
+     BS_NOTIFY = $4000;
+     BS_OWNERDRAW = $b;
+     BS_PUSHBUTTON = 0;
+     BS_PUSHLIKE = $1000;
+     BS_RADIOBUTTON = $4;
+     BS_RIGHT = $200;
+     BS_RIGHTBUTTON = $20;
+     BS_TEXT = 0;
+     BS_TOP = $400;
+     BS_USERBUTTON = $8;
+     BS_VCENTER = $c00;
+     CBS_AUTOHSCROLL = $40;
+     CBS_DISABLENOSCROLL = $800;
+     CBS_DROPDOWN = $2;
+     CBS_DROPDOWNLIST = $3;
+     CBS_HASSTRINGS = $200;
+     CBS_LOWERCASE = $4000;
+     CBS_NOINTEGRALHEIGHT = $400;
+     CBS_OEMCONVERT = $80;
+     CBS_OWNERDRAWFIXED = $10;
+     CBS_OWNERDRAWVARIABLE = $20;
+     CBS_SIMPLE = $1;
+     CBS_SORT = $100;
+     CBS_UPPERCASE = $2000;
+     ES_AUTOHSCROLL = $80;
+     ES_AUTOVSCROLL = $40;
+     ES_CENTER = $1;
+     ES_LEFT = 0;
+     ES_LOWERCASE = $10;
+     ES_MULTILINE = $4;
+     ES_NOHIDESEL = $100;
+     ES_NUMBER = $2000;
+     ES_OEMCONVERT = $400;
+     ES_PASSWORD = $20;
+     ES_READONLY = $800;
+     ES_RIGHT = $2;
+     ES_UPPERCASE = $8;
+     ES_WANTRETURN = $1000;
+     LBS_DISABLENOSCROLL = $1000;
+     LBS_EXTENDEDSEL = $800;
+     LBS_HASSTRINGS = $40;
+     LBS_MULTICOLUMN = $200;
+     LBS_MULTIPLESEL = $8;
+     LBS_NODATA = $2000;
+     LBS_NOINTEGRALHEIGHT = $100;
+     LBS_NOREDRAW = $4;
+     LBS_NOSEL = $4000;
+     LBS_NOTIFY = $1;
+     LBS_OWNERDRAWFIXED = $10;
+     LBS_OWNERDRAWVARIABLE = $20;
+     LBS_SORT = $2;
+     LBS_STANDARD = $a00003;
+     LBS_USETABSTOPS = $80;
+     LBS_WANTKEYBOARDINPUT = $400;
+     SBS_BOTTOMALIGN = $4;
+     SBS_HORZ = 0;
+     SBS_LEFTALIGN = $2;
+     SBS_RIGHTALIGN = $4;
+     SBS_SIZEBOX = $8;
+     SBS_SIZEBOXBOTTOMRIGHTALIGN = $4;
+     SBS_SIZEBOXTOPLEFTALIGN = $2;
+     SBS_SIZEGRIP = $10;
+     SBS_TOPALIGN = $2;
+     SBS_VERT = $1;
+     SS_BITMAP = $e;
+     SS_BLACKFRAME = $7;
+     SS_BLACKRECT = $4;
+     SS_CENTER = $1;
+     SS_CENTERIMAGE = $200;
+     SS_ENHMETAFILE = $f;
+     SS_ETCHEDFRAME = $12;
+     SS_ETCHEDHORZ = $10;
+     SS_ETCHEDVERT = $11;
+     SS_GRAYFRAME = $8;
+     SS_GRAYRECT = $5;
+     SS_ICON = $3;
+     SS_LEFT = 0;
+     SS_LEFTNOWORDWRAP = $c;
+     SS_NOPREFIX = $80;
+     SS_NOTIFY = $100;
+     SS_OWNERDRAW = $d;
+     SS_REALSIZEIMAGE = $800;
+     SS_RIGHT = $2;
+     SS_RIGHTJUST = $400;
+     SS_SIMPLE = $b;
+     SS_SUNKEN = $1000;
+     SS_USERITEM = $a;
+     SS_WHITEFRAME = $9;
+     SS_WHITERECT = $6;
+     DS_3DLOOK = $4;
+     DS_ABSALIGN = $1;
+     DS_CENTER = $800;
+     DS_CENTERMOUSE = $1000;
+     DS_CONTEXTHELP = $2000;
+     DS_CONTROL = $400;
+     DS_FIXEDSYS = $8;
+     DS_LOCALEDIT = $20;
+     DS_MODALFRAME = $80;
+     DS_NOFAILCREATE = $10;
+     DS_NOIDLEMSG = $100;
+     DS_SETFONT = $40;
+     DS_SETFOREGROUND = $200;
+     DS_SYSMODAL = $2;
+  { CreateWindowEx  }
+     WS_EX_ACCEPTFILES = $10;
+     WS_EX_APPWINDOW = $40000;
+     WS_EX_CLIENTEDGE = $200;
+     WS_EX_CONTEXTHELP = $400;
+     WS_EX_CONTROLPARENT = $10000;
+     WS_EX_DLGMODALFRAME = $1;
+     WS_EX_LEFT = 0;
+     WS_EX_LEFTSCROLLBAR = $4000;
+     WS_EX_LTRREADING = 0;
+     WS_EX_MDICHILD = $40;
+     WS_EX_NOPARENTNOTIFY = $4;
+     WS_EX_OVERLAPPEDWINDOW = $300;
+     WS_EX_PALETTEWINDOW = $188;
+     WS_EX_RIGHT = $1000;
+     WS_EX_RIGHTSCROLLBAR = 0;
+     WS_EX_RTLREADING = $2000;
+     WS_EX_STATICEDGE = $20000;
+     WS_EX_TOOLWINDOW = $80;
+     WS_EX_TOPMOST = $8;
+     WS_EX_TRANSPARENT = $20;
+     WS_EX_WINDOWEDGE = $100;
+  { CreateWindowStation  }
+     WINSTA_ACCESSCLIPBOARD = $4;
+     WINSTA_ACCESSGLOBALATOMS = $20;
+     WINSTA_CREATEDESKTOP = $8;
+     WINSTA_ENUMDESKTOPS = $1;
+     WINSTA_ENUMERATE = $100;
+     WINSTA_EXITWINDOWS = $40;
+     WINSTA_READATTRIBUTES = $2;
+     WINSTA_READSCREEN = $200;
+     WINSTA_WRITEATTRIBUTES = $10;
+  { DdeCallback  }
+  { DdeClientTransaction  }
+  { DdeEnableCallback  }
+  { DdeGetLastError  }
+  { DdeInitialize  }
+  { DdeNameService  }
+  { DebugProc  }
+     WH_CALLWNDPROC = 4;
+     WH_CALLWNDPROCRET = 12;
+     WH_CBT = 5;
+     WH_DEBUG = 9;
+     WH_GETMESSAGE = 3;
+     WH_JOURNALPLAYBACK = 1;
+     WH_JOURNALRECORD = 0;
+     WH_KEYBOARD = 2;
+     WH_MOUSE = 7;
+     WH_MSGFILTER = -(1);
+     WH_SHELL = 10;
+     WH_SYSMSGFILTER = 6;
+  { already defined above !!
+  #define WH_MSGFILTER	(-1)  }
+     WH_FOREGROUNDIDLE = 11;
+  { DefineDosDevice  }
+     DDD_RAW_TARGET_PATH = 1;
+     DDD_REMOVE_DEFINITION = 2;
+     DDD_EXACT_MATCH_ON_REMOVE = 4;
+  { DeviceCapbilities  }
+     DC_BINNAMES = 12;
+     DC_BINS = 6;
+     DC_COPIES = 18;
+     DC_DRIVER = 11;
+     DC_DATATYPE_PRODUCED = 21;
+     DC_DUPLEX = 7;
+     DC_EMF_COMPLIANT = 20;
+     DC_ENUMRESOLUTIONS = 13;
+     DC_EXTRA = 9;
+     DC_FIELDS = 1;
+     DC_FILEDEPENDENCIES = 14;
+     DC_MAXEXTENT = 5;
+     DC_MINEXTENT = 4;
+     DC_ORIENTATION = 17;
+     DC_PAPERNAMES = 16;
+     DC_PAPERS = 2;
+     DC_PAPERSIZE = 3;
+     DC_SIZE = 8;
+     DC_TRUETYPE = 15;
+     DCTT_BITMAP = $1;
+     DCTT_DOWNLOAD = $2;
+     DCTT_SUBDEV = $4;
+     DC_VERSION = 10;
+     DC_BINADJUST = 19;
+  { already defined above !!
+  #define DC_DATATYPE_PRODUCED	(21)
+   }
+  { DeviceIoControl  }
+  { DlgDirList  }
+     DDL_ARCHIVE = 32;
+     DDL_DIRECTORY = 16;
+     DDL_DRIVES = 16384;
+     DDL_EXCLUSIVE = 32768;
+     DDL_HIDDEN = 2;
+     DDL_READONLY = 1;
+     DDL_READWRITE = 0;
+     DDL_SYSTEM = 4;
+     DDL_POSTMSGS = 8192;
+  { DllEntryPoint  }
+     DLL_PROCESS_ATTACH = 1;
+     DLL_THREAD_ATTACH = 2;
+     DLL_PROCESS_DETACH = 0;
+     DLL_THREAD_DETACH = 3;
+  { DocumentProperties  }
+     DM_IN_BUFFER = 8;
+     DM_MODIFY = 8;
+     DM_IN_PROMPT = 4;
+     DM_PROMPT = 4;
+     DM_OUT_BUFFER = 2;
+     DM_COPY = 2;
+     DM_UPDATE = 1;
+  { DrawAnimatedRects  }
+     IDANI_OPEN = 1;
+     IDANI_CLOSE = 2;
+  { DrawCaption  }
+     DC_ACTIVE = 1;
+     DC_SMALLCAP = 2;
+  { DrawEdge  }
+     BDR_RAISEDINNER = 4;
+     BDR_SUNKENINNER = 8;
+     BDR_RAISEDOUTER = 1;
+     BDR_SUNKENOUTER = 1;
+     EDGE_BUMP = 9;
+     EDGE_ETCHED = 6;
+     EDGE_RAISED = 5;
+     EDGE_SUNKEN = 10;
+     BF_ADJUST = 8192;
+     BF_BOTTOM = 8;
+     BF_BOTTOMLEFT = 9;
+     BF_BOTTOMRIGHT = 12;
+     BF_DIAGONAL = 16;
+     BF_DIAGONAL_ENDBOTTOMLEFT = 25;
+     BF_DIAGONAL_ENDBOTTOMRIGHT = 28;
+     BF_DIAGONAL_ENDTOPLEFT = 19;
+     BF_DIAGONAL_ENDTOPRIGHT = 22;
+     BF_FLAT = 16384;
+     BF_LEFT = 1;
+     BF_MIDDLE = 2048;
+     BF_MONO = 32768;
+     BF_RECT = 15;
+     BF_RIGHT = 4;
+     BF_SOFT = 4096;
+     BF_TOP = 2;
+     BF_TOPLEFT = 3;
+     BF_TOPRIGHT = 6;
+  { DrawFrameControl  }
+     DFC_BUTTON = 4;
+     DFC_CAPTION = 1;
+     DFC_MENU = 2;
+     DFC_SCROLL = 3;
+     DFCS_BUTTON3STATE = 8;
+     DFCS_BUTTONCHECK = 0;
+     DFCS_BUTTONPUSH = 16;
+     DFCS_BUTTONRADIO = 4;
+     DFCS_BUTTONRADIOIMAGE = 1;
+     DFCS_BUTTONRADIOMASK = 2;
+     DFCS_CAPTIONCLOSE = 0;
+     DFCS_CAPTIONHELP = 4;
+     DFCS_CAPTIONMAX = 2;
+     DFCS_CAPTIONMIN = 1;
+     DFCS_CAPTIONRESTORE = 3;
+     DFCS_MENUARROW = 0;
+     DFCS_MENUBULLET = 2;
+     DFCS_MENUCHECK = 1;
+     DFCS_SCROLLCOMBOBOX = 5;
+     DFCS_SCROLLDOWN = 1;
+     DFCS_SCROLLLEFT = 2;
+     DFCS_SCROLLRIGHT = 3;
+     DFCS_SCROLLSIZEGRIP = 8;
+     DFCS_SCROLLUP = 0;
+     DFCS_ADJUSTRECT = 8192;
+     DFCS_CHECKED = 1024;
+     DFCS_FLAT = 16384;
+     DFCS_INACTIVE = 256;
+     DFCS_MONO = 32768;
+     DFCS_PUSHED = 512;
+  { DrawIconEx  }
+     DI_COMPAT = 4;
+     DI_DEFAULTSIZE = 8;
+     DI_IMAGE = 2;
+     DI_MASK = 1;
+     DI_NORMAL = 3;
+  { DrawState  }
+     DST_BITMAP = 4;
+     DST_COMPLEX = 0;
+     DST_ICON = 3;
+     DST_PREFIXTEXT = 2;
+     DST_TEXT = 1;
+     DSS_NORMAL = 0;
+     DSS_UNION = 16;
+     DSS_DISABLED = 32;
+     DSS_MONO = 128;
+  { DrawStatusText  }
+     SBT_NOBORDERS = 256;
+     SBT_OWNERDRAW = 4096;
+     SBT_POPOUT = 512;
+     SBT_RTLREADING = 1024;
+  { DrawText, DrawTextEx  }
+     DT_BOTTOM = 8;
+     DT_CALCRECT = 1024;
+     DT_CENTER = 1;
+     DT_EDITCONTROL = 8192;
+     DT_END_ELLIPSIS = 32768;
+     DT_PATH_ELLIPSIS = 16384;
+     DT_EXPANDTABS = 64;
+     DT_EXTERNALLEADING = 512;
+     DT_LEFT = 0;
+     DT_MODIFYSTRING = 65536;
+     DT_NOCLIP = 256;
+     DT_NOPREFIX = 2048;
+     DT_RIGHT = 2;
+     DT_RTLREADING = 131072;
+     DT_SINGLELINE = 32;
+     DT_TABSTOP = 128;
+     DT_TOP = 0;
+     DT_VCENTER = 4;
+     DT_WORDBREAK = 16;
+     DT_INTERNAL = 4096;
+  { DuplicateHandle, MapViewOfFile  }
+     DUPLICATE_CLOSE_SOURCE = 1;
+     DUPLICATE_SAME_ACCESS = 2;
+     FILE_MAP_ALL_ACCESS = $f001f;
+     FILE_MAP_READ = 4;
+     FILE_MAP_WRITE = 2;
+     FILE_MAP_COPY = 1;
+     MUTEX_ALL_ACCESS = $1f0001;
+     MUTEX_MODIFY_STATE = 1;
+     SYNCHRONIZE = $100000;
+     SEMAPHORE_ALL_ACCESS = $1f0003;
+     SEMAPHORE_MODIFY_STATE = 2;
+     EVENT_ALL_ACCESS = $1f0003;
+     EVENT_MODIFY_STATE = 2;
+     KEY_ALL_ACCESS = $f003f;
+     KEY_CREATE_LINK = 32;
+     KEY_CREATE_SUB_KEY = 4;
+     KEY_ENUMERATE_SUB_KEYS = 8;
+     KEY_EXECUTE = $20019;
+     KEY_NOTIFY = 16;
+     KEY_QUERY_VALUE = 1;
+     KEY_READ = $20019;
+     KEY_SET_VALUE = 2;
+     KEY_WRITE = $20006;
+     PROCESS_ALL_ACCESS = $1f0fff;
+     PROCESS_CREATE_PROCESS = 128;
+     PROCESS_CREATE_THREAD = 2;
+     PROCESS_DUP_HANDLE = 64;
+     PROCESS_QUERY_INFORMATION = 1024;
+     PROCESS_SET_INFORMATION = 512;
+     PROCESS_TERMINATE = 1;
+     PROCESS_VM_OPERATION = 8;
+     PROCESS_VM_READ = 16;
+     PROCESS_VM_WRITE = 32;
+     THREAD_ALL_ACCESS = $1f03ff;
+     THREAD_DIRECT_IMPERSONATION = 512;
+     THREAD_GET_CONTEXT = 8;
+     THREAD_IMPERSONATE = 256;
+     THREAD_QUERY_INFORMATION = 64;
+     THREAD_SET_CONTEXT = 16;
+     THREAD_SET_INFORMATION = 32;
+     THREAD_SET_THREAD_TOKEN = 128;
+     THREAD_SUSPEND_RESUME = 2;
+     THREAD_TERMINATE = 1;
+  { EditWordBreakProc  }
+     WB_ISDELIMITER = 2;
+     WB_LEFT = 0;
+     WB_RIGHT = 1;
+  { EnableScrollBar  }
+     SB_BOTH = 3;
+     SB_CTL = 2;
+     SB_HORZ = 0;
+     SB_VERT = 1;
+     ESB_DISABLE_BOTH = 3;
+     ESB_DISABLE_DOWN = 2;
+     ESB_DISABLE_LEFT = 1;
+     ESB_DISABLE_LTUP = 1;
+     ESB_DISABLE_RIGHT = 2;
+     ESB_DISABLE_RTDN = 2;
+     ESB_DISABLE_UP = 1;
+     ESB_ENABLE_BOTH = 0;
+  { Scroll Bar notifications }
+     SB_LINEUP = 0;
+     SB_LINEDOWN = 1;
+     SB_LINELEFT = 0;
+     SB_LINERIGHT = 1;
+     SB_PAGEUP = 2;
+     SB_PAGEDOWN = 3;
+     SB_PAGELEFT = 2;
+     SB_PAGERIGHT = 3;
+     SB_THUMBPOSITION = 4;
+     SB_THUMBTRACK = 5;
+     SB_ENDSCROLL = 8;
+     SB_LEFT = 6;
+     SB_RIGHT = 7;
+     SB_BOTTOM = 7;
+     SB_TOP = 6;
+  { EnumCalendarInfo  }
+     ENUM_ALL_CALENDARS = -(1);
+  { EnumDateFormats  }
+     DATE_SHORTDATE = 1;
+     DATE_LONGDATE = 2;
+  { EnumDependentServices  }
+     SERVICE_ACTIVE = 1;
+     SERVICE_INACTIVE = 2;
+  { EnumFontFamExProc  }
+     DEVICE_FONTTYPE = 2;
+     RASTER_FONTTYPE = 1;
+     TRUETYPE_FONTTYPE = 4;
+  { EnumObjects, GetCurrentObject, GetObjectType  }
+     OBJ_BRUSH = 2;
+     OBJ_PEN = 1;
+     OBJ_PAL = 5;
+     OBJ_FONT = 6;
+     OBJ_BITMAP = 7;
+     OBJ_EXTPEN = 11;
+     OBJ_REGION = 8;
+     OBJ_DC = 3;
+     OBJ_MEMDC = 10;
+     OBJ_METAFILE = 9;
+     OBJ_METADC = 4;
+     OBJ_ENHMETAFILE = 13;
+     OBJ_ENHMETADC = 12;
+  { EnumPrinters  }
+  { EnumProtocols  }
+  { EnumResLangProc  }
+    { was #define dname def_expr }
+    function RT_ACCELERATOR : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_BITMAP : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_DIALOG : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_FONT : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_FONTDIR : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_MENU : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_RCDATA : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_STRING : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_MESSAGETABLE : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_CURSOR : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_GROUP_CURSOR : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_ICON : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_GROUP_ICON : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function RT_VERSION : LPTSTR;
+      { return type might be wrong }
+
+  { EnumServicesStatus  }
+
+  const
+     SERVICE_WIN32 = 48;
+     SERVICE_DRIVER = 11;
+  { EnumSystemCodePages  }
+     CP_INSTALLED = 1;
+     CP_SUPPORTED = 2;
+  { EnumSystemLocales  }
+     LCID_INSTALLED = 1;
+     LCID_SUPPORTED = 2;
+  { EraseTape  }
+     TAPE_ERASE_LONG = $1;
+     TAPE_ERASE_SHORT = 0;
+  { Escape  }
+     SP_ERROR = -(1);
+     SP_OUTOFDISK = -(4);
+     SP_OUTOFMEMORY = -(5);
+     SP_USERABORT = -(3);
+     PHYSICALWIDTH = 110;
+     PHYSICALHEIGHT = 111;
+     PHYSICALOFFSETX = 112;
+     PHYSICALOFFSETY = 113;
+     SCALINGFACTORX = 114;
+     SCALINGFACTORY = 115;
+     QUERYESCSUPPORT = 8;
+     {ABORTDOC = 2; conflicts with AbortDoc function }
+     cABORTDOC = 2;
+     {ENDDOC = 11; conflicts with AbortDoc function }
+     cENDDOC = 11;
+     GETPHYSPAGESIZE = 12;
+     GETPRINTINGOFFSET = 13;
+     GETSCALINGFACTOR = 14;
+     NEWFRAME = 1;
+     NEXTBAND = 3;
+     PASSTHROUGH = 19;
+     {SETABORTPROC = 9; conflicts with AbortDoc function }
+     cSETABORTPROC = 9;
+     {STARTDOC = 10; conflicts with AbortDoc function }
+     cSTARTDOC = 10;
+  { EscapeCommFunction  }
+     CLRDTR = 6;
+     CLRRTS = 4;
+     SETDTR = 5;
+     SETRTS = 3;
+     SETXOFF = 1;
+     SETXON = 2;
+     SETBREAK = 8;
+     CLRBREAK = 9;
+  { ExitWindowsEx  }
+     EWX_FORCE = 4;
+     EWX_LOGOFF = 0;
+     EWX_POWEROFF = 8;
+     EWX_REBOOT = 2;
+     EWX_SHUTDOWN = 1;
+  { ExtFloodFill  }
+     FLOODFILLBORDER = 0;
+     FLOODFILLSURFACE = 1;
+  { ExtTextOut  }
+     ETO_CLIPPED = 4;
+     ETO_GLYPH_INDEX = 16;
+     ETO_OPAQUE = 2;
+     ETO_RTLREADING = 128;
+  { FillConsoleOutputAttribute  }
+     FOREGROUND_BLUE = 1;
+     FOREGROUND_GREEN = 2;
+     FOREGROUND_RED = 4;
+     FOREGROUND_INTENSITY = 8;
+     BACKGROUND_BLUE = 16;
+     BACKGROUND_GREEN = 32;
+     BACKGROUND_RED = 64;
+     BACKGROUND_INTENSITY = 128;
+  { FindFirstChangeNotification  }
+     FILE_NOTIFY_CHANGE_FILE_NAME = 1;
+     FILE_NOTIFY_CHANGE_DIR_NAME = 2;
+     FILE_NOTIFY_CHANGE_ATTRIBUTES = 4;
+     FILE_NOTIFY_CHANGE_SIZE = 8;
+     FILE_NOTIFY_CHANGE_LAST_WRITE = 16;
+     FILE_NOTIFY_CHANGE_SECURITY = 256;
+  { FindFirstPrinterChangeNotification  }
+  { FindNextPrinterNotification  }
+  { FMExtensionProc  }
+  { FoldString  }
+     MAP_FOLDCZONE = 16;
+     MAP_FOLDDIGITS = 128;
+     MAP_PRECOMPOSED = 32;
+     MAP_COMPOSITE = 64;
+  { ForegroundIdleProc  }
+     HC_ACTION = 0;
+  { FormatMessage  }
+     FORMAT_MESSAGE_ALLOCATE_BUFFER = 256;
+     FORMAT_MESSAGE_IGNORE_INSERTS = 512;
+     FORMAT_MESSAGE_FROM_STRING = 1024;
+     FORMAT_MESSAGE_FROM_HMODULE = 2048;
+     FORMAT_MESSAGE_FROM_SYSTEM = 4096;
+     FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192;
+     FORMAT_MESSAGE_MAX_WIDTH_MASK = 255;
+  { GdiComment  }
+     GDICOMMENT_WINDOWS_METAFILE = -(2147483647);
+     GDICOMMENT_BEGINGROUP = 2;
+     GDICOMMENT_ENDGROUP = 3;
+     GDICOMMENT_MULTIFORMATS = 1073741828;
+     GDICOMMENT_IDENTIFIER = 1128875079;
+  { GenerateConsoleCtrlEvent, HandlerRoutine  }
+     CTRL_C_EVENT = 0;
+     CTRL_BREAK_EVENT = 1;
+     CTRL_CLOSE_EVENT = 2;
+     CTRL_LOGOFF_EVENT = 5;
+     CTRL_SHUTDOWN_EVENT = 6;
+  { GetAddressByName  }
+  { GetArcDirection  }
+     AD_COUNTERCLOCKWISE = 1;
+     AD_CLOCKWISE = 2;
+  { GetBinaryTypes  }
+     SCS_32BIT_BINARY = 0;
+     SCS_DOS_BINARY = 1;
+     SCS_OS216_BINARY = 5;
+     SCS_PIF_BINARY = 3;
+     SCS_POSIX_BINARY = 4;
+     SCS_WOW_BINARY = 2;
+  { GetBoundsRect, SetBoundsRect  }
+     DCB_DISABLE = 8;
+     DCB_ENABLE = 4;
+     DCB_RESET = 1;
+     DCB_SET = 3;
+     DCB_ACCUMULATE = 2;
+  { GetCharacterPlacement, GetFontLanguageInfo  }
+     GCP_DBCS = 1;
+     GCP_ERROR = $8000;
+     GCP_CLASSIN = $80000;
+     GCP_DIACRITIC = 256;
+     GCP_DISPLAYZWG = $400000;
+     GCP_GLYPHSHAPE = 16;
+     GCP_JUSTIFY = $10000;
+     GCP_JUSTIFYIN = $200000;
+     GCP_KASHIDA = 1024;
+     GCP_LIGATE = 32;
+     GCP_MAXEXTENT = $100000;
+     GCP_NEUTRALOVERRIDE = $2000000;
+     GCP_NUMERICOVERRIDE = $1000000;
+     GCP_NUMERICSLATIN = $4000000;
+     GCP_NUMERICSLOCAL = $8000000;
+     GCP_REORDER = 2;
+     GCP_SYMSWAPOFF = $800000;
+     GCP_USEKERNING = 8;
+     FLI_GLYPHS = $40000;
+     FLI_MASK = $103b;
+  { GetClassLong, GetClassWord  }
+     GCW_ATOM = -(32);
+     GCL_CBCLSEXTRA = -(20);
+     GCL_CBWNDEXTRA = -(18);
+     GCL_HBRBACKGROUND = -(10);
+     GCL_HCURSOR = -(12);
+     GCL_HICON = -(14);
+     GCL_HICONSM = -(34);
+     GCL_HMODULE = -(16);
+     GCL_MENUNAME = -(8);
+     GCL_STYLE = -(26);
+     GCL_WNDPROC = -(24);
+  { GetClipboardFormat, SetClipboardData  }
+     CF_BITMAP = 2;
+     CF_DIB = 8;
+     CF_PALETTE = 9;
+     CF_ENHMETAFILE = 14;
+     CF_METAFILEPICT = 3;
+     CF_OEMTEXT = 7;
+     CF_TEXT = 1;
+     CF_UNICODETEXT = 13;
+     CF_DIF = 5;
+     CF_DSPBITMAP = 130;
+     CF_DSPENHMETAFILE = 142;
+     CF_DSPMETAFILEPICT = 131;
+     CF_DSPTEXT = 129;
+     CF_GDIOBJFIRST = 768;
+     CF_GDIOBJLAST = 1023;
+     CF_HDROP = 15;
+     CF_LOCALE = 16;
+     CF_OWNERDISPLAY = 128;
+     CF_PENDATA = 10;
+     CF_PRIVATEFIRST = 512;
+     CF_PRIVATELAST = 767;
+     CF_RIFF = 11;
+     CF_SYLK = 4;
+     CF_WAVE = 12;
+     CF_TIFF = 6;
+  { GetCommMask  }
+     EV_BREAK = 64;
+     EV_CTS = 8;
+     EV_DSR = 16;
+     EV_ERR = 128;
+     EV_EVENT1 = 2048;
+     EV_EVENT2 = 4096;
+     EV_PERR = 512;
+     EV_RING = 256;
+     EV_RLSD = 32;
+     EV_RX80FULL = 1024;
+     EV_RXCHAR = 1;
+     EV_RXFLAG = 2;
+     EV_TXEMPTY = 4;
+  { GetCommModemStatus  }
+     MS_CTS_ON = $10;
+     MS_DSR_ON = $20;
+     MS_RING_ON = $40;
+     MS_RLSD_ON = $80;
+  { GetComputerName  }
+     MAX_COMPUTERNAME_LENGTH = 15;
+  { GetConsoleMode  }
+     ENABLE_LINE_INPUT = 2;
+     ENABLE_ECHO_INPUT = 4;
+     ENABLE_PROCESSED_INPUT = 1;
+     ENABLE_WINDOW_INPUT = 8;
+     ENABLE_MOUSE_INPUT = 16;
+     ENABLE_PROCESSED_OUTPUT = 1;
+     ENABLE_WRAP_AT_EOL_OUTPUT = 2;
+  { GetCPInfo  }
+     CP_ACP = 0;
+     CP_MACCP = 2;
+     CP_OEMCP = 1;
+  { GetDateFormat  }
+  { already defined above !!
+  #define DATE_SHORTDATE	(1)
+  #define DATE_LONGDATE	(2)
+   }
+     DATE_USE_ALT_CALENDAR = 4;
+  { GetDCEx  }
+     DCX_WINDOW = $1;
+     DCX_CACHE = $2;
+     DCX_PARENTCLIP = $20;
+     DCX_CLIPSIBLINGS = $10;
+     DCX_CLIPCHILDREN = $8;
+     DCX_NORESETATTRS = $4;
+     DCX_LOCKWINDOWUPDATE = $400;
+     DCX_EXCLUDERGN = $40;
+     DCX_INTERSECTRGN = $80;
+     DCX_VALIDATE = $200000;
+  { GetDeviceCaps  }
+     DRIVERVERSION = 0;
+     TECHNOLOGY = 2;
+     DT_PLOTTER = 0;
+     DT_RASDISPLAY = 1;
+     DT_RASPRINTER = 2;
+     DT_RASCAMERA = 3;
+     DT_CHARSTREAM = 4;
+     DT_METAFILE = 5;
+     DT_DISPFILE = 6;
+     HORZSIZE = 4;
+     VERTSIZE = 6;
+     HORZRES = 8;
+     VERTRES = 10;
+     LOGPIXELSX = 88;
+     LOGPIXELSY = 90;
+     BITSPIXEL = 12;
+     PLANES = 14;
+     NUMBRUSHES = 16;
+     NUMPENS = 18;
+     NUMFONTS = 22;
+     NUMCOLORS = 24;
+     ASPECTX = 40;
+     ASPECTY = 42;
+     ASPECTXY = 44;
+     PDEVICESIZE = 26;
+     CLIPCAPS = 36;
+     SIZEPALETTE = 104;
+     NUMRESERVED = 106;
+     COLORRES = 108;
+  { already defined above !!
+  #define PHYSICALWIDTH	(110)
+  #define PHYSICALHEIGHT	(111)
+  #define PHYSICALOFFSETX	(112)
+  #define PHYSICALOFFSETY	(113)
+  #define SCALINGFACTORX	(114)
+  #define SCALINGFACTORY	(115)
+   }
+     VREFRESH = 116;
+     DESKTOPHORZRES = 118;
+     DESKTOPVERTRES = 117;
+     BLTALIGNMENT = 119;
+     RASTERCAPS = 38;
+     RC_BANDING = 2;
+     RC_BITBLT = 1;
+     RC_BITMAP64 = 8;
+     RC_DI_BITMAP = 128;
+     RC_DIBTODEV = 512;
+     RC_FLOODFILL = 4096;
+     RC_GDI20_OUTPUT = 16;
+     RC_PALETTE = 256;
+     RC_SCALING = 4;
+     RC_STRETCHBLT = 2048;
+     RC_STRETCHDIB = 8192;
+     CURVECAPS = 28;
+     CC_NONE = 0;
+     CC_CIRCLES = 1;
+     CC_PIE = 2;
+     CC_CHORD = 4;
+     CC_ELLIPSES = 8;
+     CC_WIDE = 16;
+     CC_STYLED = 32;
+     CC_WIDESTYLED = 64;
+     CC_INTERIORS = 128;
+     CC_ROUNDRECT = 256;
+     LINECAPS = 30;
+     LC_NONE = 0;
+     LC_POLYLINE = 2;
+     LC_MARKER = 4;
+     LC_POLYMARKER = 8;
+     LC_WIDE = 16;
+     LC_STYLED = 32;
+     LC_WIDESTYLED = 64;
+     LC_INTERIORS = 128;
+     POLYGONALCAPS = 32;
+     PC_NONE = 0;
+     PC_POLYGON = 1;
+     PC_RECTANGLE = 2;
+     PC_WINDPOLYGON = 4;
+     PC_SCANLINE = 8;
+     PC_WIDE = 16;
+     PC_STYLED = 32;
+     PC_WIDESTYLED = 64;
+     PC_INTERIORS = 128;
+     TEXTCAPS = 34;
+     TC_OP_CHARACTER = 1;
+     TC_OP_STROKE = 2;
+     TC_CP_STROKE = 4;
+     TC_CR_90 = 8;
+     TC_CR_ANY = 16;
+     TC_SF_X_YINDEP = 32;
+     TC_SA_DOUBLE = 64;
+     TC_SA_INTEGER = 128;
+     TC_SA_CONTIN = 256;
+     TC_EA_DOUBLE = 512;
+     TC_IA_ABLE = 1024;
+     TC_UA_ABLE = 2048;
+     TC_SO_ABLE = 4096;
+     TC_RA_ABLE = 8192;
+     TC_VA_ABLE = 16384;
+     TC_RESERVED = 32768;
+     TC_SCROLLBLT = 65536;
+     PC_PATHS = 512;
+  { GetDriveType  }
+     DRIVE_REMOVABLE = 2;
+     DRIVE_FIXED = 3;
+     DRIVE_REMOTE = 4;
+     DRIVE_CDROM = 5;
+     DRIVE_RAMDISK = 6;
+     DRIVE_UNKNOWN = 0;
+     DRIVE_NO_ROOT_DIR = 1;
+  { GetExceptionCode  }
+     EXCEPTION_ACCESS_VIOLATION = $c0000005;
+     EXCEPTION_BREAKPOINT = $80000003;
+     EXCEPTION_DATATYPE_MISALIGNMENT = $80000002;
+     EXCEPTION_SINGLE_STEP = $80000004;
+     EXCEPTION_ARRAY_BOUNDS_EXCEEDED = $c000008c;
+     EXCEPTION_FLT_DENORMAL_OPERAND = $c000008d;
+     EXCEPTION_FLT_DIVIDE_BY_ZERO = $c000008e;
+     EXCEPTION_FLT_INEXACT_RESULT = $c000008f;
+     EXCEPTION_FLT_INVALID_OPERATION = $c0000090;
+     EXCEPTION_FLT_OVERFLOW = $c0000091;
+     EXCEPTION_FLT_STACK_CHECK = $c0000092;
+     EXCEPTION_FLT_UNDERFLOW = $c0000093;
+     EXCEPTION_INT_DIVIDE_BY_ZERO = $c0000094;
+     EXCEPTION_INT_OVERFLOW = $c0000095;
+     EXCEPTION_INVALID_HANDLE = $c0000008;
+     EXCEPTION_PRIV_INSTRUCTION = $c0000096;
+     EXCEPTION_NONCONTINUABLE_EXCEPTION = $c0000025;
+     EXCEPTION_NONCONTINUABLE = $1;
+     EXCEPTION_STACK_OVERFLOW = $c00000fd;
+     EXCEPTION_INVALID_DISPOSITION = $c0000026;
+  { GetFileType  }
+     FILE_TYPE_UNKNOWN = 0;
+     FILE_TYPE_DISK = 1;
+     FILE_TYPE_CHAR = 2;
+     FILE_TYPE_PIPE = 3;
+  { GetGlyphOutline  }
+     GGO_BITMAP = 1;
+     GGO_NATIVE = 2;
+     GGO_METRICS = 0;
+     GGO_GRAY2_BITMAP = 4;
+     GGO_GRAY4_BITMAP = 5;
+     GGO_GRAY8_BITMAP = 6;
+     GDI_ERROR = $ffffffff;
+  { GetGraphicsMode  }
+     GM_COMPATIBLE = 1;
+     GM_ADVANCED = 2;
+  { GetHandleInformation  }
+     HANDLE_FLAG_INHERIT = 1;
+     HANDLE_FLAG_PROTECT_FROM_CLOSE = 2;
+  { GetIconInfo  }
+    { was #define dname def_expr }
+    function IDC_ARROW : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_IBEAM : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_WAIT : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_CROSS : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_UPARROW : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_SIZENWSE : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_SIZENESW : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_SIZEWE : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_SIZENS : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_SIZEALL : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_NO : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_APPSTARTING : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_HELP : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDI_APPLICATION : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDI_HAND : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDI_QUESTION : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDI_EXCLAMATION : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDI_ASTERISK : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDI_WINLOGO : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_SIZE : LPTSTR;
+      { return type might be wrong }
+
+    { was #define dname def_expr }
+    function IDC_ICON : LPTSTR;
+      { return type might be wrong }
+
+  { GetMapMode  }
+
+  const
+     MM_ANISOTROPIC = 8;
+     MM_HIENGLISH = 5;
+     MM_HIMETRIC = 3;
+     MM_ISOTROPIC = 7;
+     MM_LOENGLISH = 4;
+     MM_LOMETRIC = 2;
+     MM_TEXT = 1;
+     MM_TWIPS = 6;
+  { GetMenuDefaultItem  }
+     GMDI_GOINTOPOPUPS = $2;
+     GMDI_USEDISABLED = $1;
+  { PeekMessage  }
+     PM_NOREMOVE = 0;
+     PM_REMOVE = 1;
+     PM_NOYIELD = 2;
+  { GetNamedPipeHandleState  }
+  {   PIPE_NOWAIT = 1; already above }
+  {   PIPE_READMODE_MESSAGE = 2;already above }
+  { GetNamedPipeInfo  }
+     PIPE_CLIENT_END = 0;
+     PIPE_SERVER_END = 1;
+  {   PIPE_TYPE_MESSAGE = 4;already above }
+  { GetNextWindow, GetWindow  }
+     GW_HWNDNEXT = 2;
+     GW_HWNDPREV = 3;
+     GW_CHILD = 5;
+     GW_HWNDFIRST = 0;
+     GW_HWNDLAST = 1;
+     GW_OWNER = 4;
+  { GetPath  }
+     PT_MOVETO = 6;
+     PT_LINETO = 2;
+     PT_BEZIERTO = 4;
+     PT_CLOSEFIGURE = 1;
+  { GetProcessShutdownParameters  }
+     SHUTDOWN_NORETRY = 1;
+  { GetQueueStatus  }
+     QS_ALLEVENTS = 191;
+     QS_ALLINPUT = 255;
+     QS_HOTKEY = 128;
+     QS_INPUT = 7;
+     QS_KEY = 1;
+     QS_MOUSE = 6;
+     QS_MOUSEBUTTON = 4;
+     QS_MOUSEMOVE = 2;
+     QS_PAINT = 32;
+     QS_POSTMESSAGE = 8;
+     QS_SENDMESSAGE = 64;
+     QS_TIMER = 16;
+  { GetScrollInfo, SetScrollInfo  }
+     SIF_ALL = 23;
+     SIF_PAGE = 2;
+     SIF_POS = 4;
+     SIF_RANGE = 1;
+     SIF_DISABLENOSCROLL = 8;
+  { GetStdHandle  }
+    { was #define dname def_expr }
+    function STD_INPUT_HANDLE : DWORD;
+
+    { was #define dname def_expr }
+    function STD_OUTPUT_HANDLE : DWORD;
+
+    { was #define dname def_expr }
+    function STD_ERROR_HANDLE : DWORD;
+
+    { was #define dname def_expr }
+    function INVALID_HANDLE_VALUE : HANDLE;
+
+  { GetStockObject  }
+
+  const
+     BLACK_BRUSH = 4;
+     DKGRAY_BRUSH = 3;
+     GRAY_BRUSH = 2;
+     HOLLOW_BRUSH = 5;
+     LTGRAY_BRUSH = 1;
+     NULL_BRUSH = 5;
+     WHITE_BRUSH = 0;
+     BLACK_PEN = 7;
+     NULL_PEN = 8;
+     WHITE_PEN = 6;
+     ANSI_FIXED_FONT = 11;
+     ANSI_VAR_FONT = 12;
+     DEVICE_DEFAULT_FONT = 14;
+     DEFAULT_GUI_FONT = 17;
+     OEM_FIXED_FONT = 10;
+     SYSTEM_FONT = 13;
+     SYSTEM_FIXED_FONT = 16;
+     DEFAULT_PALETTE = 15;
+  { GetStringTypeA  }
+     CT_CTYPE1 = 1;
+     CT_CTYPE2 = 2;
+     CT_CTYPE3 = 4;
+     C1_UPPER = 1;
+     C1_LOWER = 2;
+     C1_DIGIT = 4;
+     C1_SPACE = 8;
+     C1_PUNCT = 16;
+     C1_CNTRL = 32;
+     C1_BLANK = 64;
+     C1_XDIGIT = 128;
+     C1_ALPHA = 256;
+     C2_LEFTTORIGHT = 1;
+     C2_RIGHTTOLEFT = 2;
+     C2_EUROPENUMBER = 3;
+     C2_EUROPESEPARATOR = 4;
+     C2_EUROPETERMINATOR = 5;
+     C2_ARABICNUMBER = 6;
+     C2_COMMONSEPARATOR = 7;
+     C2_BLOCKSEPARATOR = 8;
+     C2_SEGMENTSEPARATOR = 9;
+     C2_WHITESPACE = 10;
+     C2_OTHERNEUTRAL = 11;
+     C2_NOTAPPLICABLE = 0;
+     C3_NONSPACING = 1;
+     C3_DIACRITIC = 2;
+     C3_VOWELMARK = 4;
+     C3_SYMBOL = 8;
+     C3_KATAKANA = 16;
+     C3_HIRAGANA = 32;
+     C3_HALFWIDTH = 64;
+     C3_FULLWIDTH = 128;
+     C3_IDEOGRAPH = 256;
+     C3_KASHIDA = 512;
+     C3_ALPHA = 32768;
+     C3_NOTAPPLICABLE = 0;
+  { GetSysColor  }
+     COLOR_3DDKSHADOW = 21;
+     COLOR_3DFACE = 15;
+     COLOR_3DHILIGHT = 20;
+     COLOR_3DLIGHT = 22;
+     COLOR_BTNHILIGHT = 20;
+     COLOR_3DSHADOW = 16;
+     COLOR_ACTIVEBORDER = 10;
+     COLOR_ACTIVECAPTION = 2;
+     COLOR_APPWORKSPACE = 12;
+     COLOR_BACKGROUND = 1;
+     COLOR_DESKTOP = 1;
+     COLOR_BTNFACE = 15;
+     COLOR_BTNHIGHLIGHT = 20;
+     COLOR_BTNSHADOW = 16;
+     COLOR_BTNTEXT = 18;
+     COLOR_CAPTIONTEXT = 9;
+     COLOR_GRAYTEXT = 17;
+     COLOR_HIGHLIGHT = 13;
+     COLOR_HIGHLIGHTTEXT = 14;
+     COLOR_INACTIVEBORDER = 11;
+     COLOR_INACTIVECAPTION = 3;
+     COLOR_INACTIVECAPTIONTEXT = 19;
+     COLOR_INFOBK = 24;
+     COLOR_INFOTEXT = 23;
+     COLOR_MENU = 4;
+     COLOR_MENUTEXT = 7;
+     COLOR_SCROLLBAR = 0;
+     COLOR_WINDOW = 5;
+     COLOR_WINDOWFRAME = 6;
+     COLOR_WINDOWTEXT = 8;
+  { GetSystemMetrics  }
+     SM_CYMIN = 29;
+     SM_CXMIN = 28;
+     SM_ARRANGE = 56;
+     SM_CLEANBOOT = 67;
+  { The right value for SM_CEMETRICS for NT 3.5 is 75.  For Windows 95
+     and NT 4.0, it is 76.  The meaning is undocumented, anyhow.   }
+     SM_CMETRICS = 76;
+     SM_CMOUSEBUTTONS = 43;
+     SM_CXBORDER = 5;
+     SM_CYBORDER = 6;
+     SM_CXCURSOR = 13;
+     SM_CYCURSOR = 14;
+     SM_CXDLGFRAME = 7;
+     SM_CYDLGFRAME = 8;
+     SM_CXDOUBLECLK = 36;
+     SM_CYDOUBLECLK = 37;
+     SM_CXDRAG = 68;
+     SM_CYDRAG = 69;
+     SM_CXEDGE = 45;
+     SM_CYEDGE = 46;
+     SM_CXFIXEDFRAME = 7;
+     SM_CYFIXEDFRAME = 8;
+     SM_CXFRAME = 32;
+     SM_CYFRAME = 33;
+     SM_CXFULLSCREEN = 16;
+     SM_CYFULLSCREEN = 17;
+     SM_CXHSCROLL = 21;
+     SM_CYHSCROLL = 3;
+     SM_CXHTHUMB = 10;
+     SM_CXICON = 11;
+     SM_CYICON = 12;
+     SM_CXICONSPACING = 38;
+     SM_CYICONSPACING = 39;
+     SM_CXMAXIMIZED = 61;
+     SM_CYMAXIMIZED = 62;
+     SM_CXMAXTRACK = 59;
+     SM_CYMAXTRACK = 60;
+     SM_CXMENUCHECK = 71;
+     SM_CYMENUCHECK = 72;
+     SM_CXMENUSIZE = 54;
+     SM_CYMENUSIZE = 55;
+     SM_CXMINIMIZED = 57;
+     SM_CYMINIMIZED = 58;
+     SM_CXMINSPACING = 47;
+     SM_CYMINSPACING = 48;
+     SM_CXMINTRACK = 34;
+     SM_CYMINTRACK = 35;
+     SM_CXSCREEN = 0;
+     SM_CYSCREEN = 1;
+     SM_CXSIZE = 30;
+     SM_CYSIZE = 31;
+     SM_CXSIZEFRAME = 32;
+     SM_CYSIZEFRAME = 33;
+     SM_CXSMICON = 49;
+     SM_CYSMICON = 50;
+     SM_CXSMSIZE = 52;
+     SM_CYSMSIZE = 53;
+     SM_CXVSCROLL = 2;
+     {SM_CYHSCROLL = 3;already above }
+     {SM_CXHSCROLL = 21;already above }
+     SM_CYVSCROLL = 20;
+     SM_CYVTHUMB = 9;
+     SM_CYCAPTION = 4;
+     SM_CYKANJIWINDOW = 18;
+     SM_CYMENU = 15;
+     SM_CYSMCAPTION = 51;
+     SM_DBCSENABLED = 42;
+     SM_DEBUG = 22;
+     SM_MENUDROPALIGNMENT = 40;
+     SM_MIDEASTENABLED = 74;
+     SM_MOUSEPRESENT = 19;
+     SM_MOUSEWHEELPRESENT = 75;
+     SM_NETWORK = 63;
+     SM_PENWINDOWS = 41;
+     SM_SECURE = 44;
+     SM_SHOWSOUNDS = 70;
+     SM_SLOWMACHINE = 73;
+     SM_SWAPBUTTON = 23;
+     ARW_BOTTOMLEFT = 0;
+     ARW_BOTTOMRIGHT = $1;
+     ARW_HIDE = $8;
+     ARW_TOPLEFT = $2;
+     ARW_TOPRIGHT = $3;
+     ARW_DOWN = $4;
+     ARW_LEFT = 0;
+     ARW_RIGHT = 0;
+     ARW_UP = $4;
+  { GetSystemPaletteUse  }
+     SYSPAL_NOSTATIC = 2;
+     SYSPAL_STATIC = 1;
+     SYSPAL_ERROR = 0;
+  { GetTapeParameters, SetTapeParameters  }
+     GET_TAPE_MEDIA_INFORMATION = 0;
+     GET_TAPE_DRIVE_INFORMATION = 1;
+     SET_TAPE_MEDIA_INFORMATION = 0;
+     SET_TAPE_DRIVE_INFORMATION = 1;
+  { GetTapePosition  }
+     TAPE_ABSOLUTE_POSITION = 0;
+     TAPE_LOGICAL_POSITION = $1;
+  { GetTextAlign  }
+     TA_BASELINE = 24;
+     TA_BOTTOM = 8;
+     TA_TOP = 0;
+     TA_CENTER = 6;
+     TA_LEFT = 0;
+     TA_RIGHT = 2;
+     TA_RTLREADING = 256;
+     TA_NOUPDATECP = 0;
+     TA_UPDATECP = 1;
+     VTA_BASELINE = 24;
+     VTA_CENTER = 6;
+  { GetThreadPriority  }
+     THREAD_PRIORITY_ABOVE_NORMAL = 1;
+     THREAD_PRIORITY_BELOW_NORMAL = -(1);
+     THREAD_PRIORITY_HIGHEST = 2;
+     THREAD_PRIORITY_IDLE = -(15);
+     THREAD_PRIORITY_LOWEST = -(2);
+     THREAD_PRIORITY_NORMAL = 0;
+     THREAD_PRIORITY_TIME_CRITICAL = 15;
+     THREAD_PRIORITY_ERROR_RETURN = 2147483647;
+     TLS_MINIMUM_AVAILABLE = 64;
+  { GetTimeFormat  }
+     TIME_NOMINUTESORSECONDS = 1;
+     TIME_NOSECONDS = 2;
+     TIME_NOTIMEMARKER = 4;
+     TIME_FORCE24HOURFORMAT = 8;
+  { GetTimeZoneInformation  }
+    { was #define dname def_expr }
+    function TIME_ZONE_ID_INVALID : DWORD;
+
+
+  const
+     TIME_ZONE_ID_UNKNOWN = 0;
+     TIME_ZONE_ID_STANDARD = 1;
+     TIME_ZONE_ID_DAYLIGHT = 2;
+  { GetUserObjectInformation  }
+     UOI_FLAGS = 1;
+     UOI_NAME = 2;
+     UOI_TYPE = 3;
+  { GetVolumeInformation  }
+     FS_CASE_IS_PRESERVED = 2;
+     FS_CASE_SENSITIVE = 1;
+     FS_UNICODE_STORED_ON_DISK = 4;
+     FS_PERSISTENT_ACLS = 8;
+     FS_FILE_COMPRESSION = 16;
+     FS_VOL_IS_COMPRESSED = 32768;
+  { GetWindowLong  }
+     GWL_EXSTYLE = -(20);
+     GWL_STYLE = -(16);
+     GWL_WNDPROC = -(4);
+     GWL_HINSTANCE = -(6);
+     GWL_HWNDPARENT = -(8);
+     GWL_ID = -(12);
+     GWL_USERDATA = -(21);
+     DWL_DLGPROC = 4;
+     DWL_MSGRESULT = 0;
+     DWL_USER = 8;
+  { GlobalAlloc, GlobalFlags  }
+     GMEM_FIXED = 0;
+     GMEM_MOVEABLE = 2;
+     GPTR = 64;
+     GHND = 66;
+     GMEM_DDESHARE = 8192;
+     GMEM_DISCARDABLE = 256;
+     GMEM_LOWER = 4096;
+     GMEM_NOCOMPACT = 16;
+     GMEM_NODISCARD = 32;
+     GMEM_NOT_BANKED = 4096;
+     GMEM_NOTIFY = 16384;
+     GMEM_SHARE = 8192;
+     GMEM_ZEROINIT = 64;
+     GMEM_DISCARDED = 16384;
+     GMEM_INVALID_HANDLE = 32768;
+     GMEM_LOCKCOUNT = 255;
+  { HeapAlloc, HeapReAlloc  }
+     HEAP_GENERATE_EXCEPTIONS = 4;
+     HEAP_NO_SERIALIZE = 1;
+     HEAP_ZERO_MEMORY = 8;
+     STATUS_NO_MEMORY = $c0000017;
+     STATUS_ACCESS_VIOLATION = $c0000005;
+     HEAP_REALLOC_IN_PLACE_ONLY = 16;
+  { ImageList_Create  }
+     ILC_COLOR = 0;
+     ILC_COLOR4 = 4;
+     ILC_COLOR8 = 8;
+     ILC_COLOR16 = 16;
+     ILC_COLOR24 = 24;
+     ILC_COLOR32 = 32;
+     ILC_COLORDDB = 254;
+     ILC_MASK = 1;
+     ILC_PALETTE = 2048;
+  { ImageList_Draw, ImageList_DrawEx  }
+     ILD_BLEND25 = 2;
+     ILD_BLEND50 = 4;
+     ILD_SELECTED = 4;
+     ILD_BLEND = 4;
+     ILD_FOCUS = 2;
+     ILD_MASK = 16;
+     ILD_NORMAL = 0;
+     ILD_TRANSPARENT = 1;
+     CLR_NONE = $ffffffff;
+     CLR_DEFAULT = $ff000000;
+  { ImageList_LoadImage  }
+     {LR_DEFAULTCOLOR = 0;already above }
+     LR_LOADFROMFILE = 16;
+     LR_LOADMAP3DCOLORS = 4096;
+     LR_LOADTRANSPARENT = 32;
+     {LR_MONOCHROME = 1;already above }
+  { ImmConfigureIME  }
+     IME_CONFIG_GENERAL = 1;
+     IME_CONFIG_REGISTERWORD = 2;
+     IME_CONFIG_SELECTDICTIONARY = 3;
+  { ImmGetConversionList  }
+     GCL_CONVERSION = 1;
+     GCL_REVERSECONVERSION = 2;
+     GCL_REVERSE_LENGTH = 3;
+  { ImmGetGuideLine  }
+     GGL_LEVEL = 1;
+     GGL_INDEX = 2;
+     GGL_STRING = 3;
+     GGL_PRIVATE = 4;
+     GL_LEVEL_ERROR = 2;
+     GL_LEVEL_FATAL = 1;
+     GL_LEVEL_INFORMATION = 4;
+     GL_LEVEL_NOGUIDELINE = 0;
+     GL_LEVEL_WARNING = 3;
+     GL_ID_CANNOTSAVE = 17;
+     GL_ID_NOCONVERT = 32;
+     GL_ID_NODICTIONARY = 16;
+     GL_ID_NOMODULE = 1;
+     GL_ID_READINGCONFLICT = 35;
+     GL_ID_TOOMANYSTROKE = 34;
+     GL_ID_TYPINGERROR = 33;
+     GL_ID_UNKNOWN = 0;
+     GL_ID_INPUTREADING = 36;
+     GL_ID_INPUTRADICAL = 37;
+     GL_ID_INPUTCODE = 38;
+     GL_ID_CHOOSECANDIDATE = 40;
+     GL_ID_REVERSECONVERSION = 41;
+  { ImmGetProperty  }
+     IGP_PROPERTY = 4;
+     IGP_CONVERSION = 8;
+     IGP_SENTENCE = 12;
+     IGP_UI = 16;
+     IGP_SETCOMPSTR = 20;
+     IGP_SELECT = 24;
+     IME_PROP_AT_CARET = 65536;
+     IME_PROP_SPECIAL_UI = 131072;
+     IME_PROP_CANDLIST_START_FROM_1 = 262144;
+     IME_PROP_UNICODE = 524288;
+     UI_CAP_2700 = 1;
+     UI_CAP_ROT90 = 2;
+     UI_CAP_ROTANY = 4;
+     SCS_CAP_COMPSTR = 1;
+     SCS_CAP_MAKEREAD = 2;
+     SELECT_CAP_CONVERSION = 1;
+     SELECT_CAP_SENTENCE = 2;
+  { ImmNotifyIME  }
+     NI_CHANGECANDIDATELIST = 19;
+     NI_CLOSECANDIDATE = 17;
+     NI_COMPOSITIONSTR = 21;
+     NI_OPENCANDIDATE = 16;
+     NI_SELECTCANDIDATESTR = 18;
+     NI_SETCANDIDATE_PAGESIZE = 23;
+     NI_SETCANDIDATE_PAGESTART = 22;
+     CPS_CANCEL = 4;
+     CPS_COMPLETE = 1;
+     CPS_CONVERT = 2;
+     CPS_REVERT = 3;
+  { ImmSetCompositionString  }
+     SCS_SETSTR = 9;
+     SCS_CHANGEATTR = 18;
+     SCS_CHANGECLAUSE = 36;
+  { ImmUnregisterWord  }
+     IME_REGWORD_STYLE_EUDC = 1;
+     IME_REGWORD_STYLE_USER_FIRST = $80000000;
+     IME_REGWORD_STYLE_USER_LAST = -(1);
+  { InitializeSecurityDescriptor  }
+     SECURITY_DESCRIPTOR_REVISION = 1;
+  { IsTextUnicode  }
+     IS_TEXT_UNICODE_ASCII16 = 1;
+     IS_TEXT_UNICODE_REVERSE_ASCII16 = 16;
+     IS_TEXT_UNICODE_STATISTICS = 2;
+     IS_TEXT_UNICODE_REVERSE_STATISTICS = 32;
+     IS_TEXT_UNICODE_CONTROLS = 4;
+     IS_TEXT_UNICODE_REVERSE_CONTROLS = 64;
+     IS_TEXT_UNICODE_SIGNATURE = 8;
+     IS_TEXT_UNICODE_REVERSE_SIGNATURE = 128;
+     IS_TEXT_UNICODE_ILLEGAL_CHARS = 256;
+     IS_TEXT_UNICODE_ODD_LENGTH = 512;
+     IS_TEXT_UNICODE_NULL_BYTES = 4096;
+     IS_TEXT_UNICODE_UNICODE_MASK = 15;
+     IS_TEXT_UNICODE_REVERSE_MASK = 240;
+     IS_TEXT_UNICODE_NOT_UNICODE_MASK = 3840;
+     IS_TEXT_UNICODE_NOT_ASCII_MASK = 61440;
+  { JournalPlaybackProc, KeyboardProc  }
+     HC_GETNEXT = 1;
+     HC_SKIP = 2;
+     HC_SYSMODALOFF = 5;
+     HC_SYSMODALON = 4;
+     HC_NOREMOVE = 3;
+  { keybd_event  }
+     KEYEVENTF_EXTENDEDKEY = 1;
+     KEYEVENTF_KEYUP = 2;
+  { LoadBitmap  }
+     OBM_BTNCORNERS = 32758;
+     OBM_BTSIZE = 32761;
+     OBM_CHECK = 32760;
+     OBM_CHECKBOXES = 32759;
+     OBM_CLOSE = 32754;
+     OBM_COMBO = 32738;
+     OBM_DNARROW = 32752;
+     OBM_DNARROWD = 32742;
+     OBM_DNARROWI = 32736;
+     OBM_LFARROW = 32750;
+     OBM_LFARROWI = 32734;
+     OBM_LFARROWD = 32740;
+     OBM_MNARROW = 32739;
+     OBM_OLD_CLOSE = 32767;
+     OBM_OLD_DNARROW = 32764;
+     OBM_OLD_LFARROW = 32762;
+     OBM_OLD_REDUCE = 32757;
+     OBM_OLD_RESTORE = 32755;
+     OBM_OLD_RGARROW = 32763;
+     OBM_OLD_UPARROW = 32765;
+     OBM_OLD_ZOOM = 32756;
+     OBM_REDUCE = 32749;
+     OBM_REDUCED = 32746;
+     OBM_RESTORE = 32747;
+     OBM_RESTORED = 32744;
+     OBM_RGARROW = 32751;
+     OBM_RGARROWD = 32741;
+     OBM_RGARROWI = 32735;
+     OBM_SIZE = 32766;
+     OBM_UPARROW = 32753;
+     OBM_UPARROWD = 32743;
+     OBM_UPARROWI = 32737;
+     OBM_ZOOM = 32748;
+     OBM_ZOOMD = 32745;
+  { LoadLibraryEx  }
+     DONT_RESOLVE_DLL_REFERENCES = 1;
+     LOAD_LIBRARY_AS_DATAFILE = 2;
+     LOAD_WITH_ALTERED_SEARCH_PATH = 8;
+  { LocalAlloc, LocalFlags  }
+     LPTR = 64;
+     LHND = 66;
+     NONZEROLHND = 2;
+     NONZEROLPTR = 0;
+     LMEM_NONZEROLHND = 2;
+     LMEM_NONZEROLPTR = 0;
+     LMEM_FIXED = 0;
+     LMEM_MOVEABLE = 2;
+     LMEM_NOCOMPACT = 16;
+     LMEM_NODISCARD = 32;
+     LMEM_ZEROINIT = 64;
+     LMEM_MODIFY = 128;
+     LMEM_LOCKCOUNT = 255;
+     LMEM_DISCARDABLE = 3840;
+     LMEM_DISCARDED = 16384;
+     LMEM_INVALID_HANDLE = 32768;
+  { LockFileEx  }
+     LOCKFILE_FAIL_IMMEDIATELY = 1;
+     LOCKFILE_EXCLUSIVE_LOCK = 2;
+  { LogonUser  }
+  { LZCopy, LZInit, LZRead  }
+  { MessageBeep, MessageBox  }
+     MB_USERICON = $80;
+     MB_ICONASTERISK = $40;
+     MB_ICONEXCLAMATION = $30;
+     MB_ICONWARNING = $30;
+     MB_ICONERROR = $10;
+     MB_ICONHAND = $10;
+     MB_ICONQUESTION = $20;
+     MB_OK = 0;
+     MB_ABORTRETRYIGNORE = $2;
+     MB_APPLMODAL = 0;
+     MB_DEFAULT_DESKTOP_ONLY = $20000;
+     MB_HELP = $4000;
+     MB_RIGHT = $80000;
+     MB_RTLREADING = $100000;
+     MB_TOPMOST = $40000;
+     MB_DEFBUTTON1 = 0;
+     MB_DEFBUTTON2 = $100;
+     MB_DEFBUTTON3 = $200;
+     MB_DEFBUTTON4 = $300;
+     MB_ICONINFORMATION = $40;
+     MB_ICONSTOP = $10;
+     MB_OKCANCEL = $1;
+     MB_RETRYCANCEL = $5;
+     MB_SERVICE_NOTIFICATION = $40000;
+     MB_SETFOREGROUND = $10000;
+     MB_SYSTEMMODAL = $1000;
+     MB_TASKMODAL = $2000;
+     MB_YESNO = $4;
+     MB_YESNOCANCEL = $3;
+     IDABORT = 3;
+     IDCANCEL = 2;
+     IDCLOSE = 8;
+     IDHELP = 9;
+     IDIGNORE = 5;
+     IDNO = 7;
+     IDOK = 1;
+     IDRETRY = 4;
+     IDYES = 6;
+  { MessageProc  }
+     MSGF_DIALOGBOX = 0;
+     MSGF_MENU = 2;
+     MSGF_NEXTWINDOW = 6;
+     MSGF_SCROLLBAR = 5;
+     MSGF_MAINLOOP = 8;
+     MSGF_USER = 4096;
+  { ModifyWorldTransform  }
+     MWT_IDENTITY = 1;
+     MWT_LEFTMULTIPLY = 2;
+     MWT_RIGHTMULTIPLY = 3;
+  { mouse_event  }
+     MOUSEEVENTF_ABSOLUTE = 32768;
+     MOUSEEVENTF_MOVE = 1;
+     MOUSEEVENTF_LEFTDOWN = 2;
+     MOUSEEVENTF_LEFTUP = 4;
+     MOUSEEVENTF_RIGHTDOWN = 8;
+     MOUSEEVENTF_RIGHTUP = 16;
+     MOUSEEVENTF_MIDDLEDOWN = 32;
+     MOUSEEVENTF_MIDDLEUP = 64;
+  { MoveFileEx  }
+     MOVEFILE_REPLACE_EXISTING = 1;
+     MOVEFILE_COPY_ALLOWED = 2;
+     MOVEFILE_DELAY_UNTIL_REBOOT = 4;
+  { MsgWaitForMultipleObjects, WaitForMultipleObjectsEx  }
+     WAIT_OBJECT_0 = 0;
+     WAIT_ABANDONED_0 = $80;
+     WAIT_TIMEOUT = $102;
+     WAIT_IO_COMPLETION = $c0;
+     WAIT_ABANDONED = $80;
+     WAIT_FAILED = $ffffffff;
+     MAXIMUM_WAIT_OBJECTS = $40;
+     MAXIMUM_SUSPEND_COUNT = $7f;
+  { MultiByteToWideChar  }
+     MB_PRECOMPOSED = 1;
+     MB_COMPOSITE = 2;
+     MB_ERR_INVALID_CHARS = 8;
+     MB_USEGLYPHCHARS = 4;
+  { NDdeSetTrustedShare  }
+  { NetAccessCheck  }
+  { NetServerEnum  }
+  { NetServiceControl  }
+  { NetUserEnum  }
+  { OpenProcessToken  }
+     TOKEN_ADJUST_DEFAULT = 128;
+     TOKEN_ADJUST_GROUPS = 64;
+     TOKEN_ADJUST_PRIVILEGES = 32;
+     TOKEN_ALL_ACCESS = $f00ff;
+     TOKEN_ASSIGN_PRIMARY = 1;
+     TOKEN_DUPLICATE = 2;
+     TOKEN_EXECUTE = $20000;
+     TOKEN_IMPERSONATE = 4;
+     TOKEN_QUERY = 8;
+     TOKEN_QUERY_SOURCE = 16;
+     TOKEN_READ = $20008;
+     TOKEN_WRITE = $200e0;
+  { OpenSCManager  }
+     SC_MANAGER_ALL_ACCESS = $f003f;
+     SC_MANAGER_CONNECT = 1;
+     SC_MANAGER_CREATE_SERVICE = 2;
+     SC_MANAGER_ENUMERATE_SERVICE = 4;
+     SC_MANAGER_LOCK = 8;
+     SC_MANAGER_QUERY_LOCK_STATUS = 16;
+     SC_MANAGER_MODIFY_BOOT_CONFIG = 32;
+  { PostMessage  }
+    { was #define dname def_expr }
+    function HWND_BROADCAST : HWND;
+
+  { PrepareTape  }
+
+  const
+     TAPE_FORMAT = $5;
+     TAPE_LOAD = 0;
+     TAPE_LOCK = $3;
+     TAPE_TENSION = $2;
+     TAPE_UNLOAD = $1;
+     TAPE_UNLOCK = $4;
+  { PropertySheet  }
+     IS_PSREBOOTSYSTEM = 3;
+     IS_PSRESTARTWINDOWS = 2;
+  { PropSheetPageProc  }
+     PSPCB_CREATE = 2;
+     PSPCB_RELEASE = 1;
+  { PurgeComm  }
+     PURGE_TXABORT = 1;
+     PURGE_RXABORT = 2;
+     PURGE_TXCLEAR = 4;
+     PURGE_RXCLEAR = 8;
+  { QueryServiceObjectSecurity  }
+     OWNER_SECURITY_INFORMATION = $1;
+     GROUP_SECURITY_INFORMATION = $2;
+     DACL_SECURITY_INFORMATION = $4;
+     SACL_SECURITY_INFORMATION = $8;
+  { ReadEventLog, ReportEvent  }
+     EVENTLOG_FORWARDS_READ = 4;
+     EVENTLOG_BACKWARDS_READ = 8;
+     EVENTLOG_SEEK_READ = 2;
+     EVENTLOG_SEQUENTIAL_READ = 1;
+     EVENTLOG_ERROR_TYPE = 1;
+     EVENTLOG_WARNING_TYPE = 2;
+     EVENTLOG_INFORMATION_TYPE = 4;
+     EVENTLOG_AUDIT_SUCCESS = 8;
+     EVENTLOG_AUDIT_FAILURE = 16;
+  { RedrawWindow  }
+     RDW_ERASE = 4;
+     RDW_FRAME = 1024;
+     RDW_INTERNALPAINT = 2;
+     RDW_INVALIDATE = 1;
+     RDW_NOERASE = 32;
+     RDW_NOFRAME = 2048;
+     RDW_NOINTERNALPAINT = 16;
+     RDW_VALIDATE = 8;
+     RDW_ERASENOW = 512;
+     RDW_UPDATENOW = 256;
+     RDW_ALLCHILDREN = 128;
+     RDW_NOCHILDREN = 64;
+  { RegCreateKey  }
+    { was #define dname def_expr }
+    function HKEY_CLASSES_ROOT : HKEY;
+
+    { was #define dname def_expr }
+    function HKEY_CURRENT_USER : HKEY;
+
+    { was #define dname def_expr }
+    function HKEY_LOCAL_MACHINE : HKEY;
+
+    { was #define dname def_expr }
+    function HKEY_USERS : HKEY;
+
+    { was #define dname def_expr }
+    function HKEY_PERFORMANCE_DATA : HKEY;
+
+    { was #define dname def_expr }
+    function HKEY_CURRENT_CONFIG : HKEY;
+
+    { was #define dname def_expr }
+    function HKEY_DYN_DATA : HKEY;
+
+  { RegCreateKeyEx  }
+
+  const
+     REG_OPTION_VOLATILE = $1;
+     REG_OPTION_NON_VOLATILE = 0;
+     REG_CREATED_NEW_KEY = $1;
+     REG_OPENED_EXISTING_KEY = $2;
+  { RegEnumValue  }
+     REG_BINARY = 3;
+     REG_DWORD = 4;
+     REG_DWORD_LITTLE_ENDIAN = 4;
+     REG_DWORD_BIG_ENDIAN = 5;
+     REG_EXPAND_SZ = 2;
+     REG_FULL_RESOURCE_DESCRIPTOR = 9;
+     REG_LINK = 6;
+     REG_MULTI_SZ = 7;
+     REG_NONE = 0;
+     REG_RESOURCE_LIST = 8;
+     REG_RESOURCE_REQUIREMENTS_LIST = 10;
+     REG_SZ = 1;
+  { RegisterHotKey  }
+     MOD_ALT = 1;
+     MOD_CONTROL = 2;
+     MOD_SHIFT = 4;
+     MOD_WIN = 8;
+     IDHOT_SNAPDESKTOP = -(2);
+     IDHOT_SNAPWINDOW = -(1);
+  { RegNotifyChangeKeyValue  }
+     REG_NOTIFY_CHANGE_NAME = $1;
+     REG_NOTIFY_CHANGE_ATTRIBUTES = $2;
+     REG_NOTIFY_CHANGE_LAST_SET = $4;
+     REG_NOTIFY_CHANGE_SECURITY = $8;
+  { ScrollWindowEx  }
+     SW_ERASE = 4;
+     SW_INVALIDATE = 2;
+     SW_SCROLLCHILDREN = 1;
+  { SendMessageTimeout  }
+     SMTO_ABORTIFHUNG = 2;
+     SMTO_BLOCK = 1;
+     SMTO_NORMAL = 0;
+  { SetBkMode  }
+     OPAQUE = 2;
+     TRANSPARENT = 1;
+  { SetDebugErrorLevel  }
+     SLE_ERROR = 1;
+     SLE_MINORERROR = 2;
+     SLE_WARNING = 3;
+  { SetErrorMode  }
+     SEM_FAILCRITICALERRORS = 1;
+     SEM_NOALIGNMENTFAULTEXCEPT = 4;
+     SEM_NOGPFAULTERRORBOX = 2;
+     SEM_NOOPENFILEERRORBOX = 32768;
+  { SetICMMode  }
+     ICM_ON = 2;
+     ICM_OFF = 1;
+     ICM_QUERY = 3;
+  { SetJob  }
+  { Locale Information  }
+     LOCALE_ILANGUAGE = 1;
+     LOCALE_SLANGUAGE = 2;
+     LOCALE_SENGLANGUAGE = 4097;
+     LOCALE_SABBREVLANGNAME = 3;
+     LOCALE_SNATIVELANGNAME = 4;
+     LOCALE_ICOUNTRY = 5;
+     LOCALE_SCOUNTRY = 6;
+     LOCALE_SENGCOUNTRY = 4098;
+     LOCALE_SABBREVCTRYNAME = 7;
+     LOCALE_SNATIVECTRYNAME = 8;
+     LOCALE_IDEFAULTLANGUAGE = 9;
+     LOCALE_IDEFAULTCOUNTRY = 10;
+     LOCALE_IDEFAULTANSICODEPAGE = 4100;
+     LOCALE_IDEFAULTCODEPAGE = 11;
+     LOCALE_SLIST = 12;
+     LOCALE_IMEASURE = 13;
+     LOCALE_SDECIMAL = 14;
+     LOCALE_STHOUSAND = 15;
+     LOCALE_SGROUPING = 16;
+     LOCALE_IDIGITS = 17;
+     LOCALE_ILZERO = 18;
+     LOCALE_INEGNUMBER = 4112;
+     LOCALE_SCURRENCY = 20;
+     LOCALE_SMONDECIMALSEP = 22;
+     LOCALE_SMONTHOUSANDSEP = 23;
+     LOCALE_SMONGROUPING = 24;
+     LOCALE_ICURRDIGITS = 25;
+     LOCALE_ICURRENCY = 27;
+     LOCALE_INEGCURR = 28;
+     LOCALE_SDATE = 29;
+     LOCALE_STIME = 30;
+     LOCALE_STIMEFORMAT = 4099;
+     LOCALE_SSHORTDATE = 31;
+     LOCALE_SLONGDATE = 32;
+     LOCALE_IDATE = 33;
+     LOCALE_ILDATE = 34;
+     LOCALE_ITIME = 35;
+     LOCALE_ITLZERO = 37;
+     LOCALE_IDAYLZERO = 38;
+     LOCALE_IMONLZERO = 39;
+     LOCALE_S1159 = 40;
+     LOCALE_S2359 = 41;
+     LOCALE_ICALENDARTYPE = 4105;
+     LOCALE_IOPTIONALCALENDAR = 4107;
+     LOCALE_IFIRSTDAYOFWEEK = 4108;
+     LOCALE_IFIRSTWEEKOFYEAR = 4109;
+     LOCALE_SDAYNAME1 = 42;
+     LOCALE_SDAYNAME2 = 43;
+     LOCALE_SDAYNAME3 = 44;
+     LOCALE_SDAYNAME4 = 45;
+     LOCALE_SDAYNAME5 = 46;
+     LOCALE_SDAYNAME6 = 47;
+     LOCALE_SDAYNAME7 = 48;
+     LOCALE_SABBREVDAYNAME1 = 49;
+     LOCALE_SABBREVDAYNAME2 = 50;
+     LOCALE_SABBREVDAYNAME3 = 51;
+     LOCALE_SABBREVDAYNAME4 = 52;
+     LOCALE_SABBREVDAYNAME5 = 53;
+     LOCALE_SABBREVDAYNAME6 = 54;
+     LOCALE_SABBREVDAYNAME7 = 55;
+     LOCALE_SMONTHNAME1 = 56;
+     LOCALE_SMONTHNAME2 = 57;
+     LOCALE_SMONTHNAME3 = 58;
+     LOCALE_SMONTHNAME4 = 59;
+     LOCALE_SMONTHNAME5 = 60;
+     LOCALE_SMONTHNAME6 = 61;
+     LOCALE_SMONTHNAME7 = 62;
+     LOCALE_SMONTHNAME8 = 63;
+     LOCALE_SMONTHNAME9 = 64;
+     LOCALE_SMONTHNAME10 = 65;
+     LOCALE_SMONTHNAME11 = 66;
+     LOCALE_SMONTHNAME12 = 67;
+     LOCALE_SMONTHNAME13 = 4110;
+     LOCALE_SABBREVMONTHNAME1 = 68;
+     LOCALE_SABBREVMONTHNAME2 = 69;
+     LOCALE_SABBREVMONTHNAME3 = 70;
+     LOCALE_SABBREVMONTHNAME4 = 71;
+     LOCALE_SABBREVMONTHNAME5 = 72;
+     LOCALE_SABBREVMONTHNAME6 = 73;
+     LOCALE_SABBREVMONTHNAME7 = 74;
+     LOCALE_SABBREVMONTHNAME8 = 75;
+     LOCALE_SABBREVMONTHNAME9 = 76;
+     LOCALE_SABBREVMONTHNAME10 = 77;
+     LOCALE_SABBREVMONTHNAME11 = 78;
+     LOCALE_SABBREVMONTHNAME12 = 79;
+     LOCALE_SABBREVMONTHNAME13 = 4111;
+     LOCALE_SPOSITIVESIGN = 80;
+     LOCALE_SNEGATIVESIGN = 81;
+     LOCALE_IPOSSIGNPOSN = 82;
+     LOCALE_INEGSIGNPOSN = 83;
+     LOCALE_IPOSSYMPRECEDES = 84;
+     LOCALE_IPOSSEPBYSPACE = 85;
+     LOCALE_INEGSYMPRECEDES = 86;
+     LOCALE_INEGSEPBYSPACE = 87;
+     LOCALE_NOUSEROVERRIDE = $80000000;
+  { Calendar Type Information  }
+     CAL_ICALINTVALUE = 1;
+     CAL_IYEAROFFSETRANGE = 3;
+     CAL_SABBREVDAYNAME1 = 14;
+     CAL_SABBREVDAYNAME2 = 15;
+     CAL_SABBREVDAYNAME3 = 16;
+     CAL_SABBREVDAYNAME4 = 17;
+     CAL_SABBREVDAYNAME5 = 18;
+     CAL_SABBREVDAYNAME6 = 19;
+     CAL_SABBREVDAYNAME7 = 20;
+     CAL_SABBREVMONTHNAME1 = 34;
+     CAL_SABBREVMONTHNAME2 = 35;
+     CAL_SABBREVMONTHNAME3 = 36;
+     CAL_SABBREVMONTHNAME4 = 37;
+     CAL_SABBREVMONTHNAME5 = 38;
+     CAL_SABBREVMONTHNAME6 = 39;
+     CAL_SABBREVMONTHNAME7 = 40;
+     CAL_SABBREVMONTHNAME8 = 41;
+     CAL_SABBREVMONTHNAME9 = 42;
+     CAL_SABBREVMONTHNAME10 = 43;
+     CAL_SABBREVMONTHNAME11 = 44;
+     CAL_SABBREVMONTHNAME12 = 45;
+     CAL_SABBREVMONTHNAME13 = 46;
+     CAL_SCALNAME = 2;
+     CAL_SDAYNAME1 = 7;
+     CAL_SDAYNAME2 = 8;
+     CAL_SDAYNAME3 = 9;
+     CAL_SDAYNAME4 = 10;
+     CAL_SDAYNAME5 = 11;
+     CAL_SDAYNAME6 = 12;
+     CAL_SDAYNAME7 = 13;
+     CAL_SERASTRING = 4;
+     CAL_SLONGDATE = 6;
+     CAL_SMONTHNAME1 = 21;
+     CAL_SMONTHNAME2 = 22;
+     CAL_SMONTHNAME3 = 23;
+     CAL_SMONTHNAME4 = 24;
+     CAL_SMONTHNAME5 = 25;
+     CAL_SMONTHNAME6 = 26;
+     CAL_SMONTHNAME7 = 27;
+     CAL_SMONTHNAME8 = 28;
+     CAL_SMONTHNAME9 = 29;
+     CAL_SMONTHNAME10 = 30;
+     CAL_SMONTHNAME11 = 31;
+     CAL_SMONTHNAME12 = 32;
+     CAL_SMONTHNAME13 = 33;
+     CAL_SSHORTDATE = 5;
+  { SetProcessWorkingSetSize  }
+     PROCESS_SET_QUOTA = 256;
+  { SetPrinter  }
+  { SetService  }
+  { SetStretchBltMode  }
+     BLACKONWHITE = 1;
+     COLORONCOLOR = 3;
+     HALFTONE = 4;
+     STRETCH_ANDSCANS = 1;
+     STRETCH_DELETESCANS = 3;
+     STRETCH_HALFTONE = 4;
+     STRETCH_ORSCANS = 2;
+     WHITEONBLACK = 2;
+  { SetSystemCursor  }
+     OCR_NORMAL = 32512;
+     OCR_IBEAM = 32513;
+     OCR_WAIT = 32514;
+     OCR_CROSS = 32515;
+     OCR_UP = 32516;
+     OCR_SIZE = 32640;
+     OCR_ICON = 32641;
+     OCR_SIZENWSE = 32642;
+     OCR_SIZENESW = 32643;
+     OCR_SIZEWE = 32644;
+     OCR_SIZENS = 32645;
+     OCR_SIZEALL = 32646;
+     OCR_NO = 32648;
+     OCR_APPSTARTING = 32650;
+  { SetTapePosition  }
+     TAPE_ABSOLUTE_BLOCK = $1;
+     TAPE_LOGICAL_BLOCK = $2;
+     TAPE_REWIND = 0;
+     TAPE_SPACE_END_OF_DATA = $4;
+     TAPE_SPACE_FILEMARKS = $6;
+     TAPE_SPACE_RELATIVE_BLOCKS = $5;
+     TAPE_SPACE_SEQUENTIAL_FMKS = $7;
+     TAPE_SPACE_SEQUENTIAL_SMKS = $9;
+     TAPE_SPACE_SETMARKS = $8;
+  { SetUnhandledExceptionFilter  }
+     EXCEPTION_EXECUTE_HANDLER = 1;
+     EXCEPTION_CONTINUE_EXECUTION = -(1);
+     EXCEPTION_CONTINUE_SEARCH = 0;
+  { SetWindowPos, DeferWindowPos  }
+    { was #define dname def_expr }
+    function HWND_BOTTOM : HWND;
+
+    { was #define dname def_expr }
+    function HWND_NOTOPMOST : HWND;
+
+    { was #define dname def_expr }
+    function HWND_TOP : HWND;
+
+    { was #define dname def_expr }
+    function HWND_TOPMOST : HWND;
+
+
+  const
+     SWP_DRAWFRAME = 32;
+     SWP_FRAMECHANGED = 32;
+     SWP_HIDEWINDOW = 128;
+     SWP_NOACTIVATE = 16;
+     SWP_NOCOPYBITS = 256;
+     SWP_NOMOVE = 2;
+     SWP_NOSIZE = 1;
+     SWP_NOREDRAW = 8;
+     SWP_NOZORDER = 4;
+     SWP_SHOWWINDOW = 64;
+     SWP_NOOWNERZORDER = 512;
+     SWP_NOREPOSITION = 512;
+     SWP_NOSENDCHANGING = 1024;
+  { SHAddToRecentDocs  }
+  { SHAppBarMessage  }
+  { SHChangeNotify  }
+  { ShellProc  }
+     HSHELL_ACTIVATESHELLWINDOW = 3;
+     HSHELL_GETMINRECT = 5;
+     HSHELL_LANGUAGE = 8;
+     HSHELL_REDRAW = 6;
+     HSHELL_TASKMAN = 7;
+     HSHELL_WINDOWACTIVATED = 4;
+     HSHELL_WINDOWCREATED = 1;
+     HSHELL_WINDOWDESTROYED = 2;
+  { SHGetFileInfo  }
+  { SHGetSpecialFolderLocation  }
+  { ShowWindow  }
+     SW_HIDE = 0;
+     SW_MAXIMIZE = 3;
+     SW_MINIMIZE = 6;
+     SW_NORMAL = 1;
+     SW_RESTORE = 9;
+     SW_SHOW = 5;
+     SW_SHOWDEFAULT = 10;
+     SW_SHOWMAXIMIZED = 3;
+     SW_SHOWMINIMIZED = 2;
+     SW_SHOWMINNOACTIVE = 7;
+     SW_SHOWNA = 8;
+     SW_SHOWNOACTIVATE = 4;
+     SW_SHOWNORMAL = 1;
+     WPF_RESTORETOMAXIMIZED = 2;
+     WPF_SETMINPOSITION = 1;
+  { Sleep  }
+     INFINITE = $FFFFFFFF;
+  { SystemParametersInfo  }
+     SPI_GETACCESSTIMEOUT = 60;
+     SPI_GETANIMATION = 72;
+     SPI_GETBEEP = 1;
+     SPI_GETBORDER = 5;
+     SPI_GETDEFAULTINPUTLANG = 89;
+     SPI_GETDRAGFULLWINDOWS = 38;
+     SPI_GETFASTTASKSWITCH = 35;
+     SPI_GETFILTERKEYS = 50;
+     SPI_GETFONTSMOOTHING = 74;
+     SPI_GETGRIDGRANULARITY = 18;
+     SPI_GETHIGHCONTRAST = 66;
+     SPI_GETICONMETRICS = 45;
+     SPI_GETICONTITLELOGFONT = 31;
+     SPI_GETICONTITLEWRAP = 25;
+     SPI_GETKEYBOARDDELAY = 22;
+     SPI_GETKEYBOARDPREF = 68;
+     SPI_GETKEYBOARDSPEED = 10;
+     SPI_GETLOWPOWERACTIVE = 83;
+     SPI_GETLOWPOWERTIMEOUT = 79;
+     SPI_GETMENUDROPALIGNMENT = 27;
+     SPI_GETMINIMIZEDMETRICS = 43;
+     SPI_GETMOUSE = 3;
+     SPI_GETMOUSEKEYS = 54;
+     SPI_GETMOUSETRAILS = 94;
+     SPI_GETNONCLIENTMETRICS = 41;
+     SPI_GETPOWEROFFACTIVE = 84;
+     SPI_GETPOWEROFFTIMEOUT = 80;
+     SPI_GETSCREENREADER = 70;
+     SPI_GETSCREENSAVEACTIVE = 16;
+     SPI_GETSCREENSAVETIMEOUT = 14;
+     SPI_GETSERIALKEYS = 62;
+     SPI_GETSHOWSOUNDS = 56;
+     SPI_GETSOUNDSENTRY = 64;
+     SPI_GETSTICKYKEYS = 58;
+     SPI_GETTOGGLEKEYS = 52;
+     SPI_GETWINDOWSEXTENSION = 92;
+     SPI_GETWORKAREA = 48;
+     SPI_ICONHORIZONTALSPACING = 13;
+     SPI_ICONVERTICALSPACING = 24;
+     SPI_LANGDRIVER = 12;
+     SPI_SCREENSAVERRUNNING = 97;
+     SPI_SETACCESSTIMEOUT = 61;
+     SPI_SETANIMATION = 73;
+     SPI_SETBEEP = 2;
+     SPI_SETBORDER = 6;
+     SPI_SETDEFAULTINPUTLANG = 90;
+     SPI_SETDESKPATTERN = 21;
+     SPI_SETDESKWALLPAPER = 20;
+     SPI_SETDOUBLECLICKTIME = 32;
+     SPI_SETDOUBLECLKHEIGHT = 30;
+     SPI_SETDOUBLECLKWIDTH = 29;
+     SPI_SETDRAGFULLWINDOWS = 37;
+     SPI_SETDRAGHEIGHT = 77;
+     SPI_SETDRAGWIDTH = 76;
+     SPI_SETFASTTASKSWITCH = 36;
+     SPI_SETFILTERKEYS = 51;
+     SPI_SETFONTSMOOTHING = 75;
+     SPI_SETGRIDGRANULARITY = 19;
+     SPI_SETHANDHELD = 78;
+     SPI_SETHIGHCONTRAST = 67;
+     SPI_SETICONMETRICS = 46;
+     SPI_SETICONTITLELOGFONT = 34;
+     SPI_SETICONTITLEWRAP = 26;
+     SPI_SETKEYBOARDDELAY = 23;
+     SPI_SETKEYBOARDPREF = 69;
+     SPI_SETKEYBOARDSPEED = 11;
+     SPI_SETLANGTOGGLE = 91;
+     SPI_SETLOWPOWERACTIVE = 85;
+     SPI_SETLOWPOWERTIMEOUT = 81;
+     SPI_SETMENUDROPALIGNMENT = 28;
+     SPI_SETMINIMIZEDMETRICS = 44;
+     SPI_SETMOUSE = 4;
+     SPI_SETMOUSEBUTTONSWAP = 33;
+     SPI_SETMOUSEKEYS = 55;
+     SPI_SETMOUSETRAILS = 93;
+     SPI_SETNONCLIENTMETRICS = 42;
+     SPI_SETPENWINDOWS = 49;
+     SPI_SETPOWEROFFACTIVE = 86;
+     SPI_SETPOWEROFFTIMEOUT = 82;
+     SPI_SETSCREENREADER = 71;
+     SPI_SETSCREENSAVEACTIVE = 17;
+     SPI_SETSCREENSAVETIMEOUT = 15;
+     SPI_SETSERIALKEYS = 63;
+     SPI_SETSHOWSOUNDS = 57;
+     SPI_SETSOUNDSENTRY = 65;
+     SPI_SETSTICKYKEYS = 59;
+     SPI_SETTOGGLEKEYS = 53;
+     SPI_SETWORKAREA = 47;
+     SPIF_UPDATEINIFILE = 1;
+     SPIF_SENDWININICHANGE = 2;
+     SPIF_SENDCHANGE = 2;
+  { TrackPopupMenu, TrackPopMenuEx  }
+     TPM_CENTERALIGN = $4;
+     TPM_LEFTALIGN = 0;
+     TPM_RIGHTALIGN = $8;
+     TPM_LEFTBUTTON = 0;
+     TPM_RIGHTBUTTON = $2;
+     TPM_HORIZONTAL = 0;
+     TPM_VERTICAL = $40;
+  { TranslateCharsetInfo  }
+     TCI_SRCCHARSET = 1;
+     TCI_SRCCODEPAGE = 2;
+     TCI_SRCFONTSIG = 3;
+  { VerFindFile  }
+     VFFF_ISSHAREDFILE = 1;
+     VFF_CURNEDEST = 1;
+     VFF_FILEINUSE = 2;
+     VFF_BUFFTOOSMALL = 4;
+  { VerInstallFile  }
+     VIFF_FORCEINSTALL = 1;
+     VIFF_DONTDELETEOLD = 2;
+     VIF_TEMPFILE = $1;
+     VIF_MISMATCH = $2;
+     VIF_SRCOLD = $4;
+     VIF_DIFFLANG = $8;
+     VIF_DIFFCODEPG = $10;
+     VIF_DIFFTYPE = $20;
+     VIF_WRITEPROT = $40;
+     VIF_FILEINUSE = $80;
+     VIF_OUTOFSPACE = $100;
+     VIF_ACCESSVIOLATION = $200;
+     VIF_SHARINGVIOLATION = $400;
+     VIF_CANNOTCREATE = $800;
+     VIF_CANNOTDELETE = $1000;
+     VIF_CANNOTDELETECUR = $4000;
+     VIF_CANNOTRENAME = $2000;
+     VIF_OUTOFMEMORY = $8000;
+     VIF_CANNOTREADSRC = $10000;
+     VIF_CANNOTREADDST = $20000;
+     VIF_BUFFTOOSMALL = $40000;
+  { WideCharToMultiByte  }
+     WC_COMPOSITECHECK = 512;
+     WC_DISCARDNS = 16;
+     WC_SEPCHARS = 32;
+     WC_DEFAULTCHAR = 64;
+  { WinHelp  }
+     HELP_COMMAND = $102;
+     HELP_CONTENTS = $3;
+     HELP_CONTEXT = $1;
+     HELP_CONTEXTPOPUP = $8;
+     HELP_FORCEFILE = $9;
+     HELP_HELPONHELP = $4;
+     HELP_INDEX = $3;
+     HELP_KEY = $101;
+     HELP_MULTIKEY = $201;
+     HELP_PARTIALKEY = $105;
+     HELP_QUIT = $2;
+     HELP_SETCONTENTS = $5;
+     HELP_SETINDEX = $5;
+     HELP_CONTEXTMENU = $a;
+     HELP_FINDER = $b;
+     HELP_WM_HELP = $c;
+     HELP_TCARD = $8000;
+     HELP_TCARD_DATA = $10;
+     HELP_TCARD_OTHER_CALLER = $11;
+  { WNetAddConnectino2  }
+     CONNECT_UPDATE_PROFILE = 1;
+  { WNetConnectionDialog, WNetDisconnectDialog, WNetOpenEnum  }
+     RESOURCETYPE_DISK = 1;
+     RESOURCETYPE_PRINT = 2;
+     RESOURCETYPE_ANY = 0;
+     RESOURCE_CONNECTED = 1;
+     RESOURCE_GLOBALNET = 2;
+     RESOURCE_REMEMBERED = 3;
+     RESOURCEUSAGE_CONNECTABLE = 1;
+     RESOURCEUSAGE_CONTAINER = 2;
+  { WNetGetResourceInformation, WNetGetResourceParent  }
+     WN_BAD_NETNAME = $43;
+     WN_EXTENDED_ERROR = $4b8;
+     WN_MORE_DATA = $ea;
+     WN_NO_NETWORK = $4c6;
+     WN_SUCCESS = 0;
+     WN_ACCESS_DENIED = $5;
+     WN_BAD_PROVIDER = $4b4;
+     WN_NOT_AUTHENTICATED = $4dc;
+  { WNetGetUniversalName  }
+     UNIVERSAL_NAME_INFO_LEVEL = 1;
+     REMOTE_NAME_INFO_LEVEL = 2;
+  { GetExitCodeThread  }
+     STILL_ACTIVE = $103;
+  { COMMPROP structure  }
+     SP_SERIALCOMM = $1;
+     BAUD_075 = $1;
+     BAUD_110 = $2;
+     BAUD_134_5 = $4;
+     BAUD_150 = $8;
+     BAUD_300 = $10;
+     BAUD_600 = $20;
+     BAUD_1200 = $40;
+     BAUD_1800 = $80;
+     BAUD_2400 = $100;
+     BAUD_4800 = $200;
+     BAUD_7200 = $400;
+     BAUD_9600 = $800;
+     BAUD_14400 = $1000;
+     BAUD_19200 = $2000;
+     BAUD_38400 = $4000;
+     BAUD_56K = $8000;
+     BAUD_57600 = $40000;
+     BAUD_115200 = $20000;
+     BAUD_128K = $10000;
+     BAUD_USER = $10000000;
+     PST_FAX = $21;
+     PST_LAT = $101;
+     PST_MODEM = $6;
+     PST_NETWORK_BRIDGE = $100;
+     PST_PARALLELPORT = $2;
+     PST_RS232 = $1;
+     PST_RS422 = $3;
+     PST_RS423 = $4;
+     PST_RS449 = $5;
+     PST_SCANNER = $22;
+     PST_TCPIP_TELNET = $102;
+     PST_UNSPECIFIED = 0;
+     PST_X25 = $103;
+     PCF_16BITMODE = $200;
+     PCF_DTRDSR = $1;
+     PCF_INTTIMEOUTS = $80;
+     PCF_PARITY_CHECK = $8;
+     PCF_RLSD = $4;
+     PCF_RTSCTS = $2;
+     PCF_SETXCHAR = $20;
+     PCF_SPECIALCHARS = $100;
+     PCF_TOTALTIMEOUTS = $40;
+     PCF_XONXOFF = $10;
+     SP_BAUD = $2;
+     SP_DATABITS = $4;
+     SP_HANDSHAKING = $10;
+     SP_PARITY = $1;
+     SP_PARITY_CHECK = $20;
+     SP_RLSD = $40;
+     SP_STOPBITS = $8;
+     DATABITS_5 = 1;
+     DATABITS_6 = 2;
+     DATABITS_7 = 4;
+     DATABITS_8 = 8;
+     DATABITS_16 = 16;
+     DATABITS_16X = 32;
+     STOPBITS_10 = 1;
+     STOPBITS_15 = 2;
+     STOPBITS_20 = 4;
+     PARITY_NONE = 256;
+     PARITY_ODD = 512;
+     PARITY_EVEN = 1024;
+     PARITY_MARK = 2048;
+     PARITY_SPACE = 4096;
+     COMMPROP_INITIALIZED = $e73cf52e;
+  { DCB structure  }
+     CBR_110 = 110;
+     CBR_300 = 300;
+     CBR_600 = 600;
+     CBR_1200 = 1200;
+     CBR_2400 = 2400;
+     CBR_4800 = 4800;
+     CBR_9600 = 9600;
+     CBR_14400 = 14400;
+     CBR_19200 = 19200;
+     CBR_38400 = 38400;
+     CBR_56000 = 56000;
+     CBR_57600 = 57600;
+     CBR_115200 = 115200;
+     CBR_128000 = 128000;
+     CBR_256000 = 256000;
+     DTR_CONTROL_DISABLE = 0;
+     DTR_CONTROL_ENABLE = 1;
+     DTR_CONTROL_HANDSHAKE = 2;
+     RTS_CONTROL_DISABLE = 0;
+     RTS_CONTROL_ENABLE = 1;
+     RTS_CONTROL_HANDSHAKE = 2;
+     RTS_CONTROL_TOGGLE = 3;
+     EVENPARITY = 2;
+     MARKPARITY = 3;
+     NOPARITY = 0;
+     ODDPARITY = 1;
+     SPACEPARITY = 4;
+     ONESTOPBIT = 0;
+     ONE5STOPBITS = 1;
+     TWOSTOPBITS = 2;
+  { Debugging events  }
+     CREATE_PROCESS_DEBUG_EVENT = 3;
+     CREATE_THREAD_DEBUG_EVENT = 2;
+     EXCEPTION_DEBUG_EVENT = 1;
+     EXIT_PROCESS_DEBUG_EVENT = 5;
+     EXIT_THREAD_DEBUG_EVENT = 4;
+     LOAD_DLL_DEBUG_EVENT = 6;
+     OUTPUT_DEBUG_STRING_EVENT = 8;
+     UNLOAD_DLL_DEBUG_EVENT = 7;
+     RIP_EVENT = 9;
+  { PROCESS_HEAP_ENTRY structure  }
+     PROCESS_HEAP_REGION = 1;
+     PROCESS_HEAP_UNCOMMITTED_RANGE = 2;
+     PROCESS_HEAP_ENTRY_BUSY = 4;
+     PROCESS_HEAP_ENTRY_MOVEABLE = 16;
+     PROCESS_HEAP_ENTRY_DDESHARE = 32;
+  { Win32s  }
+     HINSTANCE_ERROR = 32;
+  { WIN32_STREAM_ID structure  }
+     BACKUP_DATA = 1;
+     BACKUP_EA_DATA = 2;
+     BACKUP_SECURITY_DATA = 3;
+     BACKUP_ALTERNATE_DATA = 4;
+     BACKUP_LINK = 5;
+     STREAM_MODIFIED_WHEN_READ = 1;
+     STREAM_CONTAINS_SECURITY = 2;
+  { STARTUPINFO structure  }
+     STARTF_USESHOWWINDOW = 1;
+     STARTF_USEPOSITION = 4;
+     STARTF_USESIZE = 2;
+     STARTF_USECOUNTCHARS = 8;
+     STARTF_USEFILLATTRIBUTE = 16;
+     STARTF_RUNFULLSCREEN = 32;
+     STARTF_FORCEONFEEDBACK = 64;
+     STARTF_FORCEOFFFEEDBACK = 128;
+     STARTF_USESTDHANDLES = 256;
+     STARTF_USEHOTKEY = 512;
+  { OSVERSIONINFO structure  }
+     VER_PLATFORM_WIN32s = 0;
+     VER_PLATFORM_WIN32_WINDOWS = 1;
+     VER_PLATFORM_WIN32_NT = 2;
+  { PROPSHEETPAGE structure  }
+     MAXPROPPAGES = 100;
+     PSP_DEFAULT = 0;
+     PSP_DLGINDIRECT = 1;
+     PSP_HASHELP = 32;
+     PSP_USECALLBACK = 128;
+     PSP_USEHICON = 2;
+     PSP_USEICONID = 4;
+     PSP_USEREFPARENT = 64;
+     PSP_USETITLE = 8;
+     PSP_RTLREADING = 16;
+  { PROPSHEETHEADER structure  }
+     PSH_DEFAULT = 0;
+     PSH_HASHELP = 512;
+     PSH_MODELESS = 1024;
+     PSH_NOAPPLYNOW = 128;
+     PSH_PROPSHEETPAGE = 8;
+     PSH_PROPTITLE = 1;
+     PSH_USECALLBACK = 256;
+     PSH_USEHICON = 2;
+     PSH_USEICONID = 4;
+     PSH_USEPSTARTPAGE = 64;
+     PSH_WIZARD = 32;
+     PSH_RTLREADING = 2048;
+     PSCB_INITIALIZED = 1;
+     PSCB_PRECREATE = 2;
+  { PSN_APPLY message  }
+     PSNRET_NOERROR = 0;
+     PSNRET_INVALID_NOCHANGEPAGE = 2;
+  { Property Sheet  }
+     PSBTN_APPLYNOW = 4;
+     PSBTN_BACK = 0;
+     PSBTN_CANCEL = 5;
+     PSBTN_FINISH = 2;
+     PSBTN_HELP = 6;
+     PSBTN_NEXT = 1;
+     PSBTN_OK = 3;
+     PSWIZB_BACK = 1;
+     PSWIZB_NEXT = 2;
+     PSWIZB_FINISH = 4;
+     PSWIZB_DISABLEDFINISH = 8;
+     ID_PSREBOOTSYSTEM = 3;
+     ID_PSRESTARTWINDOWS = 2;
+     WIZ_BODYCX = 184;
+     WIZ_BODYX = 92;
+     WIZ_CXBMP = 80;
+     WIZ_CXDLG = 276;
+     WIZ_CYDLG = 140;
+  { VX_FIXEDFILEINFO structure  }
+    { was #define dname def_expr }
+    function VS_FILE_INFO : LPTSTR;
+      { return type might be wrong }
+
+
+  const
+     VS_VERSION_INFO = 1;
+     VS_FF_DEBUG = $1;
+     VS_FF_INFOINFERRED = $10;
+     VS_FF_PATCHED = $4;
+     VS_FF_PRERELEASE = $2;
+     VS_FF_PRIVATEBUILD = $8;
+     VS_FF_SPECIALBUILD = $20;
+     VOS_UNKNOWN = 0;
+     VOS_DOS = $10000;
+     VOS_OS216 = $20000;
+     VOS_OS232 = $30000;
+     VOS_NT = $40000;
+     VOS_DOS_WINDOWS16 = $10001;
+     VOS_DOS_WINDOWS32 = $10004;
+     VOS_OS216_PM16 = $20002;
+     VOS_OS232_PM32 = $30003;
+     VOS_NT_WINDOWS32 = $40004;
+     VFT_UNKNOWN = 0;
+     VFT_APP = $1;
+     VFT_DLL = $2;
+     VFT_DRV = $3;
+     VFT_FONT = $4;
+     VFT_VXD = $5;
+     VFT_STATIC_LIB = $7;
+     VFT2_UNKNOWN = 0;
+     VFT2_DRV_PRINTER = $1;
+     VFT2_DRV_KEYBOARD = $2;
+     VFT2_DRV_LANGUAGE = $3;
+     VFT2_DRV_DISPLAY = $4;
+     VFT2_DRV_MOUSE = $5;
+     VFT2_DRV_NETWORK = $6;
+     VFT2_DRV_SYSTEM = $7;
+     VFT2_DRV_INSTALLABLE = $8;
+     VFT2_DRV_SOUND = $9;
+     VFT2_FONT_RASTER = $1;
+     VFT2_FONT_VECTOR = $2;
+     VFT2_FONT_TRUETYPE = $3;
+  { PANOSE structure  }
+     PAN_ANY = 0;
+     PAN_NO_FIT = 1;
+     PAN_FAMILY_TEXT_DISPLAY = 2;
+     PAN_FAMILY_SCRIPT = 3;
+     PAN_FAMILY_DECORATIVE = 4;
+     PAN_FAMILY_PICTORIAL = 5;
+     PAN_SERIF_COVE = 2;
+     PAN_SERIF_OBTUSE_COVE = 3;
+     PAN_SERIF_SQUARE_COVE = 4;
+     PAN_SERIF_OBTUSE_SQUARE_COVE = 5;
+     PAN_SERIF_SQUARE = 6;
+     PAN_SERIF_THIN = 7;
+     PAN_SERIF_BONE = 8;
+     PAN_SERIF_EXAGGERATED = 9;
+     PAN_SERIF_TRIANGLE = 10;
+     PAN_SERIF_NORMAL_SANS = 11;
+     PAN_SERIF_OBTUSE_SANS = 12;
+     PAN_SERIF_PERP_SANS = 13;
+     PAN_SERIF_FLARED = 14;
+     PAN_SERIF_ROUNDED = 15;
+     PAN_WEIGHT_VERY_LIGHT = 2;
+     PAN_WEIGHT_LIGHT = 3;
+     PAN_WEIGHT_THIN = 4;
+     PAN_WEIGHT_BOOK = 5;
+     PAN_WEIGHT_MEDIUM = 6;
+     PAN_WEIGHT_DEMI = 7;
+     PAN_WEIGHT_BOLD = 8;
+     PAN_WEIGHT_HEAVY = 9;
+     PAN_WEIGHT_BLACK = 10;
+     PAN_WEIGHT_NORD = 11;
+     PAN_PROP_OLD_STYLE = 2;
+     PAN_PROP_MODERN = 3;
+     PAN_PROP_EVEN_WIDTH = 4;
+     PAN_PROP_EXPANDED = 5;
+     PAN_PROP_CONDENSED = 6;
+     PAN_PROP_VERY_EXPANDED = 7;
+     PAN_PROP_VERY_CONDENSED = 8;
+     PAN_PROP_MONOSPACED = 9;
+     PAN_CONTRAST_NONE = 2;
+     PAN_CONTRAST_VERY_LOW = 3;
+     PAN_CONTRAST_LOW = 4;
+     PAN_CONTRAST_MEDIUM_LOW = 5;
+     PAN_CONTRAST_MEDIUM = 6;
+     PAN_CONTRAST_MEDIUM_HIGH = 7;
+     PAN_CONTRAST_HIGH = 8;
+     PAN_CONTRAST_VERY_HIGH = 9;
+     PAN_STROKE_GRADUAL_DIAG = 2;
+     PAN_STROKE_GRADUAL_TRAN = 3;
+     PAN_STROKE_GRADUAL_VERT = 4;
+     PAN_STROKE_GRADUAL_HORZ = 5;
+     PAN_STROKE_RAPID_VERT = 6;
+     PAN_STROKE_RAPID_HORZ = 7;
+     PAN_STROKE_INSTANT_VERT = 8;
+     PAN_STRAIGHT_ARMS_HORZ = 2;
+     PAN_STRAIGHT_ARMS_WEDGE = 3;
+     PAN_STRAIGHT_ARMS_VERT = 4;
+     PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5;
+     PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6;
+     PAN_BENT_ARMS_HORZ = 7;
+     PAN_BENT_ARMS_VERT = 9;
+     PAN_BENT_ARMS_WEDGE = 8;
+     PAN_BENT_ARMS_SINGLE_SERIF = 10;
+     PAN_BENT_ARMS_DOUBLE_SERIF = 11;
+     PAN_LETT_NORMAL_CONTACT = 2;
+     PAN_LETT_NORMAL_WEIGHTED = 3;
+     PAN_LETT_NORMAL_BOXED = 4;
+     PAN_LETT_NORMAL_FLATTENED = 5;
+     PAN_LETT_NORMAL_ROUNDED = 6;
+     PAN_LETT_NORMAL_OFF_CENTER = 7;
+     PAN_LETT_NORMAL_SQUARE = 8;
+     PAN_LETT_OBLIQUE_CONTACT = 9;
+     PAN_LETT_OBLIQUE_WEIGHTED = 10;
+     PAN_LETT_OBLIQUE_BOXED = 11;
+     PAN_LETT_OBLIQUE_FLATTENED = 12;
+     PAN_LETT_OBLIQUE_ROUNDED = 13;
+     PAN_LETT_OBLIQUE_OFF_CENTER = 14;
+     PAN_LETT_OBLIQUE_SQUARE = 15;
+     PAN_MIDLINE_STANDARD_TRIMMED = 2;
+     PAN_MIDLINE_STANDARD_POINTED = 3;
+     PAN_MIDLINE_STANDARD_SERIFED = 4;
+     PAN_MIDLINE_HIGH_TRIMMED = 5;
+     PAN_MIDLINE_HIGH_POINTED = 6;
+     PAN_MIDLINE_HIGH_SERIFED = 7;
+     PAN_MIDLINE_CONSTANT_TRIMMED = 8;
+     PAN_MIDLINE_CONSTANT_POINTED = 9;
+     PAN_MIDLINE_CONSTANT_SERIFED = 10;
+     PAN_MIDLINE_LOW_TRIMMED = 11;
+     PAN_MIDLINE_LOW_POINTED = 12;
+     PAN_MIDLINE_LOW_SERIFED = 13;
+     PAN_XHEIGHT_CONSTANT_SMALL = 2;
+     PAN_XHEIGHT_CONSTANT_STD = 3;
+     PAN_XHEIGHT_CONSTANT_LARGE = 4;
+     PAN_XHEIGHT_DUCKING_SMALL = 5;
+     PAN_XHEIGHT_DUCKING_STD = 6;
+     PAN_XHEIGHT_DUCKING_LARGE = 7;
+  { PALETTENTRY structure  }
+     PC_EXPLICIT = 2;
+     PC_NOCOLLAPSE = 4;
+     PC_RESERVED = 1;
+  { LOGBRUSH structure  }
+     BS_DIBPATTERN = 5;
+     BS_DIBPATTERN8X8 = 8;
+     BS_DIBPATTERNPT = 6;
+     BS_HATCHED = 2;
+     BS_HOLLOW = 1;
+     BS_NULL = 1;
+     BS_PATTERN = 3;
+     BS_PATTERN8X8 = 7;
+     BS_SOLID = 0;
+  { DEVMODE structure  }
+     DM_ORIENTATION = $1;
+     DM_PAPERSIZE = $2;
+     DM_PAPERLENGTH = $4;
+     DM_PAPERWIDTH = $8;
+     DM_SCALE = $10;
+     DM_COPIES = $100;
+     DM_DEFAULTSOURCE = $200;
+     DM_PRINTQUALITY = $400;
+     DM_COLOR = $800;
+     DM_DUPLEX = $1000;
+     DM_YRESOLUTION = $2000;
+     DM_TTOPTION = $4000;
+     DM_COLLATE = $8000;
+     DM_FORMNAME = $10000;
+     DM_LOGPIXELS = $20000;
+     {DM_BITSPERPEL = $40000;
+     DM_PELSWIDTH = $80000;
+     DM_PELSHEIGHT = $100000;
+     DM_DISPLAYFLAGS = $200000;
+     DM_DISPLAYFREQUENCY = $400000;already above }
+     DM_ICMMETHOD = $800000;
+     DM_ICMINTENT = $1000000;
+     DM_MEDIATYPE = $2000000;
+     DM_DITHERTYPE = $4000000;
+     DMORIENT_LANDSCAPE = 2;
+     DMORIENT_PORTRAIT = 1;
+     DMPAPER_LETTER = 1;
+     DMPAPER_LEGAL = 5;
+     DMPAPER_A4 = 9;
+     DMPAPER_CSHEET = 24;
+     DMPAPER_DSHEET = 25;
+     DMPAPER_ESHEET = 26;
+     DMPAPER_LETTERSMALL = 2;
+     DMPAPER_TABLOID = 3;
+     DMPAPER_LEDGER = 4;
+     DMPAPER_STATEMENT = 6;
+     DMPAPER_EXECUTIVE = 7;
+     DMPAPER_A3 = 8;
+     DMPAPER_A4SMALL = 10;
+     DMPAPER_A5 = 11;
+     DMPAPER_B4 = 12;
+     DMPAPER_B5 = 13;
+     DMPAPER_FOLIO = 14;
+     DMPAPER_QUARTO = 15;
+     DMPAPER_10X14 = 16;
+     DMPAPER_11X17 = 17;
+     DMPAPER_NOTE = 18;
+     DMPAPER_ENV_9 = 19;
+     DMPAPER_ENV_10 = 20;
+     DMPAPER_ENV_11 = 21;
+     DMPAPER_ENV_12 = 22;
+     DMPAPER_ENV_14 = 23;
+     DMPAPER_ENV_DL = 27;
+     DMPAPER_ENV_C5 = 28;
+     DMPAPER_ENV_C3 = 29;
+     DMPAPER_ENV_C4 = 30;
+     DMPAPER_ENV_C6 = 31;
+     DMPAPER_ENV_C65 = 32;
+     DMPAPER_ENV_B4 = 33;
+     DMPAPER_ENV_B5 = 34;
+     DMPAPER_ENV_B6 = 35;
+     DMPAPER_ENV_ITALY = 36;
+     DMPAPER_ENV_MONARCH = 37;
+     DMPAPER_ENV_PERSONAL = 38;
+     DMPAPER_FANFOLD_US = 39;
+     DMPAPER_FANFOLD_STD_GERMAN = 40;
+     DMPAPER_FANFOLD_LGL_GERMAN = 41;
+     DMRES_HIGH = -(4);
+     DMRES_MEDIUM = -(3);
+     DMRES_LOW = -(2);
+     DMRES_DRAFT = -(1);
+     DMCOLOR_COLOR = 2;
+     DMCOLOR_MONOCHROME = 1;
+     DMDUP_SIMPLEX = 1;
+     DMDUP_HORIZONTAL = 3;
+     DMDUP_VERTICAL = 2;
+     DMTT_BITMAP = 1;
+     DMTT_DOWNLOAD = 2;
+     DMTT_SUBDEV = 3;
+     DMCOLLATE_TRUE = 1;
+     DMCOLLATE_FALSE = 0;
+     DM_GRAYSCALE = 1;
+     DM_INTERLACED = 2;
+     DMICMMETHOD_NONE = 1;
+     DMICMMETHOD_SYSTEM = 2;
+     DMICMMETHOD_DRIVER = 3;
+     DMICMMETHOD_DEVICE = 4;
+     DMICMMETHOD_USER = 256;
+     DMICM_SATURATE = 1;
+     DMICM_CONTRAST = 2;
+     DMICM_COLORMETRIC = 3;
+     DMICM_USER = 256;
+     DMMEDIA_STANDARD = 1;
+     DMMEDIA_GLOSSY = 3;
+     DMMEDIA_TRANSPARENCY = 2;
+     DMMEDIA_USER = 256;
+     DMDITHER_NONE = 1;
+     DMDITHER_COARSE = 2;
+     DMDITHER_FINE = 3;
+     DMDITHER_LINEART = 4;
+     DMDITHER_GRAYSCALE = 10;
+     DMDITHER_USER = 256;
+  { RGNDATAHEADER structure  }
+     RDH_RECTANGLES = 1;
+  { TTPOLYGONHEADER structure  }
+     TT_POLYGON_TYPE = 24;
+  { TTPOLYCURVE structure  }
+     TT_PRIM_LINE = 1;
+     TT_PRIM_QSPLINE = 2;
+  { GCP_RESULTS structure  }
+     GCPCLASS_ARABIC = 2;
+     GCPCLASS_HEBREW = 2;
+     GCPCLASS_LATIN = 1;
+     GCPCLASS_LATINNUMBER = 5;
+     GCPCLASS_LOCALNUMBER = 4;
+     GCPCLASS_LATINNUMERICSEPARATOR = 7;
+     GCPCLASS_LATINNUMERICTERMINATOR = 6;
+     GCPCLASS_NEUTRAL = 3;
+     GCPCLASS_NUMERICSEPARATOR = 8;
+     GCPCLASS_PREBOUNDLTR = 128;
+     GCPCLASS_PREBOUNDRTL = 64;
+     GCPCLASS_POSTBOUNDLTR = 32;
+     GCPCLASS_POSTBOUNDRTL = 16;
+     GCPGLYPH_LINKBEFORE = 32768;
+     GCPGLYPH_LINKAFTER = 16384;
+  { RASTERIZER_STATUS structure  }
+     TT_AVAILABLE = 1;
+     TT_ENABLED = 2;
+  { COLORADJUSTMENT structure  }
+     CA_NEGATIVE = 1;
+     CA_LOG_FILTER = 2;
+     ILLUMINANT_DEVICE_DEFAULT = 0;
+     ILLUMINANT_A = 1;
+     ILLUMINANT_B = 2;
+     ILLUMINANT_C = 3;
+     ILLUMINANT_D50 = 4;
+     ILLUMINANT_D55 = 5;
+     ILLUMINANT_D65 = 6;
+     ILLUMINANT_D75 = 7;
+     ILLUMINANT_F2 = 8;
+     ILLUMINANT_TUNGSTEN = 1;
+     ILLUMINANT_DAYLIGHT = 3;
+     ILLUMINANT_FLUORESCENT = 8;
+     ILLUMINANT_NTSC = 3;
+  { DOCINFO structure  }
+     DI_APPBANDING = 1;
+  { EMRMETAHEADER structure  }
+     EMR_HEADER = 1;
+     ENHMETA_SIGNATURE = 1179469088;
+  { RTF event masks  }
+     ENM_CHANGE = 1;
+     ENM_CORRECTTEXT = 4194304;
+     ENM_DROPFILES = 1048576;
+     ENM_KEYEVENTS = 65536;
+     ENM_MOUSEEVENTS = 131072;
+     ENM_PROTECTED = 2097152;
+     ENM_REQUESTRESIZE = 262144;
+     ENM_SCROLL = 4;
+     ENM_SELCHANGE = 524288;
+     ENM_UPDATE = 2;
+     ENM_NONE = 0;
+  { RTF styles  }
+     ES_DISABLENOSCROLL = 8192;
+     ES_EX_NOCALLOLEINIT = 16777216;
+     ES_NOIME = 524288;
+     ES_SAVESEL = 32768;
+     ES_SELFIME = 262144;
+     ES_SUNKEN = 16384;
+     ES_VERTICAL = 4194304;
+     ES_SELECTIONBAR = 16777216;
+  { EM_SETOPTIONS message  }
+     ECOOP_SET = 1;
+     ECOOP_OR = 2;
+     ECOOP_AND = 3;
+     ECOOP_XOR = 4;
+     ECO_AUTOWORDSELECTION = 1;
+     ECO_AUTOVSCROLL = 64;
+     ECO_AUTOHSCROLL = 128;
+     ECO_NOHIDESEL = 256;
+     ECO_READONLY = 2048;
+     ECO_WANTRETURN = 4096;
+     ECO_SAVESEL = 32768;
+     ECO_SELECTIONBAR = 16777216;
+     ECO_VERTICAL = 4194304;
+  { EM_SETCHARFORMAT message  }
+     SCF_WORD = 2;
+     SCF_SELECTION = 1;
+  { EM_STREAMOUT message  }
+     SF_TEXT = 1;
+     SF_RTF = 2;
+     SF_RTFNOOBJS = 3;
+     SF_TEXTIZED = 4;
+     SFF_SELECTION = 32768;
+     SFF_PLAINRTF = 16384;
+  { EM_FINDWORDBREAK message  }
+     WB_CLASSIFY = 3;
+     {WB_ISDELIMITER = 2;
+     WB_LEFT = 0; already above }
+     WB_LEFTBREAK = 6;
+     WB_PREVBREAK = 6;
+     WB_MOVEWORDLEFT = 4;
+     WB_MOVEWORDPREV = 4;
+     WB_MOVEWORDRIGHT = 5;
+     WB_MOVEWORDNEXT = 5;
+     {WB_RIGHT = 1;already above }
+     WB_RIGHTBREAK = 7;
+     WB_NEXTBREAK = 7;
+  { EM_GETPUNCTUATION message  }
+     PC_LEADING = 2;
+     PC_FOLLOWING = 1;
+     PC_DELIMITER = 4;
+     PC_OVERFLOW = 3;
+  { EM_SETWORDWRAPMODE message  }
+     WBF_WORDWRAP = 16;
+     WBF_WORDBREAK = 32;
+     WBF_OVERFLOW = 64;
+     WBF_LEVEL1 = 128;
+     WBF_LEVEL2 = 256;
+     WBF_CUSTOM = 512;
+     WBF_BREAKAFTER = 64;
+     WBF_BREAKLINE = 32;
+     WBF_ISWHITE = 16;
+  { CHARFORMAT structure  }
+     CFM_BOLD = 1;
+     CFM_COLOR = 1073741824;
+     CFM_FACE = 536870912;
+     CFM_ITALIC = 2;
+     CFM_OFFSET = 268435456;
+     CFM_PROTECTED = 16;
+     CFM_SIZE = $80000000;
+     CFM_STRIKEOUT = 8;
+     CFM_UNDERLINE = 4;
+     CFE_AUTOCOLOR = 1073741824;
+     CFE_BOLD = 1;
+     CFE_ITALIC = 2;
+     CFE_STRIKEOUT = 8;
+     CFE_UNDERLINE = 4;
+     CFE_PROTECTED = 16;
+  { PARAFORMAT structure  }
+     PFM_ALIGNMENT = 8;
+     PFM_NUMBERING = 32;
+     PFM_OFFSET = 4;
+     PFM_OFFSETINDENT = $80000000;
+     PFM_RIGHTINDENT = 2;
+     PFM_STARTINDENT = 1;
+     PFM_TABSTOPS = 16;
+     PFN_BULLET = 1;
+     PFA_LEFT = 1;
+     PFA_RIGHT = 2;
+     PFA_CENTER = 3;
+  { SELCHANGE structure  }
+     SEL_EMPTY = 0;
+     SEL_TEXT = 1;
+     SEL_OBJECT = 2;
+     SEL_MULTICHAR = 4;
+     SEL_MULTIOBJECT = 8;
+  { RTF clipboard formats  }
+     CF_RTF = 'Rich Text Format';
+     CF_RETEXTOBJ = 'RichEdit Text and Objects';
+  { DRAWITEMSTRUCT structure  }
+     ODT_BUTTON = 4;
+     ODT_COMBOBOX = 3;
+     ODT_LISTBOX = 2;
+     ODT_LISTVIEW = 102;
+     ODT_MENU = 1;
+     ODT_STATIC = 5;
+     ODT_TAB = 101;
+     ODT_HEADER = 100;
+     ODA_DRAWENTIRE = 1;
+     ODA_FOCUS = 4;
+     ODA_SELECT = 2;
+     ODS_CHECKED = 8;
+     ODS_COMBOBOXEDIT = 4096;
+     ODS_DEFAULT = 32;
+     ODS_DISABLED = 4;
+     ODS_FOCUS = 16;
+     ODS_GRAYED = 2;
+     ODS_SELECTED = 1;
+  { Common control window classes  }
+     ANIMATE_CLASSW = 'SysAnimate32';
+     HOTKEY_CLASSW = 'msctls_hotkey32';
+     PROGRESS_CLASSW = 'msctls_progress32';
+     STATUSCLASSNAMEW = 'msctls_statusbar32';
+     TOOLBARCLASSNAMEW = 'ToolbarWindow32';
+     TOOLTIPS_CLASSW = 'tooltips_class32';
+     TRACKBAR_CLASSW = 'msctls_trackbar32';
+     UPDOWN_CLASSW = 'msctls_updown32';
+     WC_HEADERW = 'SysHeader32';
+     WC_LISTVIEWW = 'SysListView32';
+     WC_TABCONTROLW = 'SysTabControl32';
+     WC_TREEVIEWW = 'SysTreeView32';
+  { Common control styles  }
+     CCS_ADJUSTABLE = $20;
+     CCS_BOTTOM = $3;
+     CCS_NODIVIDER = $40;
+     CCS_NOMOVEY = $2;
+     CCS_NOPARENTALIGN = $8;
+     CCS_NORESIZE = $4;
+     CCS_TOP = $1;
+     ANIMATE_CLASSA = 'SysAnimate32';
+     HOTKEY_CLASSA = 'msctls_hotkey32';
+     PROGRESS_CLASSA = 'msctls_progress32';
+     STATUSCLASSNAMEA = 'msctls_statusbar32';
+     TOOLBARCLASSNAMEA = 'ToolbarWindow32';
+     TOOLTIPS_CLASSA = 'tooltips_class32';
+     TRACKBAR_CLASSA = 'msctls_trackbar32';
+     UPDOWN_CLASSA = 'msctls_updown32';
+     WC_HEADERA = 'SysHeader32';
+     WC_LISTVIEWA = 'SysListView32';
+     WC_TABCONTROLA = 'SysTabControl32';
+     WC_TREEVIEWA = 'SysTreeView32';
+{$ifdef UNICODE}
+
+  const
+     ANIMATE_CLASS = ANIMATE_CLASSW;
+     HOTKEY_CLASS = HOTKEY_CLASSW;
+     PROGRESS_CLASS = PROGRESS_CLASSW;
+     STATUSCLASSNAME = STATUSCLASSNAMEW;
+     TOOLBARCLASSNAME = TOOLBARCLASSNAMEW;
+     TOOLTIPS_CLASS = TOOLTIPS_CLASSW;
+     TRACKBAR_CLASS = TRACKBAR_CLASSW;
+     UPDOWN_CLASS = UPDOWN_CLASSW;
+     WC_HEADER = WC_HEADERW;
+     WC_LISTVIEW = WC_LISTVIEWW;
+     WC_TABCONTROL = WC_TABCONTROLW;
+     WC_TREEVIEW = WC_TREEVIEWW;
+{$else}
+
+  const
+     ANIMATE_CLASS = ANIMATE_CLASSA;
+     HOTKEY_CLASS = HOTKEY_CLASSA;
+     PROGRESS_CLASS = PROGRESS_CLASSA;
+     STATUSCLASSNAME = STATUSCLASSNAMEA;
+     TOOLBARCLASSNAME = TOOLBARCLASSNAMEA;
+     TOOLTIPS_CLASS = TOOLTIPS_CLASSA;
+     TRACKBAR_CLASS = TRACKBAR_CLASSA;
+     UPDOWN_CLASS = UPDOWN_CLASSA;
+     WC_HEADER = WC_HEADERA;
+     WC_LISTVIEW = WC_LISTVIEWA;
+     WC_TABCONTROL = WC_TABCONTROLA;
+     WC_TREEVIEW = WC_TREEVIEWA;
+{$endif}
+  { UNICODE  }
+  { Header control styles  }
+
+  const
+     HDS_BUTTONS = 2;
+     HDS_HIDDEN = 8;
+     HDS_HORZ = 0;
+  { HD_ITEM structure  }
+     HDI_BITMAP = 16;
+     HDI_FORMAT = 4;
+     HDI_HEIGHT = 1;
+     HDI_LPARAM = 8;
+     HDI_TEXT = 2;
+     HDI_WIDTH = 1;
+     HDF_CENTER = 2;
+     HDF_LEFT = 0;
+     HDF_RIGHT = 1;
+     HDF_RTLREADING = 4;
+     HDF_BITMAP = 8192;
+     HDF_OWNERDRAW = 32768;
+     HDF_STRING = 16384;
+     HDF_JUSTIFYMASK = 3;
+  { HD_HITTESTINFO structure  }
+     HHT_NOWHERE = 1;
+     HHT_ONDIVIDER = 4;
+     HHT_ONDIVOPEN = 8;
+     HHT_ONHEADER = 2;
+     HHT_TOLEFT = 2048;
+     HHT_TORIGHT = 1024;
+  { TBADDBITMAP structure  }
+    { was #define dname def_expr }
+    function HINST_COMMCTRL : HINSTANCE;
+
+
+  const
+     IDB_STD_LARGE_COLOR = 1;
+     IDB_STD_SMALL_COLOR = 0;
+     IDB_VIEW_LARGE_COLOR = 5;
+     IDB_VIEW_SMALL_COLOR = 4;
+     STD_COPY = 1;
+     STD_CUT = 0;
+     STD_DELETE = 5;
+     STD_FILENEW = 6;
+     STD_FILEOPEN = 7;
+     STD_FILESAVE = 8;
+     STD_FIND = 12;
+     STD_HELP = 11;
+     STD_PASTE = 2;
+     STD_PRINT = 14;
+     STD_PRINTPRE = 9;
+     STD_PROPERTIES = 10;
+     STD_REDOW = 4;
+     STD_REPLACE = 13;
+     STD_UNDO = 3;
+     VIEW_LARGEICONS = 0;
+     VIEW_SMALLICONS = 1;
+     VIEW_LIST = 2;
+     VIEW_DETAILS = 3;
+     VIEW_SORTNAME = 4;
+     VIEW_SORTSIZE = 5;
+     VIEW_SORTDATE = 6;
+     VIEW_SORTTYPE = 7;
+  { Toolbar styles  }
+     TBSTYLE_ALTDRAG = 1024;
+     TBSTYLE_TOOLTIPS = 256;
+     TBSTYLE_WRAPABLE = 512;
+     TBSTYLE_BUTTON = 0;
+     TBSTYLE_CHECK = 2;
+     TBSTYLE_CHECKGROUP = 6;
+     TBSTYLE_GROUP = 4;
+     TBSTYLE_SEP = 1;
+  { Toolbar states  }
+     TBSTATE_CHECKED = 1;
+     TBSTATE_ENABLED = 4;
+     TBSTATE_HIDDEN = 8;
+     TBSTATE_INDETERMINATE = 16;
+     TBSTATE_PRESSED = 2;
+     TBSTATE_WRAP = 32;
+  { Tooltip styles  }
+     TTS_ALWAYSTIP = 1;
+     TTS_NOPREFIX = 2;
+  { TOOLINFO structure  }
+     TTF_IDISHWND = 1;
+     TTF_CENTERTIP = 2;
+     TTF_RTLREADING = 4;
+     TTF_SUBCLASS = 16;
+  { TTM_SETDELAYTIME message  }
+     TTDT_AUTOMATIC = 0;
+     TTDT_AUTOPOP = 2;
+     TTDT_INITIAL = 3;
+     TTDT_RESHOW = 1;
+  { Status window  }
+     SBARS_SIZEGRIP = 256;
+     {SBARS_SIZEGRIP = 256;already above }
+  { DL_DRAGGING message  }
+     DL_MOVECURSOR = 3;
+     DL_COPYCURSOR = 2;
+     DL_STOPCURSOR = 1;
+  { Up-down control styles  }
+     UDS_ALIGNLEFT = 8;
+     UDS_ALIGNRIGHT = 4;
+     UDS_ARROWKEYS = 32;
+     UDS_AUTOBUDDY = 16;
+     UDS_HORZ = 64;
+     UDS_NOTHOUSANDS = 128;
+     UDS_SETBUDDYINT = 2;
+     UDS_WRAP = 1;
+  { UDM_SETRANGE message  }
+     UD_MAXVAL = 32767;
+     UD_MINVAL = -(32767);
+  { HKM_GETHOTKEY message  }
+     HOTKEYF_ALT = 4;
+     HOTKEYF_CONTROL = 2;
+     HOTKEYF_EXT = 8;
+     HOTKEYF_SHIFT = 1;
+  { HKM_SETRULES message  }
+     HKCOMB_A = 8;
+     HKCOMB_C = 4;
+     HKCOMB_CA = 64;
+     HKCOMB_NONE = 1;
+     HKCOMB_S = 2;
+     HKCOMB_SA = 32;
+     HKCOMB_SC = 16;
+     HKCOMB_SCA = 128;
+  { Trackbar styles  }
+     TBS_HORZ = 0;
+     TBS_VERT = 2;
+     TBS_AUTOTICKS = 1;
+     TBS_NOTICKS = 16;
+     TBS_TOP = 4;
+     TBS_BOTTOM = 0;
+     TBS_LEFT = 4;
+     TBS_RIGHT = 0;
+     TBS_BOTH = 8;
+     TBS_ENABLESELRANGE = 32;
+     TBS_FIXEDLENGTH = 64;
+     TBS_NOTHUMB = 128;
+     TB_BOTTOM = 7;
+     TB_ENDTRACK = 8;
+     TB_LINEDOWN = 1;
+     TB_LINEUP = 0;
+     TB_PAGEDOWN = 3;
+     TB_PAGEUP = 2;
+     TB_THUMBPOSITION = 4;
+     TB_THUMBTRACK = 5;
+     TB_TOP = 6;
+  { List view styles  }
+     LVS_ALIGNLEFT = 2048;
+     LVS_ALIGNTOP = 0;
+     LVS_AUTOARRANGE = 256;
+     LVS_EDITLABELS = 512;
+     LVS_ICON = 0;
+     LVS_LIST = 3;
+     LVS_NOCOLUMNHEADER = 16384;
+     LVS_NOLABELWRAP = 128;
+     LVS_NOSCROLL = 8192;
+     LVS_NOSORTHEADER = 32768;
+     LVS_OWNERDRAWFIXED = 1024;
+     LVS_REPORT = 1;
+     LVS_SHAREIMAGELISTS = 64;
+     LVS_SHOWSELALWAYS = 8;
+     LVS_SINGLESEL = 4;
+     LVS_SMALLICON = 2;
+     LVS_SORTASCENDING = 16;
+     LVS_SORTDESCENDING = 32;
+     LVS_TYPESTYLEMASK = 64512;
+     LVSIL_NORMAL = 0;
+     LVSIL_SMALL = 1;
+     LVSIL_STATE = 2;
+     LVIS_CUT = 4;
+     LVIS_DROPHILITED = 8;
+     LVIS_FOCUSED = 1;
+     LVIS_SELECTED = 2;
+     LVIS_OVERLAYMASK = 3840;
+     LVIS_STATEIMAGEMASK = 61440;
+    { was #define dname def_expr }
+    function LPSTR_TEXTCALLBACKW : LPWSTR;
+
+    { was #define dname def_expr }
+    function LPSTR_TEXTCALLBACKA : LPSTR;
+
+{$ifdef UNICODE}
+
+  {const this is a function in fact !!
+     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;}
+    function LPSTR_TEXTCALLBACK : LPWSTR;
+     
+{$else}
+
+  {const
+     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA; }
+    function LPSTR_TEXTCALLBACK : LPSTR;
+{$endif}
+  { UNICODE  }
+  { LV_ITEM structure  }
+
+  const
+     LVIF_TEXT = 1;
+     LVIF_IMAGE = 2;
+     LVIF_PARAM = 4;
+     LVIF_STATE = 8;
+     LVIF_DI_SETITEM = 4096;
+  { LVM_GETNEXTITEM structure  }
+     LVNI_ABOVE = 256;
+     LVNI_ALL = 0;
+     LVNI_BELOW = 512;
+     LVNI_TOLEFT = 1024;
+     LVNI_TORIGHT = 2048;
+     LVNI_CUT = 4;
+     LVNI_DROPHILITED = 8;
+     LVNI_FOCUSED = 1;
+     LVNI_SELECTED = 2;
+  { LV_FINDINFO structure  }
+     LVFI_PARAM = 1;
+     LVFI_PARTIAL = 8;
+     LVFI_STRING = 2;
+     LVFI_WRAP = 32;
+     LVFI_NEARESTXY = 64;
+  { LV_HITTESTINFO structure  }
+     LVHT_ABOVE = 8;
+     LVHT_BELOW = 16;
+     LVHT_NOWHERE = 1;
+     LVHT_ONITEMICON = 2;
+     LVHT_ONITEMLABEL = 4;
+     LVHT_ONITEMSTATEICON = 8;
+     LVHT_TOLEFT = 64;
+     LVHT_TORIGHT = 32;
+  { LV_COLUMN structure  }
+     LVCF_FMT = 1;
+     LVCF_SUBITEM = 8;
+     LVCF_TEXT = 4;
+     LVCF_WIDTH = 2;
+     LVCFMT_CENTER = 2;
+     LVCFMT_LEFT = 0;
+     LVCFMT_RIGHT = 1;
+  { ListView_GetItemRect  }
+     LVIR_BOUNDS = 0;
+     LVIR_ICON = 1;
+     LVIR_LABEL = 2;
+     LVIR_SELECTBOUNDS = 3;
+  { LVM_ARRANGE message  }
+     LVA_ALIGNLEFT = 1;
+     LVA_ALIGNTOP = 2;
+     LVA_DEFAULT = 0;
+     LVA_SNAPTOGRID = 5;
+  { LVM_SETCOLUMNWIDTH message  }
+     LVSCW_AUTOSIZE = -(1);
+     LVSCW_AUTOSIZE_USEHEADER = -(2);
+  { Tree View styles  }
+     TVS_DISABLEDRAGDROP = 16;
+     TVS_EDITLABELS = 8;
+     TVS_HASBUTTONS = 1;
+     TVS_HASLINES = 2;
+     TVS_LINESATROOT = 4;
+     TVS_SHOWSELALWAYS = 32;
+  { Tree View states  }
+     TVIS_BOLD = 16;
+     TVIS_CUT = 4;
+     TVIS_DROPHILITED = 8;
+     TVIS_EXPANDED = 32;
+     TVIS_EXPANDEDONCE = 64;
+     TVIS_FOCUSED = 1;
+     TVIS_OVERLAYMASK = 3840;
+     TVIS_SELECTED = 2;
+     TVIS_STATEIMAGEMASK = 61440;
+     TVIS_USERMASK = 61440;
+  { TV_ITEM structure  }
+     TVIF_CHILDREN = 64;
+     TVIF_HANDLE = 16;
+     TVIF_IMAGE = 2;
+     TVIF_PARAM = 4;
+     TVIF_SELECTEDIMAGE = 32;
+     TVIF_STATE = 8;
+     TVIF_TEXT = 1;
+     I_CHILDRENCALLBACK = -(1);
+     I_IMAGECALLBACK = -(1);
+  { TV_INSERTSTRUCT structure  }
+    { added manually PM }
+     type
+    { warning TREEITEM is not defined in the C headers }
+       TREEITEM = record
+                  end;
+       HTREEITEM = ^TREEITEM;
+       
+    { was #define dname def_expr }
+    function TVI_ROOT : HTREEITEM;
+
+    { was #define dname def_expr }
+    function TVI_FIRST : HTREEITEM;
+
+    { was #define dname def_expr }
+    function TVI_LAST : HTREEITEM;
+
+    { was #define dname def_expr }
+    function TVI_SORT : HTREEITEM;
+
+  { TV_HITTESTINFO structure  }
+
+  const
+     TVHT_ABOVE = 256;
+     TVHT_BELOW = 512;
+     TVHT_NOWHERE = 1;
+     TVHT_ONITEM = 70;
+     TVHT_ONITEMBUTTON = 16;
+     TVHT_ONITEMICON = 2;
+     TVHT_ONITEMINDENT = 8;
+     TVHT_ONITEMLABEL = 4;
+     TVHT_ONITEMRIGHT = 32;
+     TVHT_ONITEMSTATEICON = 64;
+     TVHT_TOLEFT = 2048;
+     TVHT_TORIGHT = 1024;
+  { TVM_EXPAND message  }
+     TVE_COLLAPSE = 1;
+     TVE_COLLAPSERESET = 32768;
+     TVE_EXPAND = 2;
+     TVE_TOGGLE = 3;
+  { TVM_GETIMAGELIST message  }
+     TVSIL_NORMAL = 0;
+     TVSIL_STATE = 2;
+  { TVM_GETNEXTITEM message  }
+     TVGN_CARET = 9;
+     TVGN_CHILD = 4;
+     TVGN_DROPHILITE = 8;
+     TVGN_FIRSTVISIBLE = 5;
+     TVGN_NEXT = 1;
+     TVGN_NEXTVISIBLE = 6;
+     TVGN_PARENT = 3;
+     TVGN_PREVIOUS = 2;
+     TVGN_PREVIOUSVISIBLE = 7;
+     TVGN_ROOT = 0;
+  { TVN_SELCHANGED message  }
+     TVC_BYKEYBOARD = 2;
+     TVC_BYMOUSE = 1;
+     TVC_UNKNOWN = 0;
+  { Tab control styles  }
+     TCS_BUTTONS = 256;
+     TCS_FIXEDWIDTH = 1024;
+     TCS_FOCUSNEVER = 32768;
+     TCS_FOCUSONBUTTONDOWN = 4096;
+     TCS_FORCEICONLEFT = 16;
+     TCS_FORCELABELLEFT = 32;
+     TCS_MULTILINE = 512;
+     TCS_OWNERDRAWFIXED = 8192;
+     TCS_RAGGEDRIGHT = 2048;
+     TCS_RIGHTJUSTIFY = 0;
+     TCS_SINGLELINE = 0;
+     TCS_TABS = 0;
+     TCS_TOOLTIPS = 16384;
+  { TC_ITEM structure  }
+     TCIF_TEXT = 1;
+     TCIF_IMAGE = 2;
+     TCIF_PARAM = 8;
+     TCIF_RTLREADING = 4;
+  { TC_HITTESTINFO structure  }
+     TCHT_NOWHERE = 1;
+     TCHT_ONITEM = 6;
+     TCHT_ONITEMICON = 2;
+     TCHT_ONITEMLABEL = 4;
+  { Animation control styles  }
+     ACS_AUTOPLAY = 4;
+     ACS_CENTER = 1;
+     ACS_TRANSPARENT = 2;
+  { MODEMDEVCAPS structure  }
+     DIALOPTION_BILLING = 64;
+     DIALOPTION_QUIET = 128;
+     DIALOPTION_DIALTONE = 256;
+     MDMVOLFLAG_LOW = 1;
+     MDMVOLFLAG_MEDIUM = 2;
+     MDMVOLFLAG_HIGH = 4;
+     MDMVOL_LOW = 0;
+     MDMVOL_MEDIUM = 1;
+     MDMVOL_HIGH = 2;
+     MDMSPKRFLAG_OFF = 1;
+     MDMSPKRFLAG_DIAL = 2;
+     MDMSPKRFLAG_ON = 4;
+     MDMSPKRFLAG_CALLSETUP = 8;
+     MDMSPKR_OFF = 0;
+     MDMSPKR_DIAL = 1;
+     MDMSPKR_ON = 2;
+     MDMSPKR_CALLSETUP = 3;
+     MDM_BLIND_DIAL = 512;
+     MDM_CCITT_OVERRIDE = 64;
+     MDM_CELLULAR = 8;
+     MDM_COMPRESSION = 1;
+     MDM_ERROR_CONTROL = 2;
+     MDM_FLOWCONTROL_HARD = 16;
+     MDM_FLOWCONTROL_SOFT = 32;
+     MDM_FORCED_EC = 4;
+     MDM_SPEED_ADJUST = 128;
+     MDM_TONE_DIAL = 256;
+     MDM_V23_OVERRIDE = 1024;
+  { Languages  }
+     LANG_BULGARIAN = 2;
+     LANG_CHINESE = 4;
+     LANG_CROATIAN = 26;
+     LANG_CZECH = 5;
+     LANG_DANISH = 6;
+     LANG_DUTCH = 19;
+     LANG_ENGLISH = 9;
+     LANG_FINNISH = 11;
+     LANG_FRENCH = 12;
+     LANG_GERMAN = 7;
+     LANG_GREEK = 8;
+     LANG_HUNGARIAN = 14;
+     LANG_ICELANDIC = 15;
+     LANG_ITALIAN = 16;
+     LANG_JAPANESE = 17;
+     LANG_KOREAN = 18;
+     LANG_NEUTRAL = 0;
+     LANG_NORWEGIAN = 20;
+     LANG_POLISH = 21;
+     LANG_PORTUGUESE = 22;
+     LANG_ROMANIAN = 24;
+     LANG_RUSSIAN = 25;
+     LANG_SLOVAK = 27;
+     LANG_SLOVENIAN = 36;
+     LANG_SPANISH = 10;
+     LANG_SWEDISH = 29;
+     LANG_TURKISH = 31;
+     SUBLANG_CHINESE_SIMPLIFIED = 2;
+     SUBLANG_CHINESE_TRADITIONAL = 1;
+     SUBLANG_CHINESE_HONGKONG = 3;
+     SUBLANG_CHINESE_SINGAPORE = 4;
+     SUBLANG_DEFAULT = 1;
+     SUBLANG_DUTCH = 1;
+     SUBLANG_DUTCH_BELGIAN = 2;
+     SUBLANG_ENGLISH_AUS = 3;
+     SUBLANG_ENGLISH_CAN = 4;
+     SUBLANG_ENGLISH_EIRE = 6;
+     SUBLANG_ENGLISH_NZ = 5;
+     SUBLANG_ENGLISH_UK = 2;
+     SUBLANG_ENGLISH_US = 1;
+     SUBLANG_FRENCH = 1;
+     SUBLANG_FRENCH_BELGIAN = 2;
+     SUBLANG_FRENCH_CANADIAN = 3;
+     SUBLANG_FRENCH_SWISS = 4;
+     SUBLANG_GERMAN = 1;
+     SUBLANG_GERMAN_AUSTRIAN = 3;
+     SUBLANG_GERMAN_SWISS = 2;
+     SUBLANG_ITALIAN = 1;
+     SUBLANG_ITALIAN_SWISS = 2;
+     SUBLANG_NEUTRAL = 0;
+     SUBLANG_NORWEGIAN_BOKMAL = 1;
+     SUBLANG_NORWEGIAN_NYNORSK = 2;
+     SUBLANG_PORTUGUESE = 2;
+     SUBLANG_PORTUGUESE_BRAZILIAN = 1;
+     SUBLANG_SPANISH = 1;
+     SUBLANG_SPANISH_MEXICAN = 2;
+     SUBLANG_SPANISH_MODERN = 3;
+     SUBLANG_SYS_DEFAULT = 2;
+     NLS_VALID_LOCALE_MASK = 1048575;
+     SORT_DEFAULT = 0;
+     SORT_JAPANESE_XJIS = 0;
+     SORT_JAPANESE_UNICODE = 1;
+     SORT_CHINESE_BIG5 = 0;
+     SORT_CHINESE_UNICODE = 1;
+     SORT_KOREAN_KSC = 0;
+     SORT_KOREAN_UNICODE = 1;
+  { SYSTEM_INFO structure  }
+     PROCESSOR_INTEL_386 = 386;
+     PROCESSOR_INTEL_486 = 486;
+     PROCESSOR_INTEL_PENTIUM = 586;
+     PROCESSOR_MIPS_R4000 = 4000;
+     PROCESSOR_ALPHA_21064 = 21064;
+  { FSCTL_SET_COMPRESSION  }
+     COMPRESSION_FORMAT_NONE = 0;
+     COMPRESSION_FORMAT_DEFAULT = 1;
+     COMPRESSION_FORMAT_LZNT1 = 2;
+  { TAPE_GET_DRIVE_PARAMETERS structure  }
+     TAPE_DRIVE_COMPRESSION = 131072;
+     TAPE_DRIVE_ECC = 65536;
+     TAPE_DRIVE_ERASE_BOP_ONLY = 64;
+     TAPE_DRIVE_ERASE_LONG = 32;
+     TAPE_DRIVE_ERASE_IMMEDIATE = 128;
+     TAPE_DRIVE_ERASE_SHORT = 16;
+     TAPE_DRIVE_FIXED = 1;
+     TAPE_DRIVE_FIXED_BLOCK = 1024;
+     TAPE_DRIVE_INITIATOR = 4;
+     TAPE_DRIVE_PADDING = 262144;
+     TAPE_DRIVE_GET_ABSOLUTE_BLK = 1048576;
+     TAPE_DRIVE_GET_LOGICAL_BLK = 2097152;
+     TAPE_DRIVE_REPORT_SMKS = 524288;
+     TAPE_DRIVE_SELECT = 2;
+     TAPE_DRIVE_SET_EOT_WZ_SIZE = 4194304;
+     TAPE_DRIVE_TAPE_CAPACITY = 256;
+     TAPE_DRIVE_TAPE_REMAINING = 512;
+     TAPE_DRIVE_VARIABLE_BLOCK = 2048;
+     TAPE_DRIVE_WRITE_PROTECT = 4096;
+     TAPE_DRIVE_ABS_BLK_IMMED = -(2147475456);
+     TAPE_DRIVE_ABSOLUTE_BLK = -(2147479552);
+     TAPE_DRIVE_END_OF_DATA = -(2147418112);
+     TAPE_DRIVE_FILEMARKS = -(2147221504);
+     TAPE_DRIVE_LOAD_UNLOAD = -(2147483647);
+     TAPE_DRIVE_LOAD_UNLD_IMMED = -(2147483616);
+     TAPE_DRIVE_LOCK_UNLOCK = -(2147483644);
+     TAPE_DRIVE_LOCK_UNLK_IMMED = -(2147483520);
+     TAPE_DRIVE_LOG_BLK_IMMED = -(2147450880);
+     TAPE_DRIVE_LOGICAL_BLK = -(2147467264);
+     TAPE_DRIVE_RELATIVE_BLKS = -(2147352576);
+     TAPE_DRIVE_REVERSE_POSITION = -(2143289344);
+     TAPE_DRIVE_REWIND_IMMEDIATE = -(2147483640);
+     TAPE_DRIVE_SEQUENTIAL_FMKS = -(2146959360);
+     TAPE_DRIVE_SEQUENTIAL_SMKS = -(2145386496);
+     TAPE_DRIVE_SET_BLOCK_SIZE = -(2147483632);
+     TAPE_DRIVE_SET_COMPRESSION = -(2147483136);
+     TAPE_DRIVE_SET_ECC = -(2147483392);
+     TAPE_DRIVE_SET_PADDING = -(2147482624);
+     TAPE_DRIVE_SET_REPORT_SMKS = -(2147481600);
+     TAPE_DRIVE_SETMARKS = -(2146435072);
+     TAPE_DRIVE_SPACE_IMMEDIATE = -(2139095040);
+     TAPE_DRIVE_TENSION = -(2147483646);
+     TAPE_DRIVE_TENSION_IMMED = -(2147483584);
+     TAPE_DRIVE_WRITE_FILEMARKS = -(2113929216);
+     TAPE_DRIVE_WRITE_LONG_FMKS = -(2013265920);
+     TAPE_DRIVE_WRITE_MARK_IMMED = -(1879048192);
+     TAPE_DRIVE_WRITE_SETMARKS = -(2130706432);
+     TAPE_DRIVE_WRITE_SHORT_FMKS = -(2080374784);
+  { Standard rights  }
+     STANDARD_RIGHTS_REQUIRED = $f0000;
+     STANDARD_RIGHTS_WRITE = $20000;
+     STANDARD_RIGHTS_READ = $20000;
+     STANDARD_RIGHTS_EXECUTE = $20000;
+     STANDARD_RIGHTS_ALL = $1f0000;
+     SPECIFIC_RIGHTS_ALL = $ffff;
+  { ACCESS_MASK  }
+     MAXIMUM_ALLOWED = $2000000;
+     GENERIC_ALL = $10000000;
+  { SID  }
+     SECURITY_NULL_RID = 0;
+     SECURITY_WORLD_RID = 0;
+     SECURITY_LOCAL_RID = 0;
+     SECURITY_CREATOR_OWNER_RID = 0;
+     SECURITY_CREATOR_GROUP_RID = $1;
+     SECURITY_DIALUP_RID = $1;
+     SECURITY_NETWORK_RID = $2;
+     SECURITY_BATCH_RID = $3;
+     SECURITY_INTERACTIVE_RID = $4;
+     SECURITY_LOGON_IDS_RID = $5;
+     SECURITY_LOGON_IDS_RID_COUNT = $3;
+     SECURITY_SERVICE_RID = $6;
+     SECURITY_LOCAL_SYSTEM_RID = $12;
+     SECURITY_BUILTIN_DOMAIN_RID = $20;
+     DOMAIN_USER_RID_ADMIN = $1f4;
+     DOMAIN_USER_RID_GUEST = $1f5;
+     DOMAIN_GROUP_RID_ADMINS = $200;
+     DOMAIN_GROUP_RID_USERS = $201;
+     DOMAIN_ALIAS_RID_ADMINS = $220;
+     DOMAIN_ALIAS_RID_USERS = $221;
+     DOMAIN_ALIAS_RID_GUESTS = $222;
+     DOMAIN_ALIAS_RID_POWER_USERS = $223;
+     DOMAIN_ALIAS_RID_ACCOUNT_OPS = $224;
+     DOMAIN_ALIAS_RID_SYSTEM_OPS = $225;
+     DOMAIN_ALIAS_RID_PRINT_OPS = $226;
+     DOMAIN_ALIAS_RID_BACKUP_OPS = $227;
+     DOMAIN_ALIAS_RID_REPLICATOR = $228;
+  { TOKEN_GROUPS structure  }
+     SE_GROUP_MANDATORY = $1;
+     SE_GROUP_ENABLED_BY_DEFAULT = $2;
+     SE_GROUP_ENABLED = $4;
+     SE_GROUP_OWNER = $8;
+     SE_GROUP_LOGON_ID = $c0000000;
+  { ACL Defines  }
+     ACL_REVISION = 2;
+  { ACE_HEADER structure  }
+     ACCESS_ALLOWED_ACE_TYPE = $0;
+     ACCESS_DENIED_ACE_TYPE = $1;
+     SYSTEM_AUDIT_ACE_TYPE = $2;
+     SYSTEM_ALARM_ACE_TYPE = $3;
+  { ACE flags in the ACE_HEADER structure  }
+     OBJECT_INHERIT_ACE = $1;
+     CONTAINER_INHERIT_ACE = $2;
+     NO_PROPAGATE_INHERIT_ACE = $4;
+     INHERIT_ONLY_ACE = $8;
+     SUCCESSFUL_ACCESS_ACE_FLAG = $40;
+     FAILED_ACCESS_ACE_FLAG = $80;
+  { SECURITY_DESCRIPTOR_CONTROL  }
+     {SECURITY_DESCRIPTOR_REVISION = 1;already defined above }
+     SECURITY_DESCRIPTOR_MIN_LENGTH = 20;
+     SE_OWNER_DEFAULTED = 1;
+     SE_GROUP_DEFAULTED = 2;
+     SE_DACL_PRESENT = 4;
+     SE_DACL_DEFAULTED = 8;
+     SE_SACL_PRESENT = 16;
+     SE_SACL_DEFAULTED = 32;
+     SE_SELF_RELATIVE = 32768;
+  { PRIVILEGE_SET  }
+     SE_PRIVILEGE_ENABLED_BY_DEFAULT = $1;
+     SE_PRIVILEGE_ENABLED = $2;
+     SE_PRIVILEGE_USED_FOR_ACCESS = $80000000;
+     PRIVILEGE_SET_ALL_NECESSARY = $1;
+  { OPENFILENAME structure  }
+     OFN_ALLOWMULTISELECT = $200;
+     OFN_CREATEPROMPT = $2000;
+     OFN_ENABLEHOOK = $20;
+     OFN_ENABLETEMPLATE = $40;
+     OFN_ENABLETEMPLATEHANDLE = $80;
+     OFN_EXPLORER = $80000;
+     OFN_EXTENSIONDIFFERENT = $400;
+     OFN_FILEMUSTEXIST = $1000;
+     OFN_HIDEREADONLY = $4;
+     OFN_LONGNAMES = $200000;
+     OFN_NOCHANGEDIR = $8;
+     OFN_NODEREFERENCELINKS = $100000;
+     OFN_NOLONGNAMES = $40000;
+     OFN_NONETWORKBUTTON = $20000;
+     OFN_NOREADONLYRETURN = $8000;
+     OFN_NOTESTFILECREATE = $10000;
+     OFN_NOVALIDATE = $100;
+     OFN_OVERWRITEPROMPT = $2;
+     OFN_PATHMUSTEXIST = $800;
+     OFN_READONLY = $1;
+     OFN_SHAREAWARE = $4000;
+     OFN_SHOWHELP = $10;
+  { SHAREVISTRING message  }
+     OFN_SHAREFALLTHROUGH = $2;
+     OFN_SHARENOWARN = $1;
+     OFN_SHAREWARN = 0;
+  { Open/Save notifications  }
+     CDN_INITDONE = $fffffda7;
+     CDN_SELCHANGE = $fffffda6;
+     CDN_FOLDERCHANGE = $fffffda5;
+     CDN_SHAREVIOLATION = $fffffda4;
+     CDN_HELP = $fffffda3;
+     CDN_FILEOK = $fffffda2;
+     CDN_TYPECHANGE = $fffffda1;
+  { Open/Save messages  }
+     CDM_GETFILEPATH = $465;
+     CDM_GETFOLDERIDLIST = $467;
+     CDM_GETFOLDERPATH = $466;
+     CDM_GETSPEC = $464;
+     CDM_HIDECONTROL = $469;
+     CDM_SETCONTROLTEXT = $468;
+     CDM_SETDEFEXT = $46a;
+  { CHOOSECOLOR structure  }
+     CC_ENABLEHOOK = $10;
+     CC_ENABLETEMPLATE = $20;
+     CC_ENABLETEMPLATEHANDLE = $40;
+     CC_FULLOPEN = $2;
+     CC_PREVENTFULLOPEN = $4;
+     CC_RGBINIT = $1;
+     CC_SHOWHELP = $8;
+     CC_SOLIDCOLOR = $80;
+  { FINDREPLACE structure  }
+     FR_DIALOGTERM = $40;
+     FR_DOWN = $1;
+     FR_ENABLEHOOK = $100;
+     FR_ENABLETEMPLATE = $200;
+     FR_ENABLETEMPLATEHANDLE = $2000;
+     FR_FINDNEXT = $8;
+     FR_HIDEUPDOWN = $4000;
+     FR_HIDEMATCHCASE = $8000;
+     FR_HIDEWHOLEWORD = $10000;
+     FR_MATCHCASE = $4;
+     FR_NOMATCHCASE = $800;
+     FR_NOUPDOWN = $400;
+     FR_NOWHOLEWORD = $1000;
+     FR_REPLACE = $10;
+     FR_REPLACEALL = $20;
+     FR_SHOWHELP = $80;
+     FR_WHOLEWORD = $2;
+  { CHOOSEFONT structure  }
+     CF_APPLY = $200;
+     CF_ANSIONLY = $400;
+     CF_BOTH = $3;
+     CF_TTONLY = $40000;
+     CF_EFFECTS = $100;
+     CF_ENABLEHOOK = $8;
+     CF_ENABLETEMPLATE = $10;
+     CF_ENABLETEMPLATEHANDLE = $20;
+     CF_FIXEDPITCHONLY = $4000;
+     CF_FORCEFONTEXIST = $10000;
+     CF_INITTOLOGFONTSTRUCT = $40;
+     CF_LIMITSIZE = $2000;
+     CF_NOOEMFONTS = $800;
+     CF_NOFACESEL = $80000;
+     CF_NOSCRIPTSEL = $800000;
+     CF_NOSTYLESEL = $100000;
+     CF_NOSIZESEL = $200000;
+     CF_NOSIMULATIONS = $1000;
+     CF_NOVECTORFONTS = $800;
+     CF_NOVERTFONTS = $1000000;
+     CF_PRINTERFONTS = $2;
+     CF_SCALABLEONLY = $20000;
+     CF_SCREENFONTS = $1;
+     CF_SCRIPTSONLY = $400;
+     CF_SELECTSCRIPT = $400000;
+     CF_SHOWHELP = $4;
+     CF_USESTYLE = $80;
+     CF_WYSIWYG = $8000;
+     BOLD_FONTTYPE = $100;
+     ITALIC_FONTTYPE = $200;
+     PRINTER_FONTTYPE = $4000;
+     REGULAR_FONTTYPE = $400;
+     SCREEN_FONTTYPE = $2000;
+     SIMULATED_FONTTYPE = $8000;
+  { Common dialog messages  }
+     COLOROKSTRINGW = 'commdlg_ColorOK';
+     FILEOKSTRINGW = 'commdlg_FileNameOK';
+     FINDMSGSTRINGW = 'commdlg_FindReplace';
+     HELPMSGSTRINGW = 'commdlg_help';
+     LBSELCHSTRINGW = 'commdlg_LBSelChangedNotify';
+     SETRGBSTRINGW = 'commdlg_SetRGBColor';
+     SHAREVISTRINGW = 'commdlg_ShareViolation';
+     COLOROKSTRINGA = 'commdlg_ColorOK';
+     FILEOKSTRINGA = 'commdlg_FileNameOK';
+     FINDMSGSTRINGA = 'commdlg_FindReplace';
+     HELPMSGSTRINGA = 'commdlg_help';
+     LBSELCHSTRINGA = 'commdlg_LBSelChangedNotify';
+     SETRGBSTRINGA = 'commdlg_SetRGBColor';
+     SHAREVISTRINGA = 'commdlg_ShareViolation';
+{$ifdef UNICODE}
+
+  const
+     COLOROKSTRING = COLOROKSTRINGW;
+     FILEOKSTRING = FILEOKSTRINGW;
+     FINDMSGSTRING = FINDMSGSTRINGW;
+     HELPMSGSTRING = HELPMSGSTRINGW;
+     LBSELCHSTRING = LBSELCHSTRINGW;
+     SETRGBSTRING = SETRGBSTRINGW;
+     SHAREVISTRING = SHAREVISTRINGW;
+{$else}
+
+  const
+     COLOROKSTRING = COLOROKSTRINGA;
+     FILEOKSTRING = FILEOKSTRINGA;
+     FINDMSGSTRING = FINDMSGSTRINGA;
+     HELPMSGSTRING = HELPMSGSTRINGA;
+     LBSELCHSTRING = LBSELCHSTRINGA;
+     SETRGBSTRING = SETRGBSTRINGA;
+     SHAREVISTRING = SHAREVISTRINGA;
+{$endif}
+  { LBSELCHSTRING message  }
+
+  const
+     CD_LBSELCHANGE = 0;
+     CD_LBSELADD = 2;
+     CD_LBSELSUB = 1;
+     CD_LBSELNOITEMS = -(1);
+  { DEVNAMES structure  }
+     DN_DEFAULTPRN = 1;
+  { PRINTDLG structure  }
+     PD_ALLPAGES = 0;
+     PD_COLLATE = 16;
+     PD_DISABLEPRINTTOFILE = 524288;
+     PD_ENABLEPRINTHOOK = 4096;
+     PD_ENABLEPRINTTEMPLATE = 16384;
+     PD_ENABLEPRINTTEMPLATEHANDLE = 65536;
+     PD_ENABLESETUPHOOK = 8192;
+     PD_ENABLESETUPTEMPLATE = 32768;
+     PD_ENABLESETUPTEMPLATEHANDLE = 131072;
+     PD_HIDEPRINTTOFILE = 1048576;
+     PD_NOPAGENUMS = 8;
+     PD_NOSELECTION = 4;
+     PD_NOWARNING = 128;
+     PD_PAGENUMS = 2;
+     PD_PRINTSETUP = 64;
+     PD_PRINTTOFILE = 32;
+     PD_RETURNDC = 256;
+     PD_RETURNDEFAULT = 1024;
+     PD_RETURNIC = 512;
+     PD_SELECTION = 1;
+     PD_SHOWHELP = 2048;
+     PD_USEDEVMODECOPIES = 262144;
+     PD_USEDEVMODECOPIESANDCOLLATE = 262144;
+  { PAGESETUPDLG structure  }
+     PSD_DEFAULTMINMARGINS = 0;
+     PSD_DISABLEMARGINS = 16;
+     PSD_DISABLEORIENTATION = 256;
+     PSD_DISABLEPAGEPAINTING = 524288;
+     PSD_DISABLEPAPER = 512;
+     PSD_DISABLEPRINTER = 32;
+     PSD_ENABLEPAGEPAINTHOOK = 262144;
+     PSD_ENABLEPAGESETUPHOOK = 8192;
+     PSD_ENABLEPAGESETUPTEMPLATE = 32768;
+     PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 131072;
+     PSD_INHUNDREDTHSOFMILLIMETERS = 8;
+     PSD_INTHOUSANDTHSOFINCHES = 4;
+     PSD_INWININIINTLMEASURE = 0;
+     PSD_MARGINS = 2;
+     PSD_MINMARGINS = 1;
+     PSD_NOWARNING = 128;
+     PSD_RETURNDEFAULT = 1024;
+     PSD_SHOWHELP = 2048;
+  { WM_SHOWWINDOW message  }
+     SW_OTHERUNZOOM = 4;
+     SW_OTHERZOOM = 2;
+     SW_PARENTCLOSING = 1;
+     SW_PARENTOPENING = 3;
+  { Virtual Key codes  }
+     VK_LBUTTON = 1;
+     VK_RBUTTON = 2;
+     VK_CANCEL = 3;
+     VK_MBUTTON = 4;
+     VK_BACK = 8;
+     VK_TAB = 9;
+     VK_CLEAR = 12;
+     VK_RETURN = 13;
+     VK_SHIFT = 16;
+     VK_CONTROL = 17;
+     VK_MENU = 18;
+     VK_PAUSE = 19;
+     VK_CAPITAL = 20;
+     VK_ESCAPE = 27;
+     VK_SPACE = 32;
+     VK_PRIOR = 33;
+     VK_NEXT = 34;
+     VK_END = 35;
+     VK_HOME = 36;
+     VK_LEFT = 37;
+     VK_UP = 38;
+     VK_RIGHT = 39;
+     VK_DOWN = 40;
+     VK_SELECT = 41;
+     VK_PRINT = 42;
+     VK_EXECUTE = 43;
+     VK_SNAPSHOT = 44;
+     VK_INSERT = 45;
+     VK_DELETE = 46;
+     VK_HELP = 47;
+     VK_0 = 48;
+     VK_1 = 49;
+     VK_2 = 50;
+     VK_3 = 51;
+     VK_4 = 52;
+     VK_5 = 53;
+     VK_6 = 54;
+     VK_7 = 55;
+     VK_8 = 56;
+     VK_9 = 57;
+     VK_A = 65;
+     VK_B = 66;
+     VK_C = 67;
+     VK_D = 68;
+     VK_E = 69;
+     VK_F = 70;
+     VK_G = 71;
+     VK_H = 72;
+     VK_I = 73;
+     VK_J = 74;
+     VK_K = 75;
+     VK_L = 76;
+     VK_M = 77;
+     VK_N = 78;
+     VK_O = 79;
+     VK_P = 80;
+     VK_Q = 81;
+     VK_R = 82;
+     VK_S = 83;
+     VK_T = 84;
+     VK_U = 85;
+     VK_V = 86;
+     VK_W = 87;
+     VK_X = 88;
+     VK_Y = 89;
+     VK_Z = 90;
+     VK_NUMPAD0 = 96;
+     VK_NUMPAD1 = 97;
+     VK_NUMPAD2 = 98;
+     VK_NUMPAD3 = 99;
+     VK_NUMPAD4 = 100;
+     VK_NUMPAD5 = 101;
+     VK_NUMPAD6 = 102;
+     VK_NUMPAD7 = 103;
+     VK_NUMPAD8 = 104;
+     VK_NUMPAD9 = 105;
+     VK_MULTIPLY = 106;
+     VK_ADD = 107;
+     VK_SEPARATOR = 108;
+     VK_SUBTRACT = 109;
+     VK_DECIMAL = 110;
+     VK_DIVIDE = 111;
+     VK_F1 = 112;
+     VK_F2 = 113;
+     VK_F3 = 114;
+     VK_F4 = 115;
+     VK_F5 = 116;
+     VK_F6 = 117;
+     VK_F7 = 118;
+     VK_F8 = 119;
+     VK_F9 = 120;
+     VK_F10 = 121;
+     VK_F11 = 122;
+     VK_F12 = 123;
+     VK_F13 = 124;
+     VK_F14 = 125;
+     VK_F15 = 126;
+     VK_F16 = 127;
+     VK_F17 = 128;
+     VK_F18 = 129;
+     VK_F19 = 130;
+     VK_F20 = 131;
+     VK_F21 = 132;
+     VK_F22 = 133;
+     VK_F23 = 134;
+     VK_F24 = 135;
+  { GetAsyncKeyState  }
+     VK_NUMLOCK = 144;
+     VK_SCROLL = 145;
+     VK_LSHIFT = 160;
+     VK_LCONTROL = 162;
+     VK_LMENU = 164;
+     VK_RSHIFT = 161;
+     VK_RCONTROL = 163;
+     VK_RMENU = 165;
+  { ImmGetVirtualKey  }
+     VK_PROCESSKEY = 229;
+  { Keystroke Message Flags  }
+     KF_ALTDOWN = 8192;
+     KF_DLGMODE = 2048;
+     KF_EXTENDED = 256;
+     KF_MENUMODE = 4096;
+     KF_REPEAT = 16384;
+     KF_UP = 32768;
+  { GetKeyboardLayoutName  }
+     KL_NAMELENGTH = 9;
+  { WM_ACTIVATE message  }
+     WA_ACTIVE = 1;
+     WA_CLICKACTIVE = 2;
+     WA_INACTIVE = 0;
+  { WM_ACTIVATE message  }
+     PWR_CRITICALRESUME = 3;
+     PWR_SUSPENDREQUEST = 1;
+     PWR_SUSPENDRESUME = 2;
+     PWR_FAIL = -(1);
+     PWR_OK = 1;
+  { WM_NOTIFYFORMAT message  }
+     NF_QUERY = 3;
+     NF_REQUERY = 4;
+     NFR_ANSI = 1;
+     NFR_UNICODE = 2;
+  { WM_SIZING message  }
+     WMSZ_BOTTOM = 6;
+     WMSZ_BOTTOMLEFT = 7;
+     WMSZ_BOTTOMRIGHT = 8;
+     WMSZ_LEFT = 1;
+     WMSZ_RIGHT = 2;
+     WMSZ_TOP = 3;
+     WMSZ_TOPLEFT = 4;
+     WMSZ_TOPRIGHT = 5;
+  { WM_MOUSEACTIVATE message  }
+     MA_ACTIVATE = 1;
+     MA_ACTIVATEANDEAT = 2;
+     MA_NOACTIVATE = 3;
+     MA_NOACTIVATEANDEAT = 4;
+  { WM_SIZE message  }
+     SIZE_MAXHIDE = 4;
+     SIZE_MAXIMIZED = 2;
+     SIZE_MAXSHOW = 3;
+     SIZE_MINIMIZED = 1;
+     SIZE_RESTORED = 0;
+  { WM_NCCALCSIZE message  }
+     WVR_ALIGNTOP = 16;
+     WVR_ALIGNLEFT = 32;
+     WVR_ALIGNBOTTOM = 64;
+     WVR_ALIGNRIGHT = 128;
+     WVR_HREDRAW = 256;
+     WVR_VREDRAW = 512;
+     WVR_REDRAW = 768;
+     WVR_VALIDRECTS = 1024;
+  { WM_NCHITTEST message  }
+     HTBOTTOM = 15;
+     HTBOTTOMLEFT = 16;
+     HTBOTTOMRIGHT = 17;
+     HTCAPTION = 2;
+     HTCLIENT = 1;
+     HTERROR = -(2);
+     HTGROWBOX = 4;
+     HTHSCROLL = 6;
+     HTLEFT = 10;
+     HTMENU = 5;
+     HTNOWHERE = 0;
+     HTREDUCE = 8;
+     HTRIGHT = 11;
+     HTSIZE = 4;
+     HTSYSMENU = 3;
+     HTTOP = 12;
+     HTTOPLEFT = 13;
+     HTTOPRIGHT = 14;
+     HTTRANSPARENT = -(1);
+     HTVSCROLL = 7;
+     HTZOOM = 9;
+  { Mouse messages  }
+     MK_CONTROL = 8;
+     MK_LBUTTON = 1;
+     MK_MBUTTON = 16;
+     MK_RBUTTON = 2;
+     MK_SHIFT = 4;
+  { WNDCLASS structure  }
+     CS_BYTEALIGNCLIENT = 4096;
+     CS_BYTEALIGNWINDOW = 8192;
+     CS_CLASSDC = 64;
+     CS_DBLCLKS = 8;
+     CS_GLOBALCLASS = 16384;
+     CS_HREDRAW = 2;
+     CS_KEYCVTWINDOW = 4;
+     CS_NOCLOSE = 512;
+     CS_NOKEYCVT = 256;
+     CS_OWNDC = 32;
+     CS_PARENTDC = 128;
+     CS_SAVEBITS = 2048;
+     CS_VREDRAW = 1;
+     DLGWINDOWEXTRA = 30;
+  { ACCEL structure  }
+     FALT = 16;
+     FCONTROL = 8;
+     FNOINVERT = 2;
+     FSHIFT = 4;
+     FVIRTKEY = 1;
+  { MENUITEMINFO structure  }
+     MIIM_CHECKMARKS = 8;
+     MIIM_DATA = 32;
+     MIIM_ID = 2;
+     MIIM_STATE = 1;
+     MIIM_SUBMENU = 4;
+     MIIM_TYPE = 16;
+     MFT_BITMAP = $4;
+     MFT_MENUBARBREAK = $20;
+     MFT_MENUBREAK = $40;
+     MFT_OWNERDRAW = $100;
+     MFT_RADIOCHECK = $200;
+     MFT_RIGHTJUSTIFY = $4000;
+     MFT_SEPARATOR = $800;
+     MFT_STRING = 0;
+     MFS_CHECKED = $8;
+     MFS_DEFAULT = $1000;
+     MFS_DISABLED = $3;
+     MFS_ENABLED = 0;
+     MFS_GRAYED = $3;
+     MFS_HILITE = $80;
+     MFS_UNCHECKED = 0;
+     MFS_UNHILITE = 0;
+  { SERIALKEYS structure  }
+     SERKF_AVAILABLE = 2;
+     SERKF_INDICATOR = 4;
+     SERKF_SERIALKEYSON = 1;
+  { FILTERKEYS structure  }
+     FKF_AVAILABLE = 2;
+     FKF_CLICKON = 64;
+     FKF_FILTERKEYSON = 1;
+     FKF_HOTKEYACTIVE = 4;
+     FKF_HOTKEYSOUND = 16;
+     FKF_CONFIRMHOTKEY = 8;
+     FKF_INDICATOR = 32;
+  { HELPINFO structure  }
+     HELPINFO_MENUITEM = 2;
+     HELPINFO_WINDOW = 1;
+  { WM_PRINT message  }
+     PRF_CHECKVISIBLE = $1;
+     PRF_CHILDREN = $10;
+     PRF_CLIENT = $4;
+     PRF_ERASEBKGND = $8;
+     PRF_NONCLIENT = $2;
+     PRF_OWNED = $20;
+  { MapWindowPoints  }
+    { was #define dname def_expr }
+    function HWND_DESKTOP : HWND;
+
+  { WM_SYSCOMMAND message  }
+
+  const
+     SC_CLOSE = 61536;
+     SC_CONTEXTHELP = 61824;
+     SC_DEFAULT = 61792;
+     SC_HOTKEY = 61776;
+     SC_HSCROLL = 61568;
+     SC_KEYMENU = 61696;
+     SC_MAXIMIZE = 61488;
+     SC_ZOOM = 61488;
+     SC_MINIMIZE = 61472;
+     SC_ICON = 61472;
+     SC_MONITORPOWER = 61808;
+     SC_MOUSEMENU = 61584;
+     SC_MOVE = 61456;
+     SC_NEXTWINDOW = 61504;
+     SC_PREVWINDOW = 61520;
+     SC_RESTORE = 61728;
+     SC_SCREENSAVE = 61760;
+     SC_SIZE = 61440;
+     SC_TASKLIST = 61744;
+     SC_VSCROLL = 61552;
+  { DM_GETDEFID message  }
+     DC_HASDEFID = 21323;
+  { WM_GETDLGCODE message  }
+     DLGC_BUTTON = 8192;
+     DLGC_DEFPUSHBUTTON = 16;
+     DLGC_HASSETSEL = 8;
+     DLGC_RADIOBUTTON = 64;
+     DLGC_STATIC = 256;
+     DLGC_UNDEFPUSHBUTTON = 32;
+     DLGC_WANTALLKEYS = 4;
+     DLGC_WANTARROWS = 1;
+     DLGC_WANTCHARS = 128;
+     DLGC_WANTMESSAGE = 4;
+     DLGC_WANTTAB = 2;
+  { EM_SETMARGINS message  }
+     EC_LEFTMARGIN = 1;
+     EC_RIGHTMARGIN = 2;
+     EC_USEFONTINFO = 65535;
+  { LB_SETCOUNT message  }
+     LB_ERR = -(1);
+     LB_ERRSPACE = -(2);
+     LB_OKAY = 0;
+  { CB_DIR message  }
+     CB_ERR = -(1);
+     CB_ERRSPACE = -(2);
+  { WM_IME_CONTROL message  }
+     IMC_GETCANDIDATEPOS = 7;
+     IMC_GETCOMPOSITIONFONT = 9;
+     IMC_GETCOMPOSITIONWINDOW = 11;
+     IMC_GETSTATUSWINDOWPOS = 15;
+     IMC_CLOSESTATUSWINDOW = 33;
+     IMC_OPENSTATUSWINDOW = 34;
+     IMC_SETCANDIDATEPOS = 8;
+     IMC_SETCOMPOSITIONFONT = 10;
+     IMC_SETCOMPOSITIONWINDOW = 12;
+     IMC_SETSTATUSWINDOWPOS = 16;
+  { WM_IME_CONTROL message  }
+     IMN_CHANGECANDIDATE = 3;
+     IMN_CLOSECANDIDATE = 4;
+     IMN_CLOSESTATUSWINDOW = 1;
+     IMN_GUIDELINE = 13;
+     IMN_OPENCANDIDATE = 5;
+     IMN_OPENSTATUSWINDOW = 2;
+     IMN_SETCANDIDATEPOS = 9;
+     IMN_SETCOMPOSITIONFONT = 10;
+     IMN_SETCOMPOSITIONWINDOW = 11;
+     IMN_SETCONVERSIONMODE = 6;
+     IMN_SETOPENSTATUS = 8;
+     IMN_SETSENTENCEMODE = 7;
+     IMN_SETSTATUSWINDOWPOS = 12;
+     IMN_PRIVATE = 14;
+  { STICKYKEYS structure  }
+     SKF_AUDIBLEFEEDBACK = 64;
+     SKF_AVAILABLE = 2;
+     SKF_CONFIRMHOTKEY = 8;
+     SKF_HOTKEYACTIVE = 4;
+     SKF_HOTKEYSOUND = 16;
+     SKF_INDICATOR = 32;
+     SKF_STICKYKEYSON = 1;
+     SKF_TRISTATE = 128;
+     SKF_TWOKEYSOFF = 256;
+  { MOUSEKEYS structure  }
+     MKF_AVAILABLE = 2;
+     MKF_CONFIRMHOTKEY = 8;
+     MKF_HOTKEYACTIVE = 4;
+     MKF_HOTKEYSOUND = 16;
+     MKF_INDICATOR = 32;
+     MKF_MOUSEKEYSON = 1;
+     MKF_MODIFIERS = 64;
+     MKF_REPLACENUMBERS = 128;
+  { SOUNDSENTRY structure  }
+     SSF_AVAILABLE = 2;
+     SSF_SOUNDSENTRYON = 1;
+     SSTF_BORDER = 2;
+     SSTF_CHARS = 1;
+     SSTF_DISPLAY = 3;
+     SSTF_NONE = 0;
+     SSGF_DISPLAY = 3;
+     SSGF_NONE = 0;
+     SSWF_CUSTOM = 4;
+     SSWF_DISPLAY = 3;
+     SSWF_NONE = 0;
+     SSWF_TITLE = 1;
+     SSWF_WINDOW = 2;
+  { ACCESSTIMEOUT structure  }
+     ATF_ONOFFFEEDBACK = 2;
+     ATF_TIMEOUTON = 1;
+  { HIGHCONTRAST structure  }
+     HCF_AVAILABLE = 2;
+     HCF_CONFIRMHOTKEY = 8;
+     HCF_HIGHCONTRASTON = 1;
+     HCF_HOTKEYACTIVE = 4;
+     HCF_HOTKEYAVAILABLE = 64;
+     HCF_HOTKEYSOUND = 16;
+     HCF_INDICATOR = 32;
+  { TOGGLEKEYS structure  }
+     TKF_AVAILABLE = 2;
+     TKF_CONFIRMHOTKEY = 8;
+     TKF_HOTKEYACTIVE = 4;
+     TKF_HOTKEYSOUND = 16;
+     TKF_TOGGLEKEYSON = 1;
+  { Installable Policy  }
+     PP_DISPLAYERRORS = 1;
+  { SERVICE_INFO structure  }
+     RESOURCEDISPLAYTYPE_DOMAIN = 1;
+     RESOURCEDISPLAYTYPE_FILE = 4;
+     RESOURCEDISPLAYTYPE_GENERIC = 0;
+     RESOURCEDISPLAYTYPE_GROUP = 5;
+     RESOURCEDISPLAYTYPE_SERVER = 2;
+     RESOURCEDISPLAYTYPE_SHARE = 3;
+  { KEY_EVENT_RECORD structure  }
+     CAPSLOCK_ON = 128;
+     ENHANCED_KEY = 256;
+     LEFT_ALT_PRESSED = 2;
+     LEFT_CTRL_PRESSED = 8;
+     NUMLOCK_ON = 32;
+     RIGHT_ALT_PRESSED = 1;
+     RIGHT_CTRL_PRESSED = 4;
+     SCROLLLOCK_ON = 64;
+     SHIFT_PRESSED = 16;
+  { MOUSE_EVENT_RECORD structure  }
+     FROM_LEFT_1ST_BUTTON_PRESSED = 1;
+     RIGHTMOST_BUTTON_PRESSED = 2;
+     FROM_LEFT_2ND_BUTTON_PRESSED = 4;
+     FROM_LEFT_3RD_BUTTON_PRESSED = 8;
+     FROM_LEFT_4TH_BUTTON_PRESSED = 16;
+     DOUBLE_CLICK = 2;
+     MOUSE_MOVED = 1;
+  { INPUT_RECORD structure  }
+     KEY_EVENT = 1;
+     {MOUSE_EVENT = 2; conflict with function mouse_event }
+     cMOUSE_EVENT = 2;
+     WINDOW_BUFFER_SIZE_EVENT = 4;
+     MENU_EVENT = 8;
+     FOCUS_EVENT = 16;
+  { BITMAPINFOHEADER structure  }
+     BI_RGB = 0;
+     BI_RLE8 = 1;
+     BI_RLE4 = 2;
+     BI_BITFIELDS = 3;
+  { Extensions to OpenGL  }
+  { ChoosePixelFormat  }
+     PFD_DRAW_TO_WINDOW = $4;
+     PFD_DRAW_TO_BITMAP = $8;
+     PFD_SUPPORT_GDI = $10;
+     PFD_SUPPORT_OPENGL = $20;
+     PFD_DOUBLEBUFFER = $1;
+     PFD_STEREO = $2;
+     PFD_DOUBLEBUFFER_DONTCARE = $40000000;
+     PFD_STEREO_DONTCARE = $80000000;
+     PFD_TYPE_RGBA = 0;
+     PFD_TYPE_COLORINDEX = 1;
+     PFD_MAIN_PLANE = 0;
+     PFD_OVERLAY_PLANE = 1;
+     PFD_UNDERLAY_PLANE = -(1);
+  { wglUseFontOutlines  }
+     WGL_FONT_LINES = 0;
+     WGL_FONT_POLYGONS = 1;
+  { LAYERPLANEDESCRIPTOR structure  }
+  { PIXELFORMATDESCRIPTOR structure  }
+     PFD_GENERIC_FORMAT = $40;
+     PFD_NEED_PALETTE = $80;
+     PFD_NEED_SYSTEM_PALETTE = $100;
+     PFD_SWAP_COPY = $400;
+     PFD_SWAP_EXCHANGE = $200;
+  { TEXTMETRIC structure  }
+     TMPF_FIXED_PITCH = $1;
+     TMPF_VECTOR = $2;
+     TMPF_TRUETYPE = $4;
+     TMPF_DEVICE = $8;
+  { --------------------- old stuff, need to organize! ---------------  }
+  { BEGINNING of windowsx.h stuff from old headers:  }
+  {  Not convertable by H2PAS
+  #define __CRACK_VOID_F(fn,args) (void)(fn args)
+  #define __CRACK_BOOL_F(fn,args) (BOOL)(fn args)
+  #define __CRACK_HMENU_F(fn,args) (HMENU)(fn args)
+  #define __CRACK_HWND_F(fn,args) (HWND)(fn args)
+  #define __CRACK_LONG_F(fn, args) (LRESULT)(fn args)
+  #define __CRACK_ZERO_F(fn, args)  (fn args,0)
+   }
+  { was #define dname(params) def_expr }
+  function GetFirstChild(h:HWND):HWND;
+
+  { was #define dname(params) def_expr }
+  function GetNextSibling(h:HWND):HWND;
+
+  { was #define dname(params) def_expr }
+  function GetWindowID(h:HWND):longint;
+
+  { was #define dname(params) def_expr }
+  function SubclassWindow(h:HWND; p:LONG):LONG;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_COMMAND_CMD(w,l : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_COMMAND_ID(w,l : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_CTLCOLOR_HDC(w,l,msg : longint) : HDC;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_CTLCOLOR_HWND(w,l,msg : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_HSCROLL_CODE(w,l : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_HSCROLL_HWND(w,l : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_HSCROLL_POS(w,l : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_MDIACTIVATE_FACTIVATE(h,a,b : longint) : longint;
+    { return type might be wrong }   
 
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_MDIACTIVATE_HWNDACTIVATE(a,b : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_MDIACTIVATE_HWNDDEACT(a,b : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_VSCROLL_CODE(w,l : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_VSCROLL_HWND(w,l : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_VSCROLL_POS(w,l : longint) : longint;
+    { return type might be wrong }   
+
+  {  Not convertable by H2PAS
+  #define FORWARD_WM_CLOSE(h, fn)                 __CRACK_VOID_F(fn,(h, WM_CLOSE, 0, 0))
+  #define FORWARD_WM_COMMAND(h, id, c, n, fn)     __CRACK_VOID_F(fn,(h, WM_COMMAND, MAKEWPARAM(id,n), (LPARAM)c))
+  #define FORWARD_WM_CREATE(h, p, fn)             __CRACK_BOOL_F(fn,(h, WM_CREATE, 0, (LPARAM)p))
+  #define FORWARD_WM_DESTROY(h, fn)               __CRACK_VOID_F(fn,(h, WM_DESTROY, 0, 0))
+  #define FORWARD_WM_ENABLE(h, e, fn)             __CRACK_VOID_F(fn,(h, WM_ENABLE, (WPARAM)e, 0))
+  #define FORWARD_WM_INITDIALOG(h, c, l, fn)      __CRACK_BOOL_F(fn,(h, WM_INITDIALOG, (WPARAM)c, l))
+  #define FORWARD_WM_MDICASCADE(h, c, fn)         __CRACK_BOOL_F(fn,(h, WM_MDICASCADE, (WPARAM)c, 0))
+  #define FORWARD_WM_MDIDESTROY(h, d, fn)         __CRACK_VOID_F(fn,(h, WM_MDIDESTROY, (WPARAM)d, 0))
+  #define FORWARD_WM_MDIGETACTIVE(h, fn)          __CRACK_HWND_F(fn,(h, WM_MDIGETACTIVE, 0, 0))
+  #define FORWARD_WM_MDIICONARRANGE(h, fn)        __CRACK_VOID_F(fn,(h, WM_MDIICONARRANGE, 0, 0))
+  #define FORWARD_WM_MDISETMENU(h, fr, hf, hw, fn) __CRACK_HMENU_F(fn,(h, WM_MDISETMENU, (WPARAM)((fr) ? (hf) : 0), (LPARAM)(hw)))
+  #define FORWARD_WM_MDITILE(h, c, fn)            __CRACK_BOOL_F(fn,(h, WM_MDITILE, (WPARAM)(c), 0))
+  #define FORWARD_WM_PAINT(h, fn)                 __CRACK_VOID_F(fn,(h, WM_PAINT, 0, 0))
+  #define FORWARD_WM_QUERYENDSESSION(h, fn)       __CRACK_BOOL_F(fn,(h, WM_QUERYENDSESSION, 0, 0))
+  #define FORWARD_WM_SIZE(h, state, cx, cy, fn)   __CRACK_VOID_F(fn,(h, WM_SIZE, (WPARAM)state, MAKELPARAM(cx, cy)))
+  #define FORWARD_WM_SYSCOMMAND(h, c, x, y, fn)   __CRACK_VOID_F(fn,(h, WM_SYSCOMMAND, (WPARAM)c, MAKELPARAM(x, y)))
+  
+  #define HANDLE_WM_CLOSE(h, w, l, fn)            __CRACK_ZERO_F(fn,(h));
+  #define HANDLE_WM_COMMAND(h, w, l, fn)          __CRACK_ZERO_F(fn,(h, SEXT_LOWORD(w), (HWND)l, HIWORD(w)))
+  #define HANDLE_WM_CREATE(h, w, l, fn)           (LRESULT)((fn(h, (CREATESTRUCT  )l)) ? 0 : -1)
+  #define HANDLE_WM_DESTROY(h, w, l, fn)          __CRACK_ZERO_F(fn,(h))
+  #define HANDLE_WM_ENABLE(h, w, l, fn)           __CRACK_ZERO_F(fn,(h, (BOOL)w))
+  #define HANDLE_WM_INITDIALOG(h, w, l, fn)       __CRACK_LONG_F(fn,(h, (HWND)w, l))
+  #define HANDLE_WM_MDICASCADE(h, w, l, fn)       __CRACK_LONG_F(fn, (h, (UINT)w)
+  #define HANDLE_WM_MDIDESTROY(h, w, l, fn)       __CRACK_ZERO_F(fn,(h, (HWND)w))
+  #define HANDLE_WM_MDIGETACTIVE(h, w, l, fn)     __CRACK_LONG_F(fn,(h))
+  #define HANDLE_WM_MDIICONARRANGE(h, w, l, fn)   __CRACK_ZERO_F(fn,(h))
+  #define HANDLE_WM_MDISETMENU(h, w, l, fn)       __CRACK_LONG_F(fn,(h, (BOOL)w, (HMENU)w, (HMENU)l)
+  #define HANDLE_WM_MDITILE(h, w, l, fn)          __CRACK_LONG_F(fn,(h, (UINT)w))
+  #define HANDLE_WM_PAINT(h, w, l, fn)            __CRACK_ZERO_F(fn,(h))
+  #define HANDLE_WM_QUERYENDSESSION(h, w, l, fn)  MAKELRESULT(fn(h), 0)
+  #define HANDLE_WM_SIZE(h, w, l, fn)             __CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(l), SEXT_HIWORD(l)))
+  #define HANDLE_WM_SYSCOMMAND(h, w, l, fn)       __CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(l), SEXT_HIWORD(l)))
+   }
+  { Totally disgusting! get wParam and lParam from the environment !  }
+  {  Not convertable by H2PAS
+  #define HANDLE_MSG(h, message, fn) case message: return HANDLE_##message(h, wParam, lParam, fn)
+   }
+  { END OF windowsx.h stuff from old headers  }
+  { ------------------------------------------------------------------  }
+  { BEGINNING of shellapi.h stuff from old headers  }
+
+  const
+     SE_ERR_SHARE = 26;
+     SE_ERR_ASSOCINCOMPLETE = 27;
+     SE_ERR_DDETIMEOUT = 28;
+     SE_ERR_DDEFAIL = 29;
+     SE_ERR_DDEBUSY = 30;
+     SE_ERR_NOASSOC = 31;
+  { END OF shellapi.h stuff from old headers  }
+  { ------------------------------------------------------------------  }
+  { From ddeml.h in old Cygnus headers  }
+     XCLASS_BOOL = $1000;
+     XCLASS_DATA = $2000;
+     XCLASS_FLAGS = $4000;
+     XCLASS_MASK = $fc00;
+     XCLASS_NOTIFICATION = $8000;
+     XTYPF_NOBLOCK = $0002;
+     XTYP_ADVDATA = $4010;
+     XTYP_ADVREQ = $2022;
+     XTYP_ADVSTART = $1030;
+     XTYP_ADVSTOP = $8040;
+     XTYP_CONNECT = $1062;
+     XTYP_CONNECT_CONFIRM = $8072;
+     XTYP_DISCONNECT = $80c2;
+     XTYP_EXECUTE = $4050;
+     XTYP_POKE = $4090;
+     XTYP_REQUEST = $20b0;
+     XTYP_WILDCONNECT = $20E2;
+     XTYP_REGISTER = $80A2;
+     XTYP_ERROR = $8002;
+     XTYP_XACT_COMPLETE = $8080;
+     XTYP_UNREGISTER = $80D2;
+     DMLERR_DLL_USAGE = $4004;
+     DMLERR_INVALIDPARAMETER = $4006;
+     DMLERR_NOTPROCESSED = $4009;
+     DMLERR_POSTMSG_FAILED = $400c;
+     DMLERR_SERVER_DIED = $400e;
+     DMLERR_SYS_ERROR = $400f;
+     DMLERR_BUSY = $4001;
+     DMLERR_DATAACKTIMEOUT = $4002;
+     DMLERR_ADVACKTIMEOUT = $4000;
+     DMLERR_DLL_NOT_INITIALIZED = $4003;
+     DMLERR_LOW_MEMORY = $4007;
+     DMLERR_MEMORY_ERROR = $4008;
+     DMLERR_POKEACKTIMEOUT = $400b;
+     DMLERR_NO_CONV_ESTABLISHED = $400a;
+     DMLERR_REENTRANCY = $400d;
+     DMLERR_UNFOUND_QUEUE_ID = $4011;
+     DMLERR_UNADVACKTIMEOUT = $4010;
+     DMLERR_EXECACKTIMEOUT = $4005;
+     DDE_FACK = $8000;
+     DDE_FNOTPROCESSED = $0000;
+     DNS_REGISTER = $0001;
+     DNS_UNREGISTER = $0002;
+     CP_WINANSI = 1004;
+     CP_WINUNICODE = 1200;
+  {  Not convertable by H2PAS
+  #define EXPENTRY CALLBACK
+   }
+     APPCLASS_STANDARD = $00000000;
+  { End of stuff from ddeml.h in old Cygnus headers  }
+  { -----------------------------------------------  }
+     BKMODE_LAST = 2;
+     CTLCOLOR_MSGBOX = 0;
+     CTLCOLOR_EDIT = 1;
+     CTLCOLOR_LISTBOX = 2;
+     CTLCOLOR_BTN = 3;
+     CTLCOLOR_DLG = 4;
+     CTLCOLOR_SCROLLBAR = 5;
+     CTLCOLOR_STATIC = 6;
+     CTLCOLOR_MAX = 7;
+     META_SETMAPMODE = $0103;
+     META_SETWINDOWORG = $020B;
+     META_SETWINDOWEXT = $020C;
+     POLYFILL_LAST = 2;
+     STATUS_WAIT_0 = $00000000;
+     STATUS_ABANDONED_WAIT_0 = $00000080;
+     STATUS_USER_APC = $000000C0;
+     STATUS_TIMEOUT = $00000102;
+     STATUS_PENDING = $00000103;
+     STATUS_GUARD_PAGE_VIOLATION = $80000001;
+     STATUS_DATATYPE_MISALIGNMENT = $80000002;
+     STATUS_BREAKPOINT = $80000003;
+     STATUS_SINGLE_STEP = $80000004;
+     STATUS_IN_PAGE_ERROR = $C0000006;
+     STATUS_INVALID_HANDLE = $C0000008;
+     STATUS_ILLEGAL_INSTRUCTION = $C000001D;
+     STATUS_NONCONTINUABLE_EXCEPTION = $C0000025;
+     STATUS_INVALID_DISPOSITION = $C0000026;
+     STATUS_ARRAY_BOUNDS_EXCEEDED = $C000008C;
+     STATUS_FLOAT_DENORMAL_OPERAND = $C000008D;
+     STATUS_FLOAT_DIVIDE_BY_ZERO = $C000008E;
+     STATUS_FLOAT_INEXACT_RESULT = $C000008F;
+     STATUS_FLOAT_INVALID_OPERATION = $C0000090;
+     STATUS_FLOAT_OVERFLOW = $C0000091;
+     STATUS_FLOAT_STACK_CHECK = $C0000092;
+     STATUS_FLOAT_UNDERFLOW = $C0000093;
+     STATUS_INTEGER_DIVIDE_BY_ZERO = $C0000094;
+     STATUS_INTEGER_OVERFLOW = $C0000095;
+     STATUS_PRIVILEGED_INSTRUCTION = $C0000096;
+     STATUS_STACK_OVERFLOW = $C00000FD;
+     STATUS_CONTROL_C_EXIT = $C000013A;
+{$define EXCEPTION_CTRL_C}
+     PROCESSOR_ARCHITECTURE_INTEL = 0;
+     PROCESSOR_ARCHITECTURE_MIPS = 1;
+     PROCESSOR_ARCHITECTURE_ALPHA = 2;
+     PROCESSOR_ARCHITECTURE_PPC = 3;
+  { was #define dname(params) def_expr }
+  function FreeModule(h:HINSTANCE):WINBOOL;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function MakeProcInstance(p,i : longint) : longint;
+    { return type might be wrong }   
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function FreeProcInstance(p : longint) : longint;
+    { return type might be wrong }   
+
+
+  const
+    { _fmemcpy = memcpy; these are functions }
+  { Used by wxwindows.  }
+     SIZEFULLSCREEN = SIZE_MAXIMIZED;
+     SIZENORMAL = SIZE_RESTORED;
+     SIZEICONIC = SIZE_MINIMIZED;
+     { NPLOGPALETTE = PLOGPALETTE; probably a type }
+  { In the old winnt.h  }
+  (*  Not convertable by H2PAS anyhow with if 0
+  #if 0
+  #ifdef __ANAL__
+  #define DECLARE_HANDLE(h) struct h##__ { int dummy; }; typedef struct h##__  h
+  #else
+  #define DECLARE_HANDLE(h)  typedef void  h
+  #endif
+  DECLARE_HANDLE(HANDLE);
+  #endif
+   *)
+{$ifdef __PPC__}
+
+  const
+     CONTEXT_CONTROL = 1;
+     CONTEXT_FLOATING_POINT = 2;
+     CONTEXT_INTEGER = 4;
+     CONTEXT_DEBUG_REGISTERS = 8;
+     CONTEXT_FULL = (CONTEXT_CONTROL or CONTEXT_FLOATING_POINT) or CONTEXT_INTEGER;
+     CONTEXT_DEBUGGER = CONTEXT_FULL;
+{$else}
+  { x86  }
+  { The doc refered me to winnt.h, so I had to look...  }
+
+  const
+     SIZE_OF_80387_REGISTERS = 80;
+  { Values for contextflags  }
+     CONTEXT_i386 = $10000;
+     CONTEXT_CONTROL = CONTEXT_i386 or 1;
+     CONTEXT_INTEGER = CONTEXT_i386 or 2;
+     CONTEXT_SEGMENTS = CONTEXT_i386 or 4;
+     CONTEXT_FLOATING_POINT = CONTEXT_i386 or 8;
+     CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 or $10;
+     CONTEXT_FULL = (CONTEXT_CONTROL or CONTEXT_INTEGER) or CONTEXT_SEGMENTS;
+  { our own invention  }
+     FLAG_TRACE_BIT = $100;
+     CONTEXT_DEBUGGER = CONTEXT_FULL or CONTEXT_FLOATING_POINT;
+{$endif}
+
+  const
+     { ASCIICHAR = AsciiChar; this is the kind of thing that can
+     make problems for FPC !! }
+  {  ignored in H2PAS
+  #define FAR
+     handled in H2PAS
+  #define PACKED __attribute__((packed))
+   }
+     FILTER_TEMP_DUPLICATE_ACCOUNT = $0001;
+     FILTER_NORMAL_ACCOUNT = $0002;
+     FILTER_INTERDOMAIN_TRUST_ACCOUNT = $0008;
+     FILTER_WORKSTATION_TRUST_ACCOUNT = $0010;
+     FILTER_SERVER_TRUST_ACCOUNT = $0020;
+     LOGON32_LOGON_INTERACTIVE = $02;
+     LOGON32_LOGON_BATCH = $04;
+     LOGON32_LOGON_SERVICE = $05;
+     LOGON32_PROVIDER_DEFAULT = $00;
+     LOGON32_PROVIDER_WINNT35 = $01;
+     QID_SYNC = $FFFFFFFF;
+  { Magic numbers in PE executable header.   }
+  { e_magic field  }
+     IMAGE_DOS_SIGNATURE = $5a4d;
+  { nt_signature field  }
+     IMAGE_NT_SIGNATURE = $4550;
+{$endif}
+  { _GNU_H_WINDOWS32_DEFINES  }
+
+{$endif read_interface}
+
+{$ifndef windows_include_files}
   implementation
 
-end.
+    uses
+{$ifdef UNICODE}
+      unidef,
+{$else not UNICODE}
+      ascdef,
+{$endif UNICODE}
+      func;
+    
+    const External_library='kernel32'; {Setup as you need!}
+
+{$endif not windows_include_files}
+
+{$ifdef read_implementation}
+    { was #define dname def_expr }
+    function UNICODE_NULL : WCHAR;
+      begin
+         UNICODE_NULL:=WCHAR(0);
+      end;
+
+    { was #define dname def_expr }
+    function RT_ACCELERATOR : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_ACCELERATOR:=MAKEINTRESOURCE(9);
+      end;
+
+    { was #define dname def_expr }
+    function RT_BITMAP : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_BITMAP:=MAKEINTRESOURCE(2);
+      end;
+
+    { was #define dname def_expr }
+    function RT_DIALOG : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_DIALOG:=MAKEINTRESOURCE(5);
+      end;
+
+    { was #define dname def_expr }
+    function RT_FONT : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_FONT:=MAKEINTRESOURCE(8);
+      end;
+
+    { was #define dname def_expr }
+    function RT_FONTDIR : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_FONTDIR:=MAKEINTRESOURCE(7);
+      end;
+
+    { was #define dname def_expr }
+    function RT_MENU : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_MENU:=MAKEINTRESOURCE(4);
+      end;
+
+    { was #define dname def_expr }
+    function RT_RCDATA : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_RCDATA:=MAKEINTRESOURCE(10);
+      end;
+
+    { was #define dname def_expr }
+    function RT_STRING : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_STRING:=MAKEINTRESOURCE(6);
+      end;
+
+    { was #define dname def_expr }
+    function RT_MESSAGETABLE : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_MESSAGETABLE:=MAKEINTRESOURCE(11);
+      end;
+
+    { was #define dname def_expr }
+    function RT_CURSOR : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_CURSOR:=MAKEINTRESOURCE(1);
+      end;
+
+    { was #define dname def_expr }
+    function RT_GROUP_CURSOR : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_GROUP_CURSOR:=MAKEINTRESOURCE(12);
+      end;
+
+    { was #define dname def_expr }
+    function RT_ICON : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_ICON:=MAKEINTRESOURCE(3);
+      end;
+
+    { was #define dname def_expr }
+    function RT_GROUP_ICON : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_GROUP_ICON:=MAKEINTRESOURCE(13);
+      end;
+
+    { was #define dname def_expr }
+    function RT_VERSION : LPTSTR;
+      { return type might be wrong }
+      begin
+         RT_VERSION:=MAKEINTRESOURCE(16);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_ARROW : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_ARROW:=MAKEINTRESOURCE(32512);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_IBEAM : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_IBEAM:=MAKEINTRESOURCE(32513);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_WAIT : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_WAIT:=MAKEINTRESOURCE(32514);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_CROSS : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_CROSS:=MAKEINTRESOURCE(32515);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_UPARROW : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_UPARROW:=MAKEINTRESOURCE(32516);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_SIZENWSE : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_SIZENWSE:=MAKEINTRESOURCE(32642);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_SIZENESW : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_SIZENESW:=MAKEINTRESOURCE(32643);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_SIZEWE : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_SIZEWE:=MAKEINTRESOURCE(32644);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_SIZENS : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_SIZENS:=MAKEINTRESOURCE(32645);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_SIZEALL : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_SIZEALL:=MAKEINTRESOURCE(32646);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_NO : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_NO:=MAKEINTRESOURCE(32648);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_APPSTARTING : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_APPSTARTING:=MAKEINTRESOURCE(32650);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_HELP : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_HELP:=MAKEINTRESOURCE(32651);
+      end;
+
+    { was #define dname def_expr }
+    function IDI_APPLICATION : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDI_APPLICATION:=MAKEINTRESOURCE(32512);
+      end;
+
+    { was #define dname def_expr }
+    function IDI_HAND : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDI_HAND:=MAKEINTRESOURCE(32513);
+      end;
+
+    { was #define dname def_expr }
+    function IDI_QUESTION : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDI_QUESTION:=MAKEINTRESOURCE(32514);
+      end;
+
+    { was #define dname def_expr }
+    function IDI_EXCLAMATION : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDI_EXCLAMATION:=MAKEINTRESOURCE(32515);
+      end;
+
+    { was #define dname def_expr }
+    function IDI_ASTERISK : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDI_ASTERISK:=MAKEINTRESOURCE(32516);
+      end;
+
+    { was #define dname def_expr }
+    function IDI_WINLOGO : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDI_WINLOGO:=MAKEINTRESOURCE(32517);
+      end;
+
+    { was #define dname def_expr }
+    function IDC_SIZE : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_SIZE:=MAKEINTRESOURCE(32640);
+      end;
 
+    { was #define dname def_expr }
+    function IDC_ICON : LPTSTR;
+      { return type might be wrong }
+      begin
+         IDC_ICON:=MAKEINTRESOURCE(32641);
+      end;
+
+    { was #define dname def_expr }
+    function STD_INPUT_HANDLE : DWORD;
+      begin
+         STD_INPUT_HANDLE:=DWORD(-(10));
+      end;
+
+    { was #define dname def_expr }
+    function STD_OUTPUT_HANDLE : DWORD;
+      begin
+         STD_OUTPUT_HANDLE:=DWORD(-(11));
+      end;
+
+    { was #define dname def_expr }
+    function STD_ERROR_HANDLE : DWORD;
+      begin
+         STD_ERROR_HANDLE:=DWORD(-(12));
+      end;
+
+    { was #define dname def_expr }
+    function INVALID_HANDLE_VALUE : HANDLE;
+      begin
+         INVALID_HANDLE_VALUE:=HANDLE(-(1));
+      end;
+
+    { was #define dname def_expr }
+    function TIME_ZONE_ID_INVALID : DWORD;
+      begin
+         TIME_ZONE_ID_INVALID:=DWORD(-(1));
+      end;
+
+    { was #define dname def_expr }
+    function HWND_BROADCAST : HWND;
+      begin
+         HWND_BROADCAST:=HWND($FFFF);
+      end;
+
+    { was #define dname def_expr }
+    function HKEY_CLASSES_ROOT : HKEY;
+      begin
+         HKEY_CLASSES_ROOT:=HKEY($80000000);
+      end;
+
+    { was #define dname def_expr }
+    function HKEY_CURRENT_USER : HKEY;
+      begin
+         HKEY_CURRENT_USER:=HKEY($80000001);
+      end;
+
+    { was #define dname def_expr }
+    function HKEY_LOCAL_MACHINE : HKEY;
+      begin
+         HKEY_LOCAL_MACHINE:=HKEY($80000002);
+      end;
+
+    { was #define dname def_expr }
+    function HKEY_USERS : HKEY;
+      begin
+         HKEY_USERS:=HKEY($80000003);
+      end;
+
+    { was #define dname def_expr }
+    function HKEY_PERFORMANCE_DATA : HKEY;
+      begin
+         HKEY_PERFORMANCE_DATA:=HKEY($80000004);
+      end;
+
+    { was #define dname def_expr }
+    function HKEY_CURRENT_CONFIG : HKEY;
+      begin
+         HKEY_CURRENT_CONFIG:=HKEY($80000005);
+      end;
+
+    { was #define dname def_expr }
+    function HKEY_DYN_DATA : HKEY;
+      begin
+         HKEY_DYN_DATA:=HKEY($00000006);
+      end;
+
+    { was #define dname def_expr }
+    function HWND_BOTTOM : HWND;
+      begin
+         HWND_BOTTOM:=HWND(1);
+      end;
+
+    { was #define dname def_expr }
+    function HWND_NOTOPMOST : HWND;
+      begin
+         HWND_NOTOPMOST:=HWND(-(2));
+      end;
+
+    { was #define dname def_expr }
+    function HWND_TOP : HWND;
+      begin
+         HWND_TOP:=HWND(0);
+      end;
+
+    { was #define dname def_expr }
+    function HWND_TOPMOST : HWND;
+      begin
+         HWND_TOPMOST:=HWND(-(1));
+      end;
+
+    { was #define dname def_expr }
+    function VS_FILE_INFO : LPTSTR;
+      { return type might be wrong }
+      begin
+         VS_FILE_INFO:=MAKEINTRESOURCE(16);
+      end;
+
+    { was #define dname def_expr }
+    function HINST_COMMCTRL : HINSTANCE;
+      begin
+         HINST_COMMCTRL:=HINSTANCE(-(1));
+      end;
+
+    { was #define dname def_expr }
+    function LPSTR_TEXTCALLBACKW : LPWSTR;
+      begin
+         LPSTR_TEXTCALLBACKW:=LPWSTR(-(1));
+      end;
+
+    { was #define dname def_expr }
+    function LPSTR_TEXTCALLBACKA : LPSTR;
+      begin
+         LPSTR_TEXTCALLBACKA:=LPSTR(-(1));
+      end;
+{$ifdef UNICODE}
+
+  {const this is a function in fact !!
+     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;}
+    function LPSTR_TEXTCALLBACK : LPWSTR;
+      begin
+         LPSTR_TEXTCALLBACK:=LPWSTR(-(1));
+      end;
+     
+{$else}
+
+  {const
+     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA; }
+    function LPSTR_TEXTCALLBACK : LPSTR;
+      begin
+         LPSTR_TEXTCALLBACK:=LPSTR(-(1));
+      end;
+{$endif}
+
+    { was #define dname def_expr }
+    function TVI_ROOT : HTREEITEM;
+      begin
+         TVI_ROOT:=HTREEITEM($FFFF0000);
+      end;
+
+    { was #define dname def_expr }
+    function TVI_FIRST : HTREEITEM;
+      begin
+         TVI_FIRST:=HTREEITEM($FFFF0001);
+      end;
+
+    { was #define dname def_expr }
+    function TVI_LAST : HTREEITEM;
+      begin
+         TVI_LAST:=HTREEITEM($FFFF0002);
+      end;
+
+    { was #define dname def_expr }
+    function TVI_SORT : HTREEITEM;
+      begin
+         TVI_SORT:=HTREEITEM($FFFF0003);
+      end;
+
+    { was #define dname def_expr }
+    function HWND_DESKTOP : HWND;
+      begin
+         HWND_DESKTOP:=HWND(0);
+      end;
+
+  { was #define dname(params) def_expr }
+  function GetFirstChild(h:HWND):HWND;
+    begin
+       GetFirstChild:=GetTopWindow(h);
+    end;
+
+  { was #define dname(params) def_expr }
+  function GetNextSibling(h:HWND):HWND;
+    begin
+       GetNextSibling:=GetWindow(h,GW_HWNDNEXT);
+    end;
+
+  { was #define dname(params) def_expr }
+  function GetWindowID(h:HWND):longint;
+    begin
+       GetWindowID:=GetDlgCtrlID(h);
+    end;
+
+  { was #define dname(params) def_expr }
+  function SubclassWindow(h:HWND; p:LONG):LONG;
+    begin
+       SubclassWindow:=SetWindowLong(h,GWL_WNDPROC,p);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_COMMAND_CMD(w,l : longint) : longint;
+    { return type might be wrong }   
+    begin
+       GET_WM_COMMAND_CMD:=HIWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_COMMAND_ID(w,l : longint) : longint;
+    { return type might be wrong }   
+    begin
+       GET_WM_COMMAND_ID:=LOWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_CTLCOLOR_HDC(w,l,msg : longint) : HDC;
+    begin
+       GET_WM_CTLCOLOR_HDC:=HDC(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_CTLCOLOR_HWND(w,l,msg : longint) : HWND;
+    begin
+       GET_WM_CTLCOLOR_HWND:=HWND(l);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_HSCROLL_CODE(w,l : longint) : longint;
+    { return type might be wrong }   
+    begin
+       GET_WM_HSCROLL_CODE:=LOWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_HSCROLL_HWND(w,l : longint) : HWND;
+    begin
+       GET_WM_HSCROLL_HWND:=HWND(l);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_HSCROLL_POS(w,l : longint) : longint;
+    { return type might be wrong }   
+    begin
+       GET_WM_HSCROLL_POS:=HIWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_MDIACTIVATE_FACTIVATE(h,a,b : longint) : longint;
+    { return type might be wrong }   
+    begin
+       GET_WM_MDIACTIVATE_FACTIVATE:=b = (LONG(h));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_MDIACTIVATE_HWNDACTIVATE(a,b : longint) : HWND;
+    begin
+       GET_WM_MDIACTIVATE_HWNDACTIVATE:=HWND(b);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_MDIACTIVATE_HWNDDEACT(a,b : longint) : HWND;
+    begin
+       GET_WM_MDIACTIVATE_HWNDDEACT:=HWND(a);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_VSCROLL_CODE(w,l : longint) : longint;
+    { return type might be wrong }   
+    begin
+       GET_WM_VSCROLL_CODE:=LOWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_VSCROLL_HWND(w,l : longint) : HWND;
+    begin
+       GET_WM_VSCROLL_HWND:=HWND(l);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function GET_WM_VSCROLL_POS(w,l : longint) : longint;
+    { return type might be wrong }   
+    begin
+       GET_WM_VSCROLL_POS:=HIWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  function FreeModule(h:HINSTANCE):WINBOOL;
+    begin
+       FreeModule:=FreeLibrary(h);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function MakeProcInstance(p,i : longint) : longint;
+    { return type might be wrong }   
+    begin
+       MakeProcInstance:=p;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function FreeProcInstance(p : longint) : longint;
+    { return type might be wrong }   
+    begin
+       FreeProcInstance:=p;
+    end;
+
+{$endif read_implementation}
+
+{$ifndef windows_include_files}
+end.
+{$endif not windows_include_files}
 {
   $Log$
-  Revision 1.4  1998-06-25 08:41:47  florian
+  Revision 1.5  1998-08-31 11:53:54  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+  Revision 1.4  1998/06/25 08:41:47  florian
     * better rtti
 
   Revision 1.3  1998/06/10 10:39:12  peter

+ 767 - 0
rtl/win32/errors.pp

@@ -0,0 +1,767 @@
+{
+    $Id$
+    This file is part of the Free Pascal run time library.
+    This unit contains the record definition for the Win32 API
+    Copyright (c) 1993,97 by Florian KLaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
+
+
+{$ifndef windows_include_files}
+
+unit errors;
+
+{  Automatically converted by H2PAS.EXE from errors.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
+
+
+  interface
+
+{$endif not windows_include_files}
+
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     Errors.h
+  
+     Windows32 API error codes
+  
+     Copyright (C) 1996 Free Software Foundation, Inc.
+  
+     Author: Scott Christley <[email protected]>
+  
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+{$ifndef _GNU_H_WINDOWS32_ERROR}
+{$define _GNU_H_WINDOWS32_ERROR}
+{ C++ extern C conditionnal removed }
+  { __cplusplus  }
+  { Numerical order  }
+
+  const
+     LZERROR_UNKNOWNALG = -(8);
+     LZERROR_BADVALUE = -(7);
+     LZERROR_GLOBLOCK = -(6);
+     LZERROR_GLOBALLOC = -(5);
+     LZERROR_WRITE = -(4);
+     LZERROR_READ = -(3);
+     LZERROR_BADOUTHANDLE = -(2);
+     LZERROR_BADINHANDLE = -(1);
+     NO_ERROR = 0;
+     ERROR_SUCCESS = 0;
+     ERROR_INVALID_FUNCTION = 1;
+     ERROR_FILE_NOT_FOUND = 2;
+     ERROR_PATH_NOT_FOUND = 3;
+     ERROR_TOO_MANY_OPEN_FILES = 4;
+     ERROR_ACCESS_DENIED = 5;
+     ERROR_INVALID_HANDLE = 6;
+     ERROR_ARENA_TRASHED = 7;
+     ERROR_NOT_ENOUGH_MEMORY = 8;
+     ERROR_INVALID_BLOCK = 9;
+     ERROR_BAD_ENVIRONMENT = 10;
+     ERROR_BAD_FORMAT = 11;
+     ERROR_INVALID_ACCESS = 12;
+     ERROR_INVALID_DATA = 13;
+     ERROR_OUTOFMEMORY = 14;
+     ERROR_INVALID_DRIVE = 15;
+     ERROR_CURRENT_DIRECTORY = 16;
+     ERROR_NOT_SAME_DEVICE = 17;
+     ERROR_NO_MORE_FILES = 18;
+     ERROR_WRITE_PROTECT = 19;
+     ERROR_BAD_UNIT = 20;
+     ERROR_NOT_READY = 21;
+     ERROR_BAD_COMMAND = 22;
+     ERROR_CRC = 23;
+     ERROR_BAD_LENGTH = 24;
+     ERROR_SEEK = 25;
+     ERROR_NOT_DOS_DISK = 26;
+     ERROR_SECTOR_NOT_FOUND = 27;
+     ERROR_OUT_OF_PAPER = 28;
+     ERROR_WRITE_FAULT = 29;
+     ERROR_READ_FAULT = 30;
+     ERROR_GEN_FAILURE = 31;
+     ERROR_SHARING_VIOLATION = 32;
+     ERROR_LOCK_VIOLATION = 33;
+     ERROR_WRONG_DISK = 34;
+     ERROR_SHARING_BUFFER_EXCEEDED = 36;
+     ERROR_HANDLE_EOF = 38;
+     ERROR_HANDLE_DISK_FULL = 39;
+     ERROR_NOT_SUPPORTED = 50;
+     ERROR_REM_NOT_LIST = 51;
+     ERROR_DUP_NAME = 52;
+     ERROR_BAD_NETPATH = 53;
+     ERROR_NETWORK_BUSY = 54;
+     ERROR_DEV_NOT_EXIST = 55;
+     ERROR_TOO_MANY_CMDS = 56;
+     ERROR_ADAP_HDW_ERR = 57;
+     ERROR_BAD_NET_RESP = 58;
+     ERROR_UNEXP_NET_ERR = 59;
+     ERROR_BAD_REM_ADAP = 60;
+     ERROR_PRINTQ_FULL = 61;
+     ERROR_NO_SPOOL_SPACE = 62;
+     ERROR_PRINT_CANCELLED = 63;
+     ERROR_NETNAME_DELETED = 64;
+     ERROR_NETWORK_ACCESS_DENIED = 65;
+     ERROR_BAD_DEV_TYPE = 66;
+     ERROR_BAD_NET_NAME = 67;
+     ERROR_TOO_MANY_NAMES = 68;
+     ERROR_TOO_MANY_SESS = 69;
+     ERROR_SHARING_PAUSED = 70;
+     ERROR_REQ_NOT_ACCEP = 71;
+     ERROR_REDIR_PAUSED = 72;
+     ERROR_FILE_EXISTS = 80;
+     ERROR_CANNOT_MAKE = 82;
+     ERROR_FAIL_I24 = 83;
+     ERROR_OUT_OF_STRUCTURES = 84;
+     ERROR_ALREADY_ASSIGNED = 85;
+     ERROR_INVALID_PASSWORD = 86;
+     ERROR_INVALID_PARAMETER = 87;
+     ERROR_NET_WRITE_FAULT = 88;
+     ERROR_NO_PROC_SLOTS = 89;
+     ERROR_TOO_MANY_SEMAPHORES = 100;
+     ERROR_EXCL_SEM_ALREADY_OWNED = 101;
+     ERROR_SEM_IS_SET = 102;
+     ERROR_TOO_MANY_SEM_REQUESTS = 103;
+     ERROR_INVALID_AT_INTERRUPT_TIME = 104;
+     ERROR_SEM_OWNER_DIED = 105;
+     ERROR_SEM_USER_LIMIT = 106;
+     ERROR_DISK_CHANGE = 107;
+     ERROR_DRIVE_LOCKED = 108;
+     ERROR_BROKEN_PIPE = 109;
+     ERROR_OPEN_FAILED = 110;
+     ERROR_BUFFER_OVERFLOW = 111;
+     ERROR_DISK_FULL = 112;
+     ERROR_NO_MORE_SEARCH_HANDLES = 113;
+     ERROR_INVALID_TARGET_HANDLE = 114;
+     ERROR_INVALID_CATEGORY = 117;
+     ERROR_INVALID_VERIFY_SWITCH = 118;
+     ERROR_BAD_DRIVER_LEVEL = 119;
+     ERROR_CALL_NOT_IMPLEMENTED = 120;
+     ERROR_SEM_TIMEOUT = 121;
+     ERROR_INSUFFICIENT_BUFFER = 122;
+     ERROR_INVALID_NAME = 123;
+     ERROR_INVALID_LEVEL = 124;
+     ERROR_NO_VOLUME_LABEL = 125;
+     ERROR_MOD_NOT_FOUND = 126;
+     ERROR_PROC_NOT_FOUND = 127;
+     ERROR_WAIT_NO_CHILDREN = 128;
+     ERROR_CHILD_NOT_COMPLETE = 129;
+     ERROR_DIRECT_ACCESS_HANDLE = 130;
+     ERROR_NEGATIVE_SEEK = 131;
+     ERROR_SEEK_ON_DEVICE = 132;
+     ERROR_IS_JOIN_TARGET = 133;
+     ERROR_IS_JOINED = 134;
+     ERROR_IS_SUBSTED = 135;
+     ERROR_NOT_JOINED = 136;
+     ERROR_NOT_SUBSTED = 137;
+     ERROR_JOIN_TO_JOIN = 138;
+     ERROR_SUBST_TO_SUBST = 139;
+     ERROR_JOIN_TO_SUBST = 140;
+     ERROR_SUBST_TO_JOIN = 141;
+     ERROR_BUSY_DRIVE = 142;
+     ERROR_SAME_DRIVE = 143;
+     ERROR_DIR_NOT_ROOT = 144;
+     ERROR_DIR_NOT_EMPTY = 145;
+     ERROR_IS_SUBST_PATH = 146;
+     ERROR_IS_JOIN_PATH = 147;
+     ERROR_PATH_BUSY = 148;
+     ERROR_IS_SUBST_TARGET = 149;
+     ERROR_SYSTEM_TRACE = 150;
+     ERROR_INVALID_EVENT_COUNT = 151;
+     ERROR_TOO_MANY_MUXWAITERS = 152;
+     ERROR_INVALID_LIST_FORMAT = 153;
+     ERROR_LABEL_TOO_LONG = 154;
+     ERROR_TOO_MANY_TCBS = 155;
+     ERROR_SIGNAL_REFUSED = 156;
+     ERROR_DISCARDED = 157;
+     ERROR_NOT_LOCKED = 158;
+     ERROR_BAD_THREADID_ADDR = 159;
+     ERROR_BAD_ARGUMENTS = 160;
+     ERROR_BAD_PATHNAME = 161;
+     ERROR_SIGNAL_PENDING = 162;
+     ERROR_MAX_THRDS_REACHED = 164;
+     ERROR_LOCK_FAILED = 167;
+     ERROR_BUSY = 170;
+     ERROR_CANCEL_VIOLATION = 173;
+     ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = 174;
+     ERROR_INVALID_SEGMENT_NUMBER = 180;
+     ERROR_INVALID_ORDINAL = 182;
+     ERROR_ALREADY_EXISTS = 183;
+     ERROR_INVALID_FLAG_NUMBER = 186;
+     ERROR_SEM_NOT_FOUND = 187;
+     ERROR_INVALID_STARTING_CODESEG = 188;
+     ERROR_INVALID_STACKSEG = 189;
+     ERROR_INVALID_MODULETYPE = 190;
+     ERROR_INVALID_EXE_SIGNATURE = 191;
+     ERROR_EXE_MARKED_INVALID = 192;
+     ERROR_BAD_EXE_FORMAT = 193;
+     ERROR_ITERATED_DATA_EXCEEDS_64k = 194;
+     ERROR_INVALID_MINALLOCSIZE = 195;
+     ERROR_DYNLINK_FROM_INVALID_RING = 196;
+     ERROR_IOPL_NOT_ENABLED = 197;
+     ERROR_INVALID_SEGDPL = 198;
+     ERROR_AUTODATASEG_EXCEEDS_64k = 199;
+     ERROR_RING2SEG_MUST_BE_MOVABLE = 200;
+     ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201;
+     ERROR_INFLOOP_IN_RELOC_CHAIN = 202;
+     ERROR_ENVVAR_NOT_FOUND = 203;
+     ERROR_NO_SIGNAL_SENT = 205;
+     ERROR_FILENAME_EXCED_RANGE = 206;
+     ERROR_RING2_STACK_IN_USE = 207;
+     ERROR_META_EXPANSION_TOO_LONG = 208;
+     ERROR_INVALID_SIGNAL_NUMBER = 209;
+     ERROR_THREAD_1_INACTIVE = 210;
+     ERROR_LOCKED = 212;
+     ERROR_TOO_MANY_MODULES = 214;
+     ERROR_NESTING_NOT_ALLOWED = 215;
+     ERROR_BAD_PIPE = 230;
+     ERROR_PIPE_BUSY = 231;
+     ERROR_NO_DATA = 232;
+     ERROR_PIPE_NOT_CONNECTED = 233;
+     ERROR_MORE_DATA = 234;
+     ERROR_VC_DISCONNECTED = 240;
+     ERROR_INVALID_EA_NAME = 254;
+     ERROR_EA_LIST_INCONSISTENT = 255;
+     ERROR_NO_MORE_ITEMS = 259;
+     ERROR_CANNOT_COPY = 266;
+     ERROR_DIRECTORY = 267;
+     ERROR_EAS_DIDNT_FIT = 275;
+     ERROR_EA_FILE_CORRUPT = 276;
+     ERROR_EA_TABLE_FULL = 277;
+     ERROR_INVALID_EA_HANDLE = 278;
+     ERROR_EAS_NOT_SUPPORTED = 282;
+     ERROR_NOT_OWNER = 288;
+     ERROR_TOO_MANY_POSTS = 298;
+     ERROR_PARTIAL_COPY = 299;
+     ERROR_MR_MID_NOT_FOUND = 317;
+     ERROR_INVALID_ADDRESS = 487;
+     ERROR_ARITHMETIC_OVERFLOW = 534;
+     ERROR_PIPE_CONNECTED = 535;
+     ERROR_PIPE_LISTENING = 536;
+     ERROR_EA_ACCESS_DENIED = 994;
+     ERROR_OPERATION_ABORTED = 995;
+     ERROR_IO_INCOMPLETE = 996;
+     ERROR_IO_PENDING = 997;
+     ERROR_NOACCESS = 998;
+     ERROR_SWAPERROR = 999;
+     ERROR_STACK_OVERFLOW = 1001;
+     ERROR_INVALID_MESSAGE = 1002;
+     ERROR_CAN_NOT_COMPLETE = 1003;
+     ERROR_INVALID_FLAGS = 1004;
+     ERROR_UNRECOGNIZED_VOLUME = 1005;
+     ERROR_FILE_INVALID = 1006;
+     ERROR_FULLSCREEN_MODE = 1007;
+     ERROR_NO_TOKEN = 1008;
+     ERROR_BADDB = 1009;
+     ERROR_BADKEY = 1010;
+     ERROR_CANTOPEN = 1011;
+     ERROR_CANTREAD = 1012;
+     ERROR_CANTWRITE = 1013;
+     ERROR_REGISTRY_RECOVERED = 1014;
+     ERROR_REGISTRY_CORRUPT = 1015;
+     ERROR_REGISTRY_IO_FAILED = 1016;
+     ERROR_NOT_REGISTRY_FILE = 1017;
+     ERROR_KEY_DELETED = 1018;
+     ERROR_NO_LOG_SPACE = 1019;
+     ERROR_KEY_HAS_CHILDREN = 1020;
+     ERROR_CHILD_MUST_BE_VOLATILE = 1021;
+     ERROR_NOTIFY_ENUM_DIR = 1022;
+     ERROR_DEPENDENT_SERVICES_RUNNING = 1051;
+     ERROR_INVALID_SERVICE_CONTROL = 1052;
+     ERROR_SERVICE_REQUEST_TIMEOUT = 1053;
+     ERROR_SERVICE_NO_THREAD = 1054;
+     ERROR_SERVICE_DATABASE_LOCKED = 1055;
+     ERROR_SERVICE_ALREADY_RUNNING = 1056;
+     ERROR_INVALID_SERVICE_ACCOUNT = 1057;
+     ERROR_SERVICE_DISABLED = 1058;
+     ERROR_CIRCULAR_DEPENDENCY = 1059;
+     ERROR_SERVICE_DOES_NOT_EXIST = 1060;
+     ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061;
+     ERROR_SERVICE_NOT_ACTIVE = 1062;
+     ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063;
+     ERROR_EXCEPTION_IN_SERVICE = 1064;
+     ERROR_DATABASE_DOES_NOT_EXIST = 1065;
+     ERROR_SERVICE_SPECIFIC_ERROR = 1066;
+     ERROR_PROCESS_ABORTED = 1067;
+     ERROR_SERVICE_DEPENDENCY_FAIL = 1068;
+     ERROR_SERVICE_LOGON_FAILED = 1069;
+     ERROR_SERVICE_START_HANG = 1070;
+     ERROR_INVALID_SERVICE_LOCK = 1071;
+     ERROR_SERVICE_MARKED_FOR_DELETE = 1072;
+     ERROR_SERVICE_EXISTS = 1073;
+     ERROR_ALREADY_RUNNING_LKG = 1074;
+     ERROR_SERVICE_DEPENDENCY_DELETED = 1075;
+     ERROR_BOOT_ALREADY_ACCEPTED = 1076;
+     ERROR_SERVICE_NEVER_STARTED = 1077;
+     ERROR_DUPLICATE_SERVICE_NAME = 1078;
+     ERROR_END_OF_MEDIA = 1100;
+     ERROR_FILEMARK_DETECTED = 1101;
+     ERROR_BEGINNING_OF_MEDIA = 1102;
+     ERROR_SETMARK_DETECTED = 1103;
+     ERROR_NO_DATA_DETECTED = 1104;
+     ERROR_PARTITION_FAILURE = 1105;
+     ERROR_INVALID_BLOCK_LENGTH = 1106;
+     ERROR_DEVICE_NOT_PARTITIONED = 1107;
+     ERROR_UNABLE_TO_LOCK_MEDIA = 1108;
+     ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109;
+     ERROR_MEDIA_CHANGED = 1110;
+     ERROR_BUS_RESET = 1111;
+     ERROR_NO_MEDIA_IN_DRIVE = 1112;
+     ERROR_NO_UNICODE_TRANSLATION = 1113;
+     ERROR_DLL_INIT_FAILED = 1114;
+     ERROR_SHUTDOWN_IN_PROGRESS = 1115;
+     ERROR_NO_SHUTDOWN_IN_PROGRESS = 1116;
+     ERROR_IO_DEVICE = 1117;
+     ERROR_SERIAL_NO_DEVICE = 1118;
+     ERROR_IRQ_BUSY = 1119;
+     ERROR_MORE_WRITES = 1120;
+     ERROR_COUNTER_TIMEOUT = 1121;
+     ERROR_FLOPPY_ID_MARK_NOT_FOUND = 1122;
+     ERROR_FLOPPY_WRONG_CYLINDER = 1123;
+     ERROR_FLOPPY_UNKNOWN_ERROR = 1124;
+     ERROR_FLOPPY_BAD_REGISTERS = 1125;
+     ERROR_DISK_RECALIBRATE_FAILED = 1126;
+     ERROR_DISK_OPERATION_FAILED = 1127;
+     ERROR_DISK_RESET_FAILED = 1128;
+     ERROR_EOM_OVERFLOW = 1129;
+     ERROR_NOT_ENOUGH_SERVER_MEMORY = 1130;
+     ERROR_POSSIBLE_DEADLOCK = 1131;
+     ERROR_MAPPED_ALIGNMENT = 1132;
+     ERROR_SET_POWER_STATE_VETOED = 1140;
+     ERROR_SET_POWER_STATE_FAILED = 1141;
+     ERROR_OLD_WIN_VERSION = 1150;
+     ERROR_APP_WRONG_OS = 1151;
+     ERROR_SINGLE_INSTANCE_APP = 1152;
+     ERROR_RMODE_APP = 1153;
+     ERROR_INVALID_DLL = 1154;
+     ERROR_NO_ASSOCIATION = 1155;
+     ERROR_DDE_FAIL = 1156;
+     ERROR_DLL_NOT_FOUND = 1157;
+     ERROR_BAD_USERNAME = 2202;
+     ERROR_NOT_CONNECTED = 2250;
+     ERROR_OPEN_FILES = 2401;
+     ERROR_ACTIVE_CONNECTIONS = 2402;
+     ERROR_DEVICE_IN_USE = 2404;
+     ERROR_BAD_DEVICE = 1200;
+     ERROR_CONNECTION_UNAVAIL = 1201;
+     ERROR_DEVICE_ALREADY_REMEMBERED = 1202;
+     ERROR_NO_NET_OR_BAD_PATH = 1203;
+     ERROR_BAD_PROVIDER = 1204;
+     ERROR_CANNOT_OPEN_PROFILE = 1205;
+     ERROR_BAD_PROFILE = 1206;
+     ERROR_NOT_CONTAINER = 1207;
+     ERROR_EXTENDED_ERROR = 1208;
+     ERROR_INVALID_GROUPNAME = 1209;
+     ERROR_INVALID_COMPUTERNAME = 1210;
+     ERROR_INVALID_EVENTNAME = 1211;
+     ERROR_INVALID_DOMAINNAME = 1212;
+     ERROR_INVALID_SERVICENAME = 1213;
+     ERROR_INVALID_NETNAME = 1214;
+     ERROR_INVALID_SHARENAME = 1215;
+     ERROR_INVALID_PASSWORDNAME = 1216;
+     ERROR_INVALID_MESSAGENAME = 1217;
+     ERROR_INVALID_MESSAGEDEST = 1218;
+     ERROR_SESSION_CREDENTIAL_CONFLICT = 1219;
+     ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220;
+     ERROR_DUP_DOMAINNAME = 1221;
+     ERROR_NO_NETWORK = 1222;
+     ERROR_CANCELLED = 1223;
+     ERROR_USER_MAPPED_FILE = 1224;
+     ERROR_CONNECTION_REFUSED = 1225;
+     ERROR_GRACEFUL_DISCONNECT = 1226;
+     ERROR_ADDRESS_ALREADY_ASSOCIATED = 1227;
+     ERROR_ADDRESS_NOT_ASSOCIATED = 1228;
+     ERROR_CONNECTION_INVALID = 1229;
+     ERROR_CONNECTION_ACTIVE = 1230;
+     ERROR_NETWORK_UNREACHABLE = 1231;
+     ERROR_HOST_UNREACHABLE = 1232;
+     ERROR_PROTOCOL_UNREACHABLE = 1233;
+     ERROR_PORT_UNREACHABLE = 1234;
+     ERROR_REQUEST_ABORTED = 1235;
+     ERROR_CONNECTION_ABORTED = 1236;
+     ERROR_RETRY = 1237;
+     ERROR_CONNECTION_COUNT_LIMIT = 1238;
+     ERROR_LOGIN_TIME_RESTRICTION = 1239;
+     ERROR_LOGIN_WKSTA_RESTRICTION = 1240;
+     ERROR_INCORRECT_ADDRESS = 1241;
+     ERROR_ALREADY_REGISTERED = 1242;
+     ERROR_SERVICE_NOT_FOUND = 1243;
+     ERROR_NOT_AUTHENTICATED = 1244;
+     ERROR_NOT_LOGGED_ON = 1245;
+     ERROR_CONTINUE = 1246;
+     ERROR_ALREADY_INITIALIZED = 1247;
+     ERROR_NO_MORE_DEVICES = 1248;
+     ERROR_NOT_ALL_ASSIGNED = 1300;
+     ERROR_SOME_NOT_MAPPED = 1301;
+     ERROR_NO_QUOTAS_FOR_ACCOUNT = 1302;
+     ERROR_LOCAL_USER_SESSION_KEY = 1303;
+     ERROR_NULL_LM_PASSWORD = 1304;
+     ERROR_UNKNOWN_REVISION = 1305;
+     ERROR_REVISION_MISMATCH = 1306;
+     ERROR_INVALID_OWNER = 1307;
+     ERROR_INVALID_PRIMARY_GROUP = 1308;
+     ERROR_NO_IMPERSONATION_TOKEN = 1309;
+     ERROR_CANT_DISABLE_MANDATORY = 1310;
+     ERROR_NO_LOGON_SERVERS = 1311;
+     ERROR_NO_SUCH_LOGON_SESSION = 1312;
+     ERROR_NO_SUCH_PRIVILEGE = 1313;
+     ERROR_PRIVILEGE_NOT_HELD = 1314;
+     ERROR_INVALID_ACCOUNT_NAME = 1315;
+     ERROR_USER_EXISTS = 1316;
+     ERROR_NO_SUCH_USER = 1317;
+     ERROR_GROUP_EXISTS = 1318;
+     ERROR_NO_SUCH_GROUP = 1319;
+     ERROR_MEMBER_IN_GROUP = 1320;
+     ERROR_MEMBER_NOT_IN_GROUP = 1321;
+     ERROR_LAST_ADMIN = 1322;
+     ERROR_WRONG_PASSWORD = 1323;
+     ERROR_ILL_FORMED_PASSWORD = 1324;
+     ERROR_PASSWORD_RESTRICTION = 1325;
+     ERROR_LOGON_FAILURE = 1326;
+     ERROR_ACCOUNT_RESTRICTION = 1327;
+     ERROR_INVALID_LOGON_HOURS = 1328;
+     ERROR_INVALID_WORKSTATION = 1329;
+     ERROR_PASSWORD_EXPIRED = 1330;
+     ERROR_ACCOUNT_DISABLED = 1331;
+     ERROR_NONE_MAPPED = 1332;
+     ERROR_TOO_MANY_LUIDS_REQUESTED = 1333;
+     ERROR_LUIDS_EXHAUSTED = 1334;
+     ERROR_INVALID_SUB_AUTHORITY = 1335;
+     ERROR_INVALID_ACL = 1336;
+     ERROR_INVALID_SID = 1337;
+     ERROR_INVALID_SECURITY_DESCR = 1338;
+     ERROR_BAD_INHERITANCE_ACL = 1340;
+     ERROR_SERVER_DISABLED = 1341;
+     ERROR_SERVER_NOT_DISABLED = 1342;
+     ERROR_INVALID_ID_AUTHORITY = 1343;
+     ERROR_ALLOTTED_SPACE_EXCEEDED = 1344;
+     ERROR_INVALID_GROUP_ATTRIBUTES = 1345;
+     ERROR_BAD_IMPERSONATION_LEVEL = 1346;
+     ERROR_CANT_OPEN_ANONYMOUS = 1347;
+     ERROR_BAD_VALIDATION_CLASS = 1348;
+     ERROR_BAD_TOKEN_TYPE = 1349;
+     ERROR_NO_SECURITY_ON_OBJECT = 1350;
+     ERROR_CANT_ACCESS_DOMAIN_INFO = 1351;
+     ERROR_INVALID_SERVER_STATE = 1352;
+     ERROR_INVALID_DOMAIN_STATE = 1353;
+     ERROR_INVALID_DOMAIN_ROLE = 1354;
+     ERROR_NO_SUCH_DOMAIN = 1355;
+     ERROR_DOMAIN_EXISTS = 1356;
+     ERROR_DOMAIN_LIMIT_EXCEEDED = 1357;
+     ERROR_INTERNAL_DB_CORRUPTION = 1358;
+     ERROR_INTERNAL_ERROR = 1359;
+     ERROR_GENERIC_NOT_MAPPED = 1360;
+     ERROR_BAD_DESCRIPTOR_FORMAT = 1361;
+     ERROR_NOT_LOGON_PROCESS = 1362;
+     ERROR_LOGON_SESSION_EXISTS = 1363;
+     ERROR_NO_SUCH_PACKAGE = 1364;
+     ERROR_BAD_LOGON_SESSION_STATE = 1365;
+     ERROR_LOGON_SESSION_COLLISION = 1366;
+     ERROR_INVALID_LOGON_TYPE = 1367;
+     ERROR_CANNOT_IMPERSONATE = 1368;
+     ERROR_RXACT_INVALID_STATE = 1369;
+     ERROR_RXACT_COMMIT_FAILURE = 1370;
+     ERROR_SPECIAL_ACCOUNT = 1371;
+     ERROR_SPECIAL_GROUP = 1372;
+     ERROR_SPECIAL_USER = 1373;
+     ERROR_MEMBERS_PRIMARY_GROUP = 1374;
+     ERROR_TOKEN_ALREADY_IN_USE = 1375;
+     ERROR_NO_SUCH_ALIAS = 1376;
+     ERROR_MEMBER_NOT_IN_ALIAS = 1377;
+     ERROR_MEMBER_IN_ALIAS = 1378;
+     ERROR_ALIAS_EXISTS = 1379;
+     ERROR_LOGON_NOT_GRANTED = 1380;
+     ERROR_TOO_MANY_SECRETS = 1381;
+     ERROR_SECRET_TOO_LONG = 1382;
+     ERROR_INTERNAL_DB_ERROR = 1383;
+     ERROR_TOO_MANY_CONTEXT_IDS = 1384;
+     ERROR_LOGON_TYPE_NOT_GRANTED = 1385;
+     ERROR_NT_CROSS_ENCRYPTION_REQUIRED = 1386;
+     ERROR_NO_SUCH_MEMBER = 1387;
+     ERROR_INVALID_MEMBER = 1388;
+     ERROR_TOO_MANY_SIDS = 1389;
+     ERROR_LM_CROSS_ENCRYPTION_REQUIRED = 1390;
+     ERROR_NO_INHERITANCE = 1391;
+     ERROR_FILE_CORRUPT = 1392;
+     ERROR_DISK_CORRUPT = 1393;
+     ERROR_NO_USER_SESSION_KEY = 1394;
+     ERROR_LICENSE_QUOTA_EXCEEDED = 1395;
+     ERROR_INVALID_WINDOW_HANDLE = 1400;
+     ERROR_INVALID_MENU_HANDLE = 1401;
+     ERROR_INVALID_CURSOR_HANDLE = 1402;
+     ERROR_INVALID_ACCEL_HANDLE = 1403;
+     ERROR_INVALID_HOOK_HANDLE = 1404;
+     ERROR_INVALID_DWP_HANDLE = 1405;
+     ERROR_TLW_WITH_WSCHILD = 1406;
+     ERROR_CANNOT_FIND_WND_CLASS = 1407;
+     ERROR_WINDOW_OF_OTHER_THREAD = 1408;
+     ERROR_HOTKEY_ALREADY_REGISTERED = 1409;
+     ERROR_CLASS_ALREADY_EXISTS = 1410;
+     ERROR_CLASS_DOES_NOT_EXIST = 1411;
+     ERROR_CLASS_HAS_WINDOWS = 1412;
+     ERROR_INVALID_INDEX = 1413;
+     ERROR_INVALID_ICON_HANDLE = 1414;
+     ERROR_PRIVATE_DIALOG_INDEX = 1415;
+     ERROR_LISTBOX_ID_NOT_FOUND = 1416;
+     ERROR_NO_WILDCARD_CHARACTERS = 1417;
+     ERROR_CLIPBOARD_NOT_OPEN = 1418;
+     ERROR_HOTKEY_NOT_REGISTERED = 1419;
+     ERROR_WINDOW_NOT_DIALOG = 1420;
+     ERROR_CONTROL_ID_NOT_FOUND = 1421;
+     ERROR_INVALID_COMBOBOX_MESSAGE = 1422;
+     ERROR_WINDOW_NOT_COMBOBOX = 1423;
+     ERROR_INVALID_EDIT_HEIGHT = 1424;
+     ERROR_DC_NOT_FOUND = 1425;
+     ERROR_INVALID_HOOK_FILTER = 1426;
+     ERROR_INVALID_FILTER_PROC = 1427;
+     ERROR_HOOK_NEEDS_HMOD = 1428;
+     ERROR_GLOBAL_ONLY_HOOK = 1429;
+     ERROR_JOURNAL_HOOK_SET = 1430;
+     ERROR_HOOK_NOT_INSTALLED = 1431;
+     ERROR_INVALID_LB_MESSAGE = 1432;
+     ERROR_SETCOUNT_ON_BAD_LB = 1433;
+     ERROR_LB_WITHOUT_TABSTOPS = 1434;
+     ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = 1435;
+     ERROR_CHILD_WINDOW_MENU = 1436;
+     ERROR_NO_SYSTEM_MENU = 1437;
+     ERROR_INVALID_MSGBOX_STYLE = 1438;
+     ERROR_INVALID_SPI_VALUE = 1439;
+     ERROR_SCREEN_ALREADY_LOCKED = 1440;
+     ERROR_HWNDS_HAVE_DIFF_PARENT = 1441;
+     ERROR_NOT_CHILD_WINDOW = 1442;
+     ERROR_INVALID_GW_COMMAND = 1443;
+     ERROR_INVALID_THREAD_ID = 1444;
+     ERROR_NON_MDICHILD_WINDOW = 1445;
+     ERROR_POPUP_ALREADY_ACTIVE = 1446;
+     ERROR_NO_SCROLLBARS = 1447;
+     ERROR_INVALID_SCROLLBAR_RANGE = 1448;
+     ERROR_INVALID_SHOWWIN_COMMAND = 1449;
+     ERROR_NO_SYSTEM_RESOURCES = 1450;
+     ERROR_NONPAGED_SYSTEM_RESOURCES = 1451;
+     ERROR_PAGED_SYSTEM_RESOURCES = 1452;
+     ERROR_WORKING_SET_QUOTA = 1453;
+     ERROR_PAGEFILE_QUOTA = 1454;
+     ERROR_COMMITMENT_LIMIT = 1455;
+     ERROR_MENU_ITEM_NOT_FOUND = 1456;
+     ERROR_EVENTLOG_FILE_CORRUPT = 1500;
+     ERROR_EVENTLOG_CANT_START = 1501;
+     ERROR_LOG_FILE_FULL = 1502;
+     ERROR_EVENTLOG_FILE_CHANGED = 1503;
+     RPC_S_INVALID_STRING_BINDING = 1700;
+     RPC_S_WRONG_KIND_OF_BINDING = 1701;
+     RPC_S_INVALID_BINDING = 1702;
+     RPC_S_PROTSEQ_NOT_SUPPORTED = 1703;
+     RPC_S_INVALID_RPC_PROTSEQ = 1704;
+     RPC_S_INVALID_STRING_UUID = 1705;
+     RPC_S_INVALID_ENDPOINT_FORMAT = 1706;
+     RPC_S_INVALID_NET_ADDR = 1707;
+     RPC_S_NO_ENDPOINT_FOUND = 1708;
+     RPC_S_INVALID_TIMEOUT = 1709;
+     RPC_S_OBJECT_NOT_FOUND = 1710;
+     RPC_S_ALREADY_REGISTERED = 1711;
+     RPC_S_TYPE_ALREADY_REGISTERED = 1712;
+     RPC_S_ALREADY_LISTENING = 1713;
+     RPC_S_NO_PROTSEQS_REGISTERED = 1714;
+     RPC_S_NOT_LISTENING = 1715;
+     RPC_S_UNKNOWN_MGR_TYPE = 1716;
+     RPC_S_UNKNOWN_IF = 1717;
+     RPC_S_NO_BINDINGS = 1718;
+     RPC_S_NO_PROTSEQS = 1719;
+     RPC_S_CANT_CREATE_ENDPOINT = 1720;
+     RPC_S_OUT_OF_RESOURCES = 1721;
+     RPC_S_SERVER_UNAVAILABLE = 1722;
+     RPC_S_SERVER_TOO_BUSY = 1723;
+     RPC_S_INVALID_NETWORK_OPTIONS = 1724;
+     RPC_S_NO_CALL_ACTIVE = 1725;
+     RPC_S_CALL_FAILED = 1726;
+     RPC_S_CALL_FAILED_DNE = 1727;
+     RPC_S_PROTOCOL_ERROR = 1728;
+     RPC_S_UNSUPPORTED_TRANS_SYN = 1730;
+     RPC_S_UNSUPPORTED_TYPE = 1732;
+     RPC_S_INVALID_TAG = 1733;
+     RPC_S_INVALID_BOUND = 1734;
+     RPC_S_NO_ENTRY_NAME = 1735;
+     RPC_S_INVALID_NAME_SYNTAX = 1736;
+     RPC_S_UNSUPPORTED_NAME_SYNTAX = 1737;
+     RPC_S_UUID_NO_ADDRESS = 1739;
+     RPC_S_DUPLICATE_ENDPOINT = 1740;
+     RPC_S_UNKNOWN_AUTHN_TYPE = 1741;
+     RPC_S_MAX_CALLS_TOO_SMALL = 1742;
+     RPC_S_STRING_TOO_LONG = 1743;
+     RPC_S_PROTSEQ_NOT_FOUND = 1744;
+     RPC_S_PROCNUM_OUT_OF_RANGE = 1745;
+     RPC_S_BINDING_HAS_NO_AUTH = 1746;
+     RPC_S_UNKNOWN_AUTHN_SERVICE = 1747;
+     RPC_S_UNKNOWN_AUTHN_LEVEL = 1748;
+     RPC_S_INVALID_AUTH_IDENTITY = 1749;
+     RPC_S_UNKNOWN_AUTHZ_SERVICE = 1750;
+     EPT_S_INVALID_ENTRY = 1751;
+     EPT_S_CANT_PERFORM_OP = 1752;
+     EPT_S_NOT_REGISTERED = 1753;
+     RPC_S_NOTHING_TO_EXPORT = 1754;
+     RPC_S_INCOMPLETE_NAME = 1755;
+     RPC_S_INVALID_VERS_OPTION = 1756;
+     RPC_S_NO_MORE_MEMBERS = 1757;
+     RPC_S_NOT_ALL_OBJS_UNEXPORTED = 1758;
+     RPC_S_INTERFACE_NOT_FOUND = 1759;
+     RPC_S_ENTRY_ALREADY_EXISTS = 1760;
+     RPC_S_ENTRY_NOT_FOUND = 1761;
+     RPC_S_NAME_SERVICE_UNAVAILABLE = 1762;
+     RPC_S_INVALID_NAF_ID = 1763;
+     RPC_S_CANNOT_SUPPORT = 1764;
+     RPC_S_NO_CONTEXT_AVAILABLE = 1765;
+     RPC_S_INTERNAL_ERROR = 1766;
+     RPC_S_ZERO_DIVIDE = 1767;
+     RPC_S_ADDRESS_ERROR = 1768;
+     RPC_S_FP_DIV_ZERO = 1769;
+     RPC_S_FP_UNDERFLOW = 1770;
+     RPC_S_FP_OVERFLOW = 1771;
+     RPC_X_NO_MORE_ENTRIES = 1772;
+     RPC_X_SS_CHAR_TRANS_OPEN_FAIL = 1773;
+     RPC_X_SS_CHAR_TRANS_SHORT_FILE = 1774;
+     RPC_X_SS_IN_NULL_CONTEXT = 1775;
+     RPC_X_SS_CONTEXT_DAMAGED = 1777;
+     RPC_X_SS_HANDLES_MISMATCH = 1778;
+     RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779;
+     RPC_X_NULL_REF_POINTER = 1780;
+     RPC_X_ENUM_VALUE_OUT_OF_RANGE = 1781;
+     RPC_X_BYTE_COUNT_TOO_SMALL = 1782;
+     RPC_X_BAD_STUB_DATA = 1783;
+     ERROR_INVALID_USER_BUFFER = 1784;
+     ERROR_UNRECOGNIZED_MEDIA = 1785;
+     ERROR_NO_TRUST_LSA_SECRET = 1786;
+     ERROR_NO_TRUST_SAM_ACCOUNT = 1787;
+     ERROR_TRUSTED_DOMAIN_FAILURE = 1788;
+     ERROR_TRUSTED_RELATIONSHIP_FAILURE = 1789;
+     ERROR_TRUST_FAILURE = 1790;
+     RPC_S_CALL_IN_PROGRESS = 1791;
+     ERROR_NETLOGON_NOT_STARTED = 1792;
+     ERROR_ACCOUNT_EXPIRED = 1793;
+     ERROR_REDIRECTOR_HAS_OPEN_HANDLES = 1794;
+     ERROR_PRINTER_DRIVER_ALREADY_INSTALLED = 1795;
+     ERROR_UNKNOWN_PORT = 1796;
+     ERROR_UNKNOWN_PRINTER_DRIVER = 1797;
+     ERROR_UNKNOWN_PRINTPROCESSOR = 1798;
+     ERROR_INVALID_SEPARATOR_FILE = 1799;
+     ERROR_INVALID_PRIORITY = 1800;
+     ERROR_INVALID_PRINTER_NAME = 1801;
+     ERROR_PRINTER_ALREADY_EXISTS = 1802;
+     ERROR_INVALID_PRINTER_COMMAND = 1803;
+     ERROR_INVALID_DATATYPE = 1804;
+     ERROR_INVALID_ENVIRONMENT = 1805;
+     RPC_S_NO_MORE_BINDINGS = 1806;
+     ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 1807;
+     ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 1808;
+     ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = 1809;
+     ERROR_DOMAIN_TRUST_INCONSISTENT = 1810;
+     ERROR_SERVER_HAS_OPEN_HANDLES = 1811;
+     ERROR_RESOURCE_DATA_NOT_FOUND = 1812;
+     ERROR_RESOURCE_TYPE_NOT_FOUND = 1813;
+     ERROR_RESOURCE_NAME_NOT_FOUND = 1814;
+     ERROR_RESOURCE_LANG_NOT_FOUND = 1815;
+     ERROR_NOT_ENOUGH_QUOTA = 1816;
+     RPC_S_NO_INTERFACES = 1817;
+     RPC_S_CALL_CANCELLED = 1818;
+     RPC_S_BINDING_INCOMPLETE = 1819;
+     RPC_S_COMM_FAILURE = 1820;
+     RPC_S_UNSUPPORTED_AUTHN_LEVEL = 1821;
+     RPC_S_NO_PRINC_NAME = 1822;
+     RPC_S_NOT_RPC_ERROR = 1823;
+     RPC_S_UUID_LOCAL_ONLY = 1824;
+     RPC_S_SEC_PKG_ERROR = 1825;
+     RPC_S_NOT_CANCELLED = 1826;
+     RPC_X_INVALID_ES_ACTION = 1827;
+     RPC_X_WRONG_ES_VERSION = 1828;
+     RPC_X_WRONG_STUB_VERSION = 1829;
+     RPC_S_GROUP_MEMBER_NOT_FOUND = 1898;
+     EPT_S_CANT_CREATE = 1899;
+     RPC_S_INVALID_OBJECT = 1900;
+     ERROR_INVALID_TIME = 1901;
+     ERROR_INVALID_FORM_NAME = 1902;
+     ERROR_INVALID_FORM_SIZE = 1903;
+     ERROR_ALREADY_WAITING = 1904;
+     ERROR_PRINTER_DELETED = 1905;
+     ERROR_INVALID_PRINTER_STATE = 1906;
+     ERROR_PASSWORD_MUST_CHANGE = 1907;
+     ERROR_DOMAIN_CONTROLLER_NOT_FOUND = 1908;
+     ERROR_ACCOUNT_LOCKED_OUT = 1909;
+     ERROR_NO_BROWSER_SERVERS_FOUND = 6118;
+     ERROR_INVALID_PIXEL_FORMAT = 2000;
+     ERROR_BAD_DRIVER = 2001;
+     ERROR_INVALID_WINDOW_STYLE = 2002;
+     ERROR_METAFILE_NOT_SUPPORTED = 2003;
+     ERROR_TRANSFORM_NOT_SUPPORTED = 2004;
+     ERROR_CLIPPING_NOT_SUPPORTED = 2005;
+     ERROR_UNKNOWN_PRINT_MONITOR = 3000;
+     ERROR_PRINTER_DRIVER_IN_USE = 3001;
+     ERROR_SPOOL_FILE_NOT_FOUND = 3002;
+     ERROR_SPL_NO_STARTDOC = 3003;
+     ERROR_SPL_NO_ADDJOB = 3004;
+     ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED = 3005;
+     ERROR_PRINT_MONITOR_ALREADY_INSTALLED = 3006;
+     ERROR_WINS_INTERNAL = 4000;
+     ERROR_CAN_NOT_DEL_LOCAL_WINS = 4001;
+     ERROR_STATIC_INIT = 4002;
+     ERROR_INC_BACKUP = 4003;
+     ERROR_FULL_BACKUP = 4004;
+     ERROR_REC_NON_EXISTENT = 4005;
+     ERROR_RPL_NOT_ALLOWED = 4006;
+     {ERROR_NO_BROWSER_SERVERS_FOUND = 6118; already above }
+{ C++ end of extern C conditionnal removed }
+  { __cplusplus  }
+{$endif}
+  { _GNU_H_WINDOWS32_ERROR  }
+
+{$ifndef windows_include_files}
+  implementation
+
+{ const External_library='kernel32'; not needed }
+
+
+end.
+
+{$endif windows_include_files}
+{
+  $Log$
+  Revision 1.1  1998-08-31 11:53:56  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+}

+ 6712 - 0
rtl/win32/func.pp

@@ -0,0 +1,6712 @@
+{
+    $Id$
+    This file is part of the Free Pascal run time library.
+    This unit contains the record definition for the Win32 API
+    Copyright (c) 1993,97 by Florian KLaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
+
+
+{$ifndef windows_include_files}
+
+unit func;
+
+{  Automatically converted by H2PAS.EXE from function.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
+
+
+  interface
+
+   uses
+      base,defines,struct,
+{$ifdef UNICODE}
+      unidef,
+{$else not UNICODE}
+      ascdef,
+{$endif UNICODE}
+      messages;
+
+{$endif windows_include_files}
+
+{$define Win95  used below }
+
+{$ifdef read_interface}
+
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     Functions.h
+  
+     Declarations for all the Windows32 API Functions
+  
+     Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+  
+     Author: Scott Christley <[email protected]>
+  
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+{$ifndef _GNU_H_WINDOWS32_FUNCTIONS}
+{$define _GNU_H_WINDOWS32_FUNCTIONS}
+{ C++ extern C conditionnal removed }
+  { __cplusplus  }
+  { These functions were a real pain, having to figure out which
+     had Unicode/Ascii versions and which did not  }
+(* removed
+{$ifndef UNICODE_ONLY}
+{$include <Windows32/UnicodeFunctions.h>}
+{$endif}
+  { !UNICODE_ONLY  }
+{$ifndef ANSI_ONLY}
+{$include <Windows32/ASCIIFunctions.h>}
+{$endif}  *)
+  { !ANSI_ONLY  }
+  { Define the approprate declaration based upon UNICODE or ASCII  }
+(* all this is not usable for FPC
+  { UNICODE  }
+{$ifdef UNICODE}
+
+  const
+     RegConnectRegistry = RegConnectRegistryW;
+     RegCreateKey = RegCreateKeyW;
+     RegCreateKeyEx = RegCreateKeyExW;
+     RegDeleteKey = RegDeleteKeyW;
+     RegDeleteValue = RegDeleteValueW;
+     RegEnumKey = RegEnumKeyW;
+     RegEnumKeyEx = RegEnumKeyExW;
+     RegEnumValue = RegEnumValueW;
+     RegLoadKey = RegLoadKeyW;
+     RegOpenKey = RegOpenKeyW;
+     RegOpenKeyEx = RegOpenKeyExW;
+     RegQueryInfoKey = RegQueryInfoKeyW;
+     RegQueryValue = RegQueryValueW;
+     RegQueryMultipleValues = RegQueryMultipleValuesW;
+     RegQueryValueEx = RegQueryValueExW;
+     RegReplaceKey = RegReplaceKeyW;
+     RegRestoreKey = RegRestoreKeyW;
+     RegSaveKey = RegSaveKeyW;
+     RegSetValue = RegSetValueW;
+     RegSetValueEx = RegSetValueExW;
+     AbortSystemShutdown = AbortSystemShutdownW;
+     InitiateSystemShutdown = InitiateSystemShutdownW;
+     RegUnLoadKey = RegUnLoadKeyW;
+     SetProp = SetPropW;
+     GetProp = GetPropW;
+     RemoveProp = RemovePropW;
+     EnumPropsEx = EnumPropsExW;
+     EnumProps = EnumPropsW;
+     SetWindowText = SetWindowTextW;
+     GetWindowText = GetWindowTextW;
+     GetWindowTextLength = GetWindowTextLengthW;
+     MessageBox = MessageBoxW;
+     MessageBoxEx = MessageBoxExW;
+     MessageBoxIndirect = MessageBoxIndirectW;
+     GetWindowLong = GetWindowLongW;
+     SetWindowLong = SetWindowLongW;
+     GetClassLong = GetClassLongW;
+     SetClassLong = SetClassLongW;
+     FindWindow = FindWindowW;
+     FindWindowEx = FindWindowExW;
+     GetClassName = GetClassNameW;
+     SetWindowsHookEx = SetWindowsHookExW;
+     LoadBitmap = LoadBitmapW;
+     LoadCursor = LoadCursorW;
+     LoadCursorFromFile = LoadCursorFromFileW;
+     LoadIcon = LoadIconW;
+     LoadImage = LoadImageW;
+     LoadString = LoadStringW;
+     IsDialogMessage = IsDialogMessageW;
+     DlgDirList = DlgDirListW;
+     DlgDirSelectEx = DlgDirSelectExW;
+     DlgDirListComboBox = DlgDirListComboBoxW;
+     DlgDirSelectComboBoxEx = DlgDirSelectComboBoxExW;
+     DefFrameProc = DefFrameProcW;
+     DefMDIChildProc = DefMDIChildProcW;
+     CreateMDIWindow = CreateMDIWindowW;
+     WinHelp = WinHelpW;
+     ChangeDisplaySettings = ChangeDisplaySettingsW;
+     EnumDisplaySettings = EnumDisplaySettingsW;
+     SystemParametersInfo = SystemParametersInfoW;
+     AddFontResource = AddFontResourceW;
+     CopyMetaFile = CopyMetaFileW;
+     CreateDC = CreateDCW;
+     CreateFontIndirect = CreateFontIndirectW;
+     CreateFont = CreateFontW;
+     CreateIC = CreateICW;
+     CreateMetaFile = CreateMetaFileW;
+     CreateScalableFontResource = CreateScalableFontResourceW;
+     DeviceCapabilities = DeviceCapabilitiesW;
+     EnumFontFamiliesEx = EnumFontFamiliesExW;
+     EnumFontFamilies = EnumFontFamiliesW;
+     EnumFonts = EnumFontsW;
+     GetCharWidth = GetCharWidthW;
+     GetCharWidth32 = GetCharWidth32W;
+     GetCharWidthFloat = GetCharWidthFloatW;
+     GetCharABCWidths = GetCharABCWidthsW;
+     GetCharABCWidthsFloat = GetCharABCWidthsFloatW;
+     GetGlyphOutline = GetGlyphOutlineW;
+     GetMetaFile = GetMetaFileW;
+     GetOutlineTextMetrics = GetOutlineTextMetricsW;
+     GetTextExtentPoint = GetTextExtentPointW;
+     GetTextExtentPoint32 = GetTextExtentPoint32W;
+     GetTextExtentExPoint = GetTextExtentExPointW;
+     GetCharacterPlacement = GetCharacterPlacementW;
+     ResetDC = ResetDCW;
+     RemoveFontResource = RemoveFontResourceW;
+     CopyEnhMetaFile = CopyEnhMetaFileW;
+     CreateEnhMetaFile = CreateEnhMetaFileW;
+     GetEnhMetaFile = GetEnhMetaFileW;
+     GetEnhMetaFileDescription = GetEnhMetaFileDescriptionW;
+     GetTextMetrics = GetTextMetricsW;
+     StartDoc = StartDocW;
+     GetObject = GetObjectW;
+     TextOut = TextOutW;
+     ExtTextOut = ExtTextOutW;
+     PolyTextOut = PolyTextOutW;
+     GetTextFace = GetTextFaceW;
+     GetKerningPairs = GetKerningPairsW;
+     GetLogColorSpace = GetLogColorSpaceW;
+     CreateColorSpace = CreateColorSpaceW;
+     GetICMProfile = GetICMProfileW;
+     SetICMProfile = SetICMProfileW;
+     UpdateICMRegKey = UpdateICMRegKeyW;
+     EnumICMProfiles = EnumICMProfilesW;
+     CreatePropertySheetPage = CreatePropertySheetPageW;
+     PropertySheet = PropertySheetW;
+     ImageList_LoadImage = ImageList_LoadImageW;
+     CreateStatusWindow = CreateStatusWindowW;
+     DrawStatusText = DrawStatusTextW;
+     GetOpenFileName = GetOpenFileNameW;
+     GetSaveFileName = GetSaveFileNameW;
+     GetFileTitle = GetFileTitleW;
+     ChooseColor = ChooseColorW;
+     FindText = FindTextW;
+     ReplaceText = ReplaceTextW;
+     ChooseFont = ChooseFontW;
+     PrintDlg = PrintDlgW;
+     PageSetupDlg = PageSetupDlgW;
+     DefWindowProc = DefWindowProcW;
+     CallWindowProc = CallWindowProcW;
+     RegisterClass = RegisterClassW;
+     UnregisterClass = UnregisterClassW;
+     GetClassInfo = GetClassInfoW;
+     RegisterClassEx = RegisterClassExW;
+     GetClassInfoEx = GetClassInfoExW;
+     CreateWindowEx = CreateWindowExW;
+     CreateWindow = CreateWindowW;
+     CreateDialogParam = CreateDialogParamW;
+     CreateDialogIndirectParam = CreateDialogIndirectParamW;
+     CreateDialog = CreateDialogW;
+     CreateDialogIndirect = CreateDialogIndirectW;
+     DialogBoxParam = DialogBoxParamW;
+     DialogBoxIndirectParam = DialogBoxIndirectParamW;
+     DialogBox = DialogBoxW;
+     DialogBoxIndirect = DialogBoxIndirectW;
+     RegisterClipboardFormat = RegisterClipboardFormatW;
+     SetDlgItemText = SetDlgItemTextW;
+     GetDlgItemText = GetDlgItemTextW;
+     SendDlgItemMessage = SendDlgItemMessageW;
+     DefDlgProc = DefDlgProcW;
+     CallMsgFilter = CallMsgFilterW;
+     GetClipboardFormatName = GetClipboardFormatNameW;
+     CharToOem = CharToOemW;
+     OemToChar = OemToCharW;
+     CharToOemBuff = CharToOemBuffW;
+     OemToCharBuff = OemToCharBuffW;
+     CharUpper = CharUpperW;
+     CharUpperBuff = CharUpperBuffW;
+     CharLower = CharLowerW;
+     CharLowerBuff = CharLowerBuffW;
+     CharNext = CharNextW;
+     CharPrev = CharPrevW;
+     IsCharAlpha = IsCharAlphaW;
+     IsCharAlphaNumeric = IsCharAlphaNumericW;
+     IsCharUpper = IsCharUpperW;
+     IsCharLower = IsCharLowerW;
+     GetKeyNameText = GetKeyNameTextW;
+     VkKeyScan = VkKeyScanW;
+     VkKeyScanEx = VkKeyScanExW;
+     MapVirtualKey = MapVirtualKeyW;
+     MapVirtualKeyEx = MapVirtualKeyExW;
+     LoadAccelerators = LoadAcceleratorsW;
+     CreateAcceleratorTable = CreateAcceleratorTableW;
+     CopyAcceleratorTable = CopyAcceleratorTableW;
+     TranslateAccelerator = TranslateAcceleratorW;
+     LoadMenu = LoadMenuW;
+     LoadMenuIndirect = LoadMenuIndirectW;
+     ChangeMenu = ChangeMenuW;
+     GetMenuString = GetMenuStringW;
+     InsertMenu = InsertMenuW;
+     AppendMenu = AppendMenuW;
+     ModifyMenu = ModifyMenuW;
+     InsertMenuItem = InsertMenuItemW;
+     GetMenuItemInfo = GetMenuItemInfoW;
+     SetMenuItemInfo = SetMenuItemInfoW;
+     DrawText = DrawTextW;
+     DrawTextEx = DrawTextExW;
+     GrayString = GrayStringW;
+     DrawState = DrawStateW;
+     TabbedTextOut = TabbedTextOutW;
+     GetTabbedTextExtent = GetTabbedTextExtentW;
+     GetVersionEx = GetVersionExW;
+     wvsprintf = wvsprintfW;
+     wsprintf = wsprintfW;
+     LoadKeyboardLayout = LoadKeyboardLayoutW;
+     GetKeyboardLayoutName = GetKeyboardLayoutNameW;
+     CreateDesktop = CreateDesktopW;
+     OpenDesktop = OpenDesktopW;
+     EnumDesktops = EnumDesktopsW;
+     CreateWindowStation = CreateWindowStationW;
+     OpenWindowStation = OpenWindowStationW;
+     EnumWindowStations = EnumWindowStationsW;
+     IsBadStringPtr = IsBadStringPtrW;
+     LookupAccountSid = LookupAccountSidW;
+     LookupAccountName = LookupAccountNameW;
+     LookupPrivilegeValue = LookupPrivilegeValueW;
+     LookupPrivilegeName = LookupPrivilegeNameW;
+     LookupPrivilegeDisplayName = LookupPrivilegeDisplayNameW;
+     BuildCommDCB = BuildCommDCBW;
+     BuildCommDCBAndTimeouts = BuildCommDCBAndTimeoutsW;
+     CommConfigDialog = CommConfigDialogW;
+     GetDefaultCommConfig = GetDefaultCommConfigW;
+     SetDefaultCommConfig = SetDefaultCommConfigW;
+     GetComputerName = GetComputerNameW;
+     SetComputerName = SetComputerNameW;
+     GetUserName = GetUserNameW;
+     CreateMailslot = CreateMailslotW;
+     FormatMessage = FormatMessageW;
+     GetEnvironmentStrings = GetEnvironmentStringsW;
+     FreeEnvironmentStrings = FreeEnvironmentStringsW;
+     lstrcmp = lstrcmpW;
+     lstrcmpi = lstrcmpiW;
+     lstrcpyn = lstrcpynW;
+     lstrcpy = lstrcpyW;
+     lstrcat = lstrcatW;
+     lstrlen = lstrlenW;
+     GetBinaryType = GetBinaryTypeW;
+     GetShortPathName = GetShortPathNameW;
+     SetFileSecurity = SetFileSecurityW;
+     GetFileSecurity = GetFileSecurityW;
+     FindFirstChangeNotification = FindFirstChangeNotificationW;
+     AccessCheckAndAuditAlarm = AccessCheckAndAuditAlarmW;
+     ObjectOpenAuditAlarm = ObjectOpenAuditAlarmW;
+     ObjectPrivilegeAuditAlarm = ObjectPrivilegeAuditAlarmW;
+     ObjectCloseAuditAlarm = ObjectCloseAuditAlarmW;
+     PrivilegedServiceAuditAlarm = PrivilegedServiceAuditAlarmW;
+     OpenEventLog = OpenEventLogW;
+     RegisterEventSource = RegisterEventSourceW;
+     OpenBackupEventLog = OpenBackupEventLogW;
+     ReadEventLog = ReadEventLogW;
+     ReportEvent = ReportEventW;
+     CreateProcess = CreateProcessW;
+     FatalAppExit = FatalAppExitW;
+     GetStartupInfo = GetStartupInfoW;
+     GetEnvironmentVariable = GetEnvironmentVariableW;
+     GetCommandLine = GetCommandLineW;
+     SetEnvironmentVariable = SetEnvironmentVariableW;
+     ExpandEnvironmentStrings = ExpandEnvironmentStringsW;
+     OutputDebugString = OutputDebugStringW;
+     FindResource = FindResourceW;
+     FindResourceEx = FindResourceExW;
+     EnumResourceTypes = EnumResourceTypesW;
+     EnumResourceNames = EnumResourceNamesW;
+     EnumResourceLanguages = EnumResourceLanguagesW;
+     BeginUpdateResource = BeginUpdateResourceW;
+     UpdateResource = UpdateResourceW;
+     EndUpdateResource = EndUpdateResourceW;
+     GlobalAddAtom = GlobalAddAtomW;
+     GlobalFindAtom = GlobalFindAtomW;
+     GlobalGetAtomName = GlobalGetAtomNameW;
+     AddAtom = AddAtomW;
+     FindAtom = FindAtomW;
+     GetAtomName = GetAtomNameW;
+     GetProfileInt = GetProfileIntW;
+     GetProfileString = GetProfileStringW;
+     WriteProfileString = WriteProfileStringW;
+     GetProfileSection = GetProfileSectionW;
+     WriteProfileSection = WriteProfileSectionW;
+     GetPrivateProfileInt = GetPrivateProfileIntW;
+     GetPrivateProfileString = GetPrivateProfileStringW;
+     WritePrivateProfileString = WritePrivateProfileStringW;
+     GetPrivateProfileSection = GetPrivateProfileSectionW;
+     WritePrivateProfileSection = WritePrivateProfileSectionW;
+     GetDriveType = GetDriveTypeW;
+     GetSystemDirectory = GetSystemDirectoryW;
+     GetTempPath = GetTempPathW;
+     GetTempFileName = GetTempFileNameW;
+     GetWindowsDirectory = GetWindowsDirectoryW;
+     SetCurrentDirectory = SetCurrentDirectoryW;
+     GetCurrentDirectory = GetCurrentDirectoryW;
+     GetDiskFreeSpace = GetDiskFreeSpaceW;
+     CreateDirectory = CreateDirectoryW;
+     CreateDirectoryEx = CreateDirectoryExW;
+     RemoveDirectory = RemoveDirectoryW;
+     GetFullPathName = GetFullPathNameW;
+     DefineDosDevice = DefineDosDeviceW;
+     QueryDosDevice = QueryDosDeviceW;
+     CreateFile = CreateFileW;
+     SetFileAttributes = SetFileAttributesW;
+     GetFileAttributes = GetFileAttributesW;
+     GetCompressedFileSize = GetCompressedFileSizeW;
+     DeleteFile = DeleteFileW;
+     FindFirstFile = FindFirstFileW;
+     FindNextFile = FindNextFileW;
+     SearchPath = SearchPathW;
+     CopyFile = CopyFileW;
+     MoveFile = MoveFileW;
+     MoveFileEx = MoveFileExW;
+     CreateNamedPipe = CreateNamedPipeW;
+     GetNamedPipeHandleState = GetNamedPipeHandleStateW;
+     CallNamedPipe = CallNamedPipeW;
+     WaitNamedPipe = WaitNamedPipeW;
+     SetVolumeLabel = SetVolumeLabelW;
+     GetVolumeInformation = GetVolumeInformationW;
+     ClearEventLog = ClearEventLogW;
+     BackupEventLog = BackupEventLogW;
+     CreateMutex = CreateMutexW;
+     OpenMutex = OpenMutexW;
+     CreateEvent = CreateEventW;
+     OpenEvent = OpenEventW;
+     CreateSemaphore = CreateSemaphoreW;
+     OpenSemaphore = OpenSemaphoreW;
+     CreateFileMapping = CreateFileMappingW;
+     OpenFileMapping = OpenFileMappingW;
+     GetLogicalDriveStrings = GetLogicalDriveStringsW;
+     LoadLibrary = LoadLibraryW;
+     LoadLibraryEx = LoadLibraryExW;
+     GetModuleFileName = GetModuleFileNameW;
+     GetModuleHandle = GetModuleHandleW;
+     GetUserObjectInformation = GetUserObjectInformationW;
+     SetUserObjectInformation = SetUserObjectInformationW;
+     RegisterWindowMessage = RegisterWindowMessageW;
+     GetMessage = GetMessageW;
+     DispatchMessage = DispatchMessageW;
+     PeekMessage = PeekMessageW;
+     SendMessage = SendMessageW;
+     SendMessageTimeout = SendMessageTimeoutW;
+     SendNotifyMessage = SendNotifyMessageW;
+     SendMessageCallback = SendMessageCallbackW;
+     PostMessage = PostMessageW;
+     PostThreadMessage = PostThreadMessageW;
+     VerFindFile = VerFindFileW;
+     VerInstallFile = VerInstallFileW;
+     GetFileVersionInfoSize = GetFileVersionInfoSizeW;
+     GetFileVersionInfo = GetFileVersionInfoW;
+     VerLanguageName = VerLanguageNameW;
+     VerQueryValue = VerQueryValueW;
+     CompareString = CompareStringW;
+     LCMapString = LCMapStringW;
+     GetLocaleInfo = GetLocaleInfoW;
+     SetLocaleInfo = SetLocaleInfoW;
+     GetTimeFormat = GetTimeFormatW;
+     GetDateFormat = GetDateFormatW;
+     GetNumberFormat = GetNumberFormatW;
+     GetCurrencyFormat = GetCurrencyFormatW;
+     EnumCalendarInfo = EnumCalendarInfoW;
+     EnumTimeFormats = EnumTimeFormatsW;
+     FoldString = FoldStringW;
+     EnumSystemCodePages = EnumSystemCodePagesW;
+     EnumSystemLocales = EnumSystemLocalesW;
+     GetStringTypeEx = GetStringTypeExW;
+     EnumDateFormats = EnumDateFormatsW;
+     GetConsoleTitle = GetConsoleTitleW;
+     ScrollConsoleScreenBuffer = ScrollConsoleScreenBufferW;
+     SetConsoleTitle = SetConsoleTitleW;
+     ReadConsole = ReadConsoleW;
+     WriteConsole = WriteConsoleW;
+     PeekConsoleInput = PeekConsoleInputW;
+     ReadConsoleInput = ReadConsoleInputW;
+     WriteConsoleInput = WriteConsoleInputW;
+     ReadConsoleOutput = ReadConsoleOutputW;
+     WriteConsoleOutput = WriteConsoleOutputW;
+     ReadConsoleOutputCharacter = ReadConsoleOutputCharacterW;
+     WriteConsoleOutputCharacter = WriteConsoleOutputCharacterW;
+     FillConsoleOutputCharacter = FillConsoleOutputCharacterW;
+     WNetGetProviderName = WNetGetProviderNameW;
+     WNetGetNetworkInformation = WNetGetNetworkInformationW;
+     WNetGetLastError = WNetGetLastErrorW;
+     MultinetGetConnectionPerformance = MultinetGetConnectionPerformanceW;
+     WNetConnectionDialog1 = WNetConnectionDialog1W;
+     WNetDisconnectDialog1 = WNetDisconnectDialog1W;
+     WNetOpenEnum = WNetOpenEnumW;
+     WNetEnumResource = WNetEnumResourceW;
+     WNetGetUniversalName = WNetGetUniversalNameW;
+     WNetGetUser = WNetGetUserW;
+     WNetAddConnection = WNetAddConnectionW;
+     WNetAddConnection2 = WNetAddConnection2W;
+     WNetAddConnection3 = WNetAddConnection3W;
+     WNetCancelConnection = WNetCancelConnectionW;
+     WNetCancelConnection2 = WNetCancelConnection2W;
+     WNetGetConnection = WNetGetConnectionW;
+     WNetUseConnection = WNetUseConnectionW;
+     WNetSetConnection = WNetSetConnectionW;
+     CreateService = CreateServiceW;
+     ChangeServiceConfig = ChangeServiceConfigW;
+     EnumDependentServices = EnumDependentServicesW;
+     EnumServicesStatus = EnumServicesStatusW;
+     GetServiceKeyName = GetServiceKeyNameW;
+     GetServiceDisplayName = GetServiceDisplayNameW;
+     OpenSCManager = OpenSCManagerW;
+     OpenService = OpenServiceW;
+     QueryServiceConfig = QueryServiceConfigW;
+     QueryServiceLockStatus = QueryServiceLockStatusW;
+     RegisterServiceCtrlHandler = RegisterServiceCtrlHandlerW;
+     StartServiceCtrlDispatcher = StartServiceCtrlDispatcherW;
+     StartService = StartServiceW;
+     DragQueryFile = DragQueryFileW;
+     ExtractAssociatedIcon = ExtractAssociatedIconW;
+     ExtractIcon = ExtractIconW;
+     FindExecutable = FindExecutableW;
+     ShellAbout = ShellAboutW;
+     ShellExecute = ShellExecuteW;
+     DdeCreateStringHandle = DdeCreateStringHandleW;
+     DdeInitialize = DdeInitializeW;
+     DdeQueryString = DdeQueryStringW;
+     LogonUser = LogonUserW;
+     CreateProcessAsUser = CreateProcessAsUserW;
+  { ASCII  }
+{$else}
+
+  const
+     RegConnectRegistry = RegConnectRegistryA;
+     RegCreateKey = RegCreateKeyA;
+     RegCreateKeyEx = RegCreateKeyExA;
+     RegDeleteKey = RegDeleteKeyA;
+     RegDeleteValue = RegDeleteValueA;
+     RegEnumKey = RegEnumKeyA;
+     RegEnumKeyEx = RegEnumKeyExA;
+     RegEnumValue = RegEnumValueA;
+     RegLoadKey = RegLoadKeyA;
+     RegOpenKey = RegOpenKeyA;
+     RegOpenKeyEx = RegOpenKeyExA;
+     RegQueryInfoKey = RegQueryInfoKeyA;
+     RegQueryValue = RegQueryValueA;
+     RegQueryMultipleValues = RegQueryMultipleValuesA;
+     RegQueryValueEx = RegQueryValueExA;
+     RegReplaceKey = RegReplaceKeyA;
+     RegRestoreKey = RegRestoreKeyA;
+     RegSaveKey = RegSaveKeyA;
+     RegSetValue = RegSetValueA;
+     RegSetValueEx = RegSetValueExA;
+     AbortSystemShutdown = AbortSystemShutdownA;
+     InitiateSystemShutdown = InitiateSystemShutdownA;
+     RegUnLoadKey = RegUnLoadKeyA;
+     LoadIcon = LoadIconA;
+     LoadImage = LoadImageA;
+     LoadString = LoadStringA;
+     IsDialogMessage = IsDialogMessageA;
+     DlgDirList = DlgDirListA;
+     DlgDirSelectEx = DlgDirSelectExA;
+     DlgDirListComboBox = DlgDirListComboBoxA;
+     DlgDirSelectComboBoxEx = DlgDirSelectComboBoxExA;
+     DefFrameProc = DefFrameProcA;
+     DefMDIChildProc = DefMDIChildProcA;
+     CreateMDIWindow = CreateMDIWindowA;
+     WinHelp = WinHelpA;
+     ChangeDisplaySettings = ChangeDisplaySettingsA;
+     EnumDisplaySettings = EnumDisplaySettingsA;
+     SystemParametersInfo = SystemParametersInfoA;
+     GetWindowLong = GetWindowLongA;
+     SetWindowLong = SetWindowLongA;
+     GetClassLong = GetClassLongA;
+     SetClassLong = SetClassLongA;
+     FindWindow = FindWindowA;
+     FindWindowEx = FindWindowExA;
+     GetClassName = GetClassNameA;
+     SetWindowsHookEx = SetWindowsHookExA;
+     LoadBitmap = LoadBitmapA;
+     LoadCursor = LoadCursorA;
+     LoadCursorFromFile = LoadCursorFromFileA;
+     SetProp = SetPropA;
+     GetProp = GetPropA;
+     RemoveProp = RemovePropA;
+     EnumPropsEx = EnumPropsExA;
+     EnumProps = EnumPropsA;
+     SetWindowText = SetWindowTextA;
+     GetWindowText = GetWindowTextA;
+     GetWindowTextLength = GetWindowTextLengthA;
+     MessageBox = MessageBoxA;
+     MessageBoxEx = MessageBoxExA;
+     MessageBoxIndirect = MessageBoxIndirectA;
+     AddFontResource = AddFontResourceA;
+     CopyMetaFile = CopyMetaFileA;
+     CreateDC = CreateDCA;
+     CreateFontIndirect = CreateFontIndirectA;
+     CreateFont = CreateFontA;
+     CreateIC = CreateICA;
+     CreateMetaFile = CreateMetaFileA;
+     CreateScalableFontResource = CreateScalableFontResourceA;
+     DeviceCapabilities = DeviceCapabilitiesA;
+     EnumFontFamiliesEx = EnumFontFamiliesExA;
+     EnumFontFamilies = EnumFontFamiliesA;
+     EnumFonts = EnumFontsA;
+     GetCharWidth = GetCharWidthA;
+     GetCharWidth32 = GetCharWidth32A;
+     GetCharWidthFloat = GetCharWidthFloatA;
+     GetCharABCWidths = GetCharABCWidthsA;
+     GetCharABCWidthsFloat = GetCharABCWidthsFloatA;
+     GetGlyphOutline = GetGlyphOutlineA;
+     GetMetaFile = GetMetaFileA;
+     GetOutlineTextMetrics = GetOutlineTextMetricsA;
+     GetTextExtentPoint = GetTextExtentPointA;
+     GetTextExtentPoint32 = GetTextExtentPoint32A;
+     GetTextExtentExPoint = GetTextExtentExPointA;
+     GetCharacterPlacement = GetCharacterPlacementA;
+     ResetDC = ResetDCA;
+     RemoveFontResource = RemoveFontResourceA;
+     CopyEnhMetaFile = CopyEnhMetaFileA;
+     CreateEnhMetaFile = CreateEnhMetaFileA;
+     GetEnhMetaFile = GetEnhMetaFileA;
+     GetEnhMetaFileDescription = GetEnhMetaFileDescriptionA;
+     GetTextMetrics = GetTextMetricsA;
+     StartDoc = StartDocA;
+     GetObject = GetObjectA;
+     TextOut = TextOutA;
+     ExtTextOut = ExtTextOutA;
+     PolyTextOut = PolyTextOutA;
+     GetTextFace = GetTextFaceA;
+     GetKerningPairs = GetKerningPairsA;
+     GetLogColorSpace = GetLogColorSpaceA;
+     CreateColorSpace = CreateColorSpaceA;
+     GetICMProfile = GetICMProfileA;
+     SetICMProfile = SetICMProfileA;
+     UpdateICMRegKey = UpdateICMRegKeyA;
+     EnumICMProfiles = EnumICMProfilesA;
+     CreatePropertySheetPage = CreatePropertySheetPageA;
+     PropertySheet = PropertySheetA;
+     ImageList_LoadImage = ImageList_LoadImageA;
+     CreateStatusWindow = CreateStatusWindowA;
+     DrawStatusText = DrawStatusTextA;
+     GetOpenFileName = GetOpenFileNameA;
+     GetSaveFileName = GetSaveFileNameA;
+     GetFileTitle = GetFileTitleA;
+     ChooseColor = ChooseColorA;
+     FindText = FindTextA;
+     ReplaceText = ReplaceTextA;
+     ChooseFont = ChooseFontA;
+     PrintDlg = PrintDlgA;
+     PageSetupDlg = PageSetupDlgA;
+     DefWindowProc = DefWindowProcA;
+     CallWindowProc = CallWindowProcA;
+     RegisterClass = RegisterClassA;
+     UnregisterClass = UnregisterClassA;
+     GetClassInfo = GetClassInfoA;
+     RegisterClassEx = RegisterClassExA;
+     GetClassInfoEx = GetClassInfoExA;
+     CreateWindowEx = CreateWindowExA;
+     CreateWindow = CreateWindowA;
+     CreateDialogParam = CreateDialogParamA;
+     CreateDialogIndirectParam = CreateDialogIndirectParamA;
+     CreateDialog = CreateDialogA;
+     CreateDialogIndirect = CreateDialogIndirectA;
+     DialogBoxParam = DialogBoxParamA;
+     DialogBoxIndirectParam = DialogBoxIndirectParamA;
+     DialogBox = DialogBoxA;
+     DialogBoxIndirect = DialogBoxIndirectA;
+     RegisterClipboardFormat = RegisterClipboardFormatA;
+     SetDlgItemText = SetDlgItemTextA;
+     GetDlgItemText = GetDlgItemTextA;
+     SendDlgItemMessage = SendDlgItemMessageA;
+     DefDlgProc = DefDlgProcA;
+     CallMsgFilter = CallMsgFilterA;
+     GetClipboardFormatName = GetClipboardFormatNameA;
+     CharToOem = CharToOemA;
+     OemToChar = OemToCharA;
+     CharToOemBuff = CharToOemBuffA;
+     OemToCharBuff = OemToCharBuffA;
+     CharUpper = CharUpperA;
+     CharUpperBuff = CharUpperBuffA;
+     CharLower = CharLowerA;
+     CharLowerBuff = CharLowerBuffA;
+     CharNext = CharNextA;
+     CharPrev = CharPrevA;
+     IsCharAlpha = IsCharAlphaA;
+     IsCharAlphaNumeric = IsCharAlphaNumericA;
+     IsCharUpper = IsCharUpperA;
+     IsCharLower = IsCharLowerA;
+     GetKeyNameText = GetKeyNameTextA;
+     VkKeyScan = VkKeyScanA;
+     VkKeyScanEx = VkKeyScanExA;
+     MapVirtualKey = MapVirtualKeyA;
+     MapVirtualKeyEx = MapVirtualKeyExA;
+     LoadAccelerators = LoadAcceleratorsA;
+     CreateAcceleratorTable = CreateAcceleratorTableA;
+     CopyAcceleratorTable = CopyAcceleratorTableA;
+     TranslateAccelerator = TranslateAcceleratorA;
+     LoadMenu = LoadMenuA;
+     LoadMenuIndirect = LoadMenuIndirectA;
+     ChangeMenu = ChangeMenuA;
+     GetMenuString = GetMenuStringA;
+     InsertMenu = InsertMenuA;
+     AppendMenu = AppendMenuA;
+     ModifyMenu = ModifyMenuA;
+     InsertMenuItem = InsertMenuItemA;
+     GetMenuItemInfo = GetMenuItemInfoA;
+     SetMenuItemInfo = SetMenuItemInfoA;
+     DrawText = DrawTextA;
+     DrawTextEx = DrawTextExA;
+     GrayString = GrayStringA;
+     DrawState = DrawStateA;
+     TabbedTextOut = TabbedTextOutA;
+     GetTabbedTextExtent = GetTabbedTextExtentA;
+     GetVersionEx = GetVersionExA;
+     wvsprintf = wvsprintfA;
+     wsprintf = wsprintfA;
+     LoadKeyboardLayout = LoadKeyboardLayoutA;
+     GetKeyboardLayoutName = GetKeyboardLayoutNameA;
+     CreateDesktop = CreateDesktopA;
+     OpenDesktop = OpenDesktopA;
+     EnumDesktops = EnumDesktopsA;
+     CreateWindowStation = CreateWindowStationA;
+     OpenWindowStation = OpenWindowStationA;
+     EnumWindowStations = EnumWindowStationsA;
+     IsBadStringPtr = IsBadStringPtrA;
+     LookupAccountSid = LookupAccountSidA;
+     LookupAccountName = LookupAccountNameA;
+     LookupPrivilegeValue = LookupPrivilegeValueA;
+     LookupPrivilegeName = LookupPrivilegeNameA;
+     LookupPrivilegeDisplayName = LookupPrivilegeDisplayNameA;
+     BuildCommDCB = BuildCommDCBA;
+     BuildCommDCBAndTimeouts = BuildCommDCBAndTimeoutsA;
+     CommConfigDialog = CommConfigDialogA;
+     GetDefaultCommConfig = GetDefaultCommConfigA;
+     SetDefaultCommConfig = SetDefaultCommConfigA;
+     GetComputerName = GetComputerNameA;
+     SetComputerName = SetComputerNameA;
+     GetUserName = GetUserNameA;
+     CreateMailslot = CreateMailslotA;
+     FormatMessage = FormatMessageA;
+     GetEnvironmentStrings = GetEnvironmentStringsA;
+     FreeEnvironmentStrings = FreeEnvironmentStringsA;
+     lstrcmp = lstrcmpA;
+     lstrcmpi = lstrcmpiA;
+     lstrcpyn = lstrcpynA;
+     lstrcpy = lstrcpyA;
+     lstrcat = lstrcatA;
+     lstrlen = lstrlenA;
+     GetBinaryType = GetBinaryTypeA;
+     GetShortPathName = GetShortPathNameA;
+     SetFileSecurity = SetFileSecurityA;
+     GetFileSecurity = GetFileSecurityA;
+     FindFirstChangeNotification = FindFirstChangeNotificationA;
+     AccessCheckAndAuditAlarm = AccessCheckAndAuditAlarmA;
+     ObjectOpenAuditAlarm = ObjectOpenAuditAlarmA;
+     ObjectPrivilegeAuditAlarm = ObjectPrivilegeAuditAlarmA;
+     ObjectCloseAuditAlarm = ObjectCloseAuditAlarmA;
+     PrivilegedServiceAuditAlarm = PrivilegedServiceAuditAlarmA;
+     OpenEventLog = OpenEventLogA;
+     RegisterEventSource = RegisterEventSourceA;
+     OpenBackupEventLog = OpenBackupEventLogA;
+     ReadEventLog = ReadEventLogA;
+     ReportEvent = ReportEventA;
+     CreateProcess = CreateProcessA;
+     FatalAppExit = FatalAppExitA;
+     GetStartupInfo = GetStartupInfoA;
+     GetCommandLine = GetCommandLineA;
+     GetEnvironmentVariable = GetEnvironmentVariableA;
+     SetEnvironmentVariable = SetEnvironmentVariableA;
+     ExpandEnvironmentStrings = ExpandEnvironmentStringsA;
+     OutputDebugString = OutputDebugStringA;
+     FindResource = FindResourceA;
+     FindResourceEx = FindResourceExA;
+     EnumResourceTypes = EnumResourceTypesA;
+     EnumResourceNames = EnumResourceNamesA;
+     EnumResourceLanguages = EnumResourceLanguagesA;
+     BeginUpdateResource = BeginUpdateResourceA;
+     UpdateResource = UpdateResourceA;
+     EndUpdateResource = EndUpdateResourceA;
+     GlobalAddAtom = GlobalAddAtomA;
+     GlobalFindAtom = GlobalFindAtomA;
+     GlobalGetAtomName = GlobalGetAtomNameA;
+     AddAtom = AddAtomA;
+     FindAtom = FindAtomA;
+     GetProfileInt = GetProfileIntA;
+     GetAtomName = GetAtomNameA;
+     GetProfileString = GetProfileStringA;
+     WriteProfileString = WriteProfileStringA;
+     GetProfileSection = GetProfileSectionA;
+     WriteProfileSection = WriteProfileSectionA;
+     GetPrivateProfileInt = GetPrivateProfileIntA;
+     GetPrivateProfileString = GetPrivateProfileStringA;
+     WritePrivateProfileString = WritePrivateProfileStringA;
+     GetPrivateProfileSection = GetPrivateProfileSectionA;
+     WritePrivateProfileSection = WritePrivateProfileSectionA;
+     GetDriveType = GetDriveTypeA;
+     GetSystemDirectory = GetSystemDirectoryA;
+     GetTempPath = GetTempPathA;
+     GetTempFileName = GetTempFileNameA;
+     GetWindowsDirectory = GetWindowsDirectoryA;
+     SetCurrentDirectory = SetCurrentDirectoryA;
+     GetCurrentDirectory = GetCurrentDirectoryA;
+     GetDiskFreeSpace = GetDiskFreeSpaceA;
+     CreateDirectory = CreateDirectoryA;
+     CreateDirectoryEx = CreateDirectoryExA;
+     RemoveDirectory = RemoveDirectoryA;
+     GetFullPathName = GetFullPathNameA;
+     DefineDosDevice = DefineDosDeviceA;
+     QueryDosDevice = QueryDosDeviceA;
+     CreateFile = CreateFileA;
+     SetFileAttributes = SetFileAttributesA;
+     GetFileAttributes = GetFileAttributesA;
+     GetCompressedFileSize = GetCompressedFileSizeA;
+     DeleteFile = DeleteFileA;
+     FindFirstFile = FindFirstFileA;
+     FindNextFile = FindNextFileA;
+     SearchPath = SearchPathA;
+     CopyFile = CopyFileA;
+     MoveFile = MoveFileA;
+     MoveFileEx = MoveFileExA;
+     CreateNamedPipe = CreateNamedPipeA;
+     GetNamedPipeHandleState = GetNamedPipeHandleStateA;
+     CallNamedPipe = CallNamedPipeA;
+     WaitNamedPipe = WaitNamedPipeA;
+     SetVolumeLabel = SetVolumeLabelA;
+     GetVolumeInformation = GetVolumeInformationA;
+     ClearEventLog = ClearEventLogA;
+     BackupEventLog = BackupEventLogA;
+     CreateMutex = CreateMutexA;
+     OpenMutex = OpenMutexA;
+     CreateEvent = CreateEventA;
+     OpenEvent = OpenEventA;
+     CreateSemaphore = CreateSemaphoreA;
+     OpenSemaphore = OpenSemaphoreA;
+     CreateFileMapping = CreateFileMappingA;
+     OpenFileMapping = OpenFileMappingA;
+     GetLogicalDriveStrings = GetLogicalDriveStringsA;
+     LoadLibrary = LoadLibraryA;
+     LoadLibraryEx = LoadLibraryExA;
+     GetModuleFileName = GetModuleFileNameA;
+     GetModuleHandle = GetModuleHandleA;
+     GetUserObjectInformation = GetUserObjectInformationA;
+     SetUserObjectInformation = SetUserObjectInformationA;
+     RegisterWindowMessage = RegisterWindowMessageA;
+     GetMessage = GetMessageA;
+     DispatchMessage = DispatchMessageA;
+     PeekMessage = PeekMessageA;
+     SendMessage = SendMessageA;
+     SendMessageTimeout = SendMessageTimeoutA;
+     SendNotifyMessage = SendNotifyMessageA;
+     SendMessageCallback = SendMessageCallbackA;
+     PostMessage = PostMessageA;
+     PostThreadMessage = PostThreadMessageA;
+     VerFindFile = VerFindFileA;
+     VerInstallFile = VerInstallFileA;
+     GetFileVersionInfoSize = GetFileVersionInfoSizeA;
+     GetFileVersionInfo = GetFileVersionInfoA;
+     VerLanguageName = VerLanguageNameA;
+     VerQueryValue = VerQueryValueA;
+     CompareString = CompareStringA;
+     LCMapString = LCMapStringA;
+     GetLocaleInfo = GetLocaleInfoA;
+     SetLocaleInfo = SetLocaleInfoA;
+     GetTimeFormat = GetTimeFormatA;
+     GetDateFormat = GetDateFormatA;
+     GetNumberFormat = GetNumberFormatA;
+     GetCurrencyFormat = GetCurrencyFormatA;
+     EnumCalendarInfo = EnumCalendarInfoA;
+     EnumTimeFormats = EnumTimeFormatsA;
+     FoldString = FoldStringA;
+     EnumSystemCodePages = EnumSystemCodePagesA;
+     EnumSystemLocales = EnumSystemLocalesA;
+     GetStringTypeEx = GetStringTypeExA;
+     EnumDateFormats = EnumDateFormatsA;
+     GetConsoleTitle = GetConsoleTitleA;
+     ScrollConsoleScreenBuffer = ScrollConsoleScreenBufferA;
+     SetConsoleTitle = SetConsoleTitleA;
+     ReadConsole = ReadConsoleA;
+     WriteConsole = WriteConsoleA;
+     PeekConsoleInput = PeekConsoleInputA;
+     ReadConsoleInput = ReadConsoleInputA;
+     WriteConsoleInput = WriteConsoleInputA;
+     ReadConsoleOutput = ReadConsoleOutputA;
+     WriteConsoleOutput = WriteConsoleOutputA;
+     ReadConsoleOutputCharacter = ReadConsoleOutputCharacterA;
+     WriteConsoleOutputCharacter = WriteConsoleOutputCharacterA;
+     FillConsoleOutputCharacter = FillConsoleOutputCharacterA;
+     MultinetGetConnectionPerformance = MultinetGetConnectionPerformanceA;
+     WNetGetLastError = WNetGetLastErrorA;
+     WNetGetProviderName = WNetGetProviderNameA;
+     WNetGetNetworkInformation = WNetGetNetworkInformationA;
+     WNetConnectionDialog1 = WNetConnectionDialog1A;
+     WNetDisconnectDialog1 = WNetDisconnectDialog1A;
+     WNetOpenEnum = WNetOpenEnumA;
+     WNetEnumResource = WNetEnumResourceA;
+     WNetGetUniversalName = WNetGetUniversalNameA;
+     WNetGetUser = WNetGetUserA;
+     WNetAddConnection = WNetAddConnectionA;
+     WNetAddConnection2 = WNetAddConnection2A;
+     WNetAddConnection3 = WNetAddConnection3A;
+     WNetCancelConnection = WNetCancelConnectionA;
+     WNetCancelConnection2 = WNetCancelConnection2A;
+     WNetGetConnection = WNetGetConnectionA;
+     WNetUseConnection = WNetUseConnectionA;
+     WNetSetConnection = WNetSetConnectionA;
+     OpenService = OpenServiceA;
+     QueryServiceConfig = QueryServiceConfigA;
+     QueryServiceLockStatus = QueryServiceLockStatusA;
+     RegisterServiceCtrlHandler = RegisterServiceCtrlHandlerA;
+     StartServiceCtrlDispatcher = StartServiceCtrlDispatcherA;
+     StartService = StartServiceA;
+     ChangeServiceConfig = ChangeServiceConfigA;
+     CreateService = CreateServiceA;
+     EnumDependentServices = EnumDependentServicesA;
+     EnumServicesStatus = EnumServicesStatusA;
+     GetServiceKeyName = GetServiceKeyNameA;
+     GetServiceDisplayName = GetServiceDisplayNameA;
+     OpenSCManager = OpenSCManagerA;
+     DragQueryFile = DragQueryFileA;
+     ExtractAssociatedIcon = ExtractAssociatedIconA;
+     ExtractIcon = ExtractIconA;
+     FindExecutable = FindExecutableA;
+     ShellAbout = ShellAboutA;
+     ShellExecute = ShellExecuteA;
+     DdeCreateStringHandle = DdeCreateStringHandleA;
+     DdeInitialize = DdeInitializeA;
+     DdeQueryString = DdeQueryStringA;
+     LogonUser = LogonUserA;
+     CreateProcessAsUser = CreateProcessAsUserA;
+{$endif}
+  { UNICODE and ASCII defines  }  *)
+
+  function AbnormalTermination:WINBOOL;
+
+  function AbortDoc(_para1:HDC):longint;
+
+  function AbortPath(_para1:HDC):WINBOOL;
+
+  function AbortPrinter(_para1:HANDLE):WINBOOL;
+
+  function AbortProc(_para1:HDC; _para2:longint):WINBOOL;
+
+{$ifndef windows_include_files}
+  function AbortSystemShutdown(_para1:LPTSTR):WINBOOL;
+{$endif windows_include_files}
+
+  function AccessCheck(pSecurityDescriptor:PSECURITY_DESCRIPTOR; ClientToken:HANDLE; DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; PrivilegeSet:PPRIVILEGE_SET; 
+             PrivilegeSetLength:LPDWORD; GrantedAccess:LPDWORD; AccessStatus:LPBOOL):WINBOOL;
+
+{$ifndef windows_include_files}
+  function AccessCheckAndAuditAlarm(SubsystemName:LPCTSTR; HandleId:LPVOID; ObjectTypeName:LPTSTR; ObjectName:LPTSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL;
+{$endif windows_include_files}
+
+  function InterlockedIncrement(lpAddend:LPLONG):LONG;
+
+  function InterlockedDecrement(lpAddend:LPLONG):LONG;
+
+  function InterlockedExchange(Target:LPLONG; Value:LONG):LONG;
+
+  function FreeResource(hResData:HGLOBAL):WINBOOL;
+
+  function LockResource(hResData:HGLOBAL):LPVOID;
+
+  function WinMain(hInstance:HINSTANCE; hPrevInstance:HINSTANCE; lpCmdLine:LPSTR; nShowCmd:longint):longint;
+
+  function FreeLibrary(hLibModule:HINSTANCE):WINBOOL;
+
+  procedure FreeLibraryAndExitThread(hLibModule:HMODULE; dwExitCode:DWORD);
+
+  function DisableThreadLibraryCalls(hLibModule:HMODULE):WINBOOL;
+
+  function GetProcAddress(hModule:HINSTANCE; lpProcName:LPCSTR):FARPROC;
+
+  function GetVersion:DWORD;
+
+  function GlobalAlloc(uFlags:UINT; dwBytes:DWORD):HGLOBAL;
+
+  function GlobalDiscard(hglbMem:HGLOBAL):HGLOBAL;
+
+  function GlobalReAlloc(hMem:HGLOBAL; dwBytes:DWORD; uFlags:UINT):HGLOBAL;
+
+  function GlobalSize(hMem:HGLOBAL):DWORD;
+
+  function GlobalFlags(hMem:HGLOBAL):UINT;
+
+  function GlobalLock(hMem:HGLOBAL):LPVOID;
+
+  function GlobalHandle(pMem:LPCVOID):HGLOBAL;
+
+  function GlobalUnlock(hMem:HGLOBAL):WINBOOL;
+
+  function GlobalFree(hMem:HGLOBAL):HGLOBAL;
+
+  function GlobalCompact(dwMinFree:DWORD):UINT;
+
+  procedure GlobalFix(hMem:HGLOBAL);
+
+  procedure GlobalUnfix(hMem:HGLOBAL);
+
+  function GlobalWire(hMem:HGLOBAL):LPVOID;
+
+  function GlobalUnWire(hMem:HGLOBAL):WINBOOL;
+
+  procedure GlobalMemoryStatus(lpBuffer:LPMEMORYSTATUS);
+
+  function LocalAlloc(uFlags:UINT; uBytes:UINT):HLOCAL;
+
+  function LocalDiscard(hlocMem:HLOCAL):HLOCAL;
+
+  function LocalReAlloc(hMem:HLOCAL; uBytes:UINT; uFlags:UINT):HLOCAL;
+
+  function LocalLock(hMem:HLOCAL):LPVOID;
+
+  function LocalHandle(pMem:LPCVOID):HLOCAL;
+
+  function LocalUnlock(hMem:HLOCAL):WINBOOL;
+
+  function LocalSize(hMem:HLOCAL):UINT;
+
+  function LocalFlags(hMem:HLOCAL):UINT;
+
+  function LocalFree(hMem:HLOCAL):HLOCAL;
+
+  function LocalShrink(hMem:HLOCAL; cbNewSize:UINT):UINT;
+
+  function LocalCompact(uMinFree:UINT):UINT;
+
+  function FlushInstructionCache(hProcess:HANDLE; lpBaseAddress:LPCVOID; dwSize:DWORD):WINBOOL;
+
+  function VirtualAlloc(lpAddress:LPVOID; dwSize:DWORD; flAllocationType:DWORD; flProtect:DWORD):LPVOID;
+
+  function VirtualFree(lpAddress:LPVOID; dwSize:DWORD; dwFreeType:DWORD):WINBOOL;
+
+  function VirtualProtect(lpAddress:LPVOID; dwSize:DWORD; flNewProtect:DWORD; lpflOldProtect:PDWORD):WINBOOL;
+
+  function VirtualQuery(lpAddress:LPCVOID; lpBuffer:PMEMORY_BASIC_INFORMATION; dwLength:DWORD):DWORD;
+
+  function VirtualProtectEx(hProcess:HANDLE; lpAddress:LPVOID; dwSize:DWORD; flNewProtect:DWORD; lpflOldProtect:PDWORD):WINBOOL;
+
+  function VirtualQueryEx(hProcess:HANDLE; lpAddress:LPCVOID; lpBuffer:PMEMORY_BASIC_INFORMATION; dwLength:DWORD):DWORD;
+
+  function HeapCreate(flOptions:DWORD; dwInitialSize:DWORD; dwMaximumSize:DWORD):HANDLE;
+
+  function HeapDestroy(hHeap:HANDLE):WINBOOL;
+
+  function HeapAlloc(hHeap:HANDLE; dwFlags:DWORD; dwBytes:DWORD):LPVOID;
+
+  function HeapReAlloc(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPVOID; dwBytes:DWORD):LPVOID;
+
+  function HeapFree(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPVOID):WINBOOL;
+
+  function HeapSize(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPCVOID):DWORD;
+
+  function HeapValidate(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPCVOID):WINBOOL;
+
+  function HeapCompact(hHeap:HANDLE; dwFlags:DWORD):UINT;
+
+  function GetProcessHeap:HANDLE;
+
+  function GetProcessHeaps(NumberOfHeaps:DWORD; ProcessHeaps:PHANDLE):DWORD;
+
+  function HeapLock(hHeap:HANDLE):WINBOOL;
+
+  function HeapUnlock(hHeap:HANDLE):WINBOOL;
+
+  function HeapWalk(hHeap:HANDLE; lpEntry:LPPROCESS_HEAP_ENTRY):WINBOOL;
+
+  function GetProcessAffinityMask(hProcess:HANDLE; lpProcessAffinityMask:LPDWORD; lpSystemAffinityMask:LPDWORD):WINBOOL;
+
+  function GetProcessTimes(hProcess:HANDLE; lpCreationTime:LPFILETIME; lpExitTime:LPFILETIME; lpKernelTime:LPFILETIME; lpUserTime:LPFILETIME):WINBOOL;
+
+  function GetProcessWorkingSetSize(hProcess:HANDLE; lpMinimumWorkingSetSize:LPDWORD; lpMaximumWorkingSetSize:LPDWORD):WINBOOL;
+
+  function SetProcessWorkingSetSize(hProcess:HANDLE; dwMinimumWorkingSetSize:DWORD; dwMaximumWorkingSetSize:DWORD):WINBOOL;
+
+  function OpenProcess(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; dwProcessId:DWORD):HANDLE;
+
+  function GetCurrentProcess:HANDLE;
+
+  function GetCurrentProcessId:DWORD;
+
+(* error 
+STDCALL
+ExitProcess(
+ in declarator_list
+
+    var
+ : void'; *)
+  procedure ExitProcess(uExitCode:UINT);
+
+  function TerminateProcess(hProcess:HANDLE; uExitCode:UINT):WINBOOL;
+
+  function GetExitCodeProcess(hProcess:HANDLE; lpExitCode:LPDWORD):WINBOOL;
+
+  procedure FatalExit(ExitCode:longint);
+
+(* Const before type ignored *)
+  procedure RaiseException(dwExceptionCode:DWORD; dwExceptionFlags:DWORD; nNumberOfArguments:DWORD; var lpArguments:DWORD);
+
+  function UnhandledExceptionFilter(var ExceptionInfo:emptyrecord):LONG;
+
+  {
+   TODO: what is TOP_LEVEL_EXCEPTION_FILTER?
+  LPTOP_LEVEL_EXCEPTION_FILTER
+  STDCALL
+  SetUnhandledExceptionFilter(
+      LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
+      );
+   }
+  function CreateThread(lpThreadAttributes:LPSECURITY_ATTRIBUTES; dwStackSize:DWORD; lpStartAddress:LPTHREAD_START_ROUTINE; lpParameter:LPVOID; dwCreationFlags:DWORD; 
+             lpThreadId:LPDWORD):HANDLE;
+
+  function CreateRemoteThread(hProcess:HANDLE; lpThreadAttributes:LPSECURITY_ATTRIBUTES; dwStackSize:DWORD; lpStartAddress:LPTHREAD_START_ROUTINE; lpParameter:LPVOID; 
+             dwCreationFlags:DWORD; lpThreadId:LPDWORD):HANDLE;
+
+  function GetCurrentThread:HANDLE;
+
+  function GetCurrentThreadId:DWORD;
+
+  function SetThreadAffinityMask(hThread:HANDLE; dwThreadAffinityMask:DWORD):DWORD;
+
+  function SetThreadPriority(hThread:HANDLE; nPriority:longint):WINBOOL;
+
+  function GetThreadPriority(hThread:HANDLE):longint;
+
+  function GetThreadTimes(hThread:HANDLE; lpCreationTime:LPFILETIME; lpExitTime:LPFILETIME; lpKernelTime:LPFILETIME; lpUserTime:LPFILETIME):WINBOOL;
+
+  procedure ExitThread(dwExitCode:DWORD);
+
+  function TerminateThread(hThread:HANDLE; dwExitCode:DWORD):WINBOOL;
+
+  function GetExitCodeThread(hThread:HANDLE; lpExitCode:LPDWORD):WINBOOL;
+
+  function GetThreadSelectorEntry(hThread:HANDLE; dwSelector:DWORD; lpSelectorEntry:LPLDT_ENTRY):WINBOOL;
+
+  function GetLastError:DWORD;
+
+  procedure SetLastError(dwErrCode:DWORD);
+
+  function GetOverlappedResult(hFile:HANDLE; lpOverlapped:LPOVERLAPPED; lpNumberOfBytesTransferred:LPDWORD; bWait:WINBOOL):WINBOOL;
+
+  function CreateIoCompletionPort(FileHandle:HANDLE; ExistingCompletionPort:HANDLE; CompletionKey:DWORD; NumberOfConcurrentThreads:DWORD):HANDLE;
+
+  function GetQueuedCompletionStatus(CompletionPort:HANDLE; lpNumberOfBytesTransferred:LPDWORD; lpCompletionKey:LPDWORD; var lpOverlapped:LPOVERLAPPED; dwMilliseconds:DWORD):WINBOOL;
+
+  function SetErrorMode(uMode:UINT):UINT;
+
+  function ReadProcessMemory(hProcess:HANDLE; lpBaseAddress:LPCVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesRead:LPDWORD):WINBOOL;
+
+  function WriteProcessMemory(hProcess:HANDLE; lpBaseAddress:LPVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesWritten:LPDWORD):WINBOOL;
+
+  function GetThreadContext(hThread:HANDLE; lpContext:LPCONTEXT):WINBOOL;
+
+(* Const before type ignored *)
+  function SetThreadContext(hThread:HANDLE; var lpContext:CONTEXT):WINBOOL;
+
+  function SuspendThread(hThread:HANDLE):DWORD;
+
+  function ResumeThread(hThread:HANDLE):DWORD;
+
+  procedure DebugBreak;
+
+  function WaitForDebugEvent(lpDebugEvent:LPDEBUG_EVENT; dwMilliseconds:DWORD):WINBOOL;
+
+  function ContinueDebugEvent(dwProcessId:DWORD; dwThreadId:DWORD; dwContinueStatus:DWORD):WINBOOL;
+
+  function DebugActiveProcess(dwProcessId:DWORD):WINBOOL;
+
+  procedure InitializeCriticalSection(lpCriticalSection:LPCRITICAL_SECTION);
+
+  procedure EnterCriticalSection(lpCriticalSection:LPCRITICAL_SECTION);
+
+  procedure LeaveCriticalSection(lpCriticalSection:LPCRITICAL_SECTION);
+
+  procedure DeleteCriticalSection(lpCriticalSection:LPCRITICAL_SECTION);
+
+  function SetEvent(hEvent:HANDLE):WINBOOL;
+
+  function ResetEvent(hEvent:HANDLE):WINBOOL;
+
+  function PulseEvent(hEvent:HANDLE):WINBOOL;
+
+  function ReleaseSemaphore(hSemaphore:HANDLE; lReleaseCount:LONG; lpPreviousCount:LPLONG):WINBOOL;
+
+  function ReleaseMutex(hMutex:HANDLE):WINBOOL;
+
+  function WaitForSingleObject(hHandle:HANDLE; dwMilliseconds:DWORD):DWORD;
+
+(* Const before type ignored *)
+  function WaitForMultipleObjects(nCount:DWORD; var lpHandles:HANDLE; bWaitAll:WINBOOL; dwMilliseconds:DWORD):DWORD;
+
+  procedure Sleep(dwMilliseconds:DWORD);
+
+  function LoadResource(hModule:HINSTANCE; hResInfo:HRSRC):HGLOBAL;
+
+  function SizeofResource(hModule:HINSTANCE; hResInfo:HRSRC):DWORD;
+
+  function GlobalDeleteAtom(nAtom:ATOM):ATOM;
+
+  function InitAtomTable(nSize:DWORD):WINBOOL;
+
+  function DeleteAtom(nAtom:ATOM):ATOM;
+
+  function SetHandleCount(uNumber:UINT):UINT;
+
+  function GetLogicalDrives:DWORD;
+
+  function LockFile(hFile:HANDLE; dwFileOffsetLow:DWORD; dwFileOffsetHigh:DWORD; nNumberOfBytesToLockLow:DWORD; nNumberOfBytesToLockHigh:DWORD):WINBOOL;
+
+  function UnlockFile(hFile:HANDLE; dwFileOffsetLow:DWORD; dwFileOffsetHigh:DWORD; nNumberOfBytesToUnlockLow:DWORD; nNumberOfBytesToUnlockHigh:DWORD):WINBOOL;
+
+  function LockFileEx(hFile:HANDLE; dwFlags:DWORD; dwReserved:DWORD; nNumberOfBytesToLockLow:DWORD; nNumberOfBytesToLockHigh:DWORD; 
+             lpOverlapped:LPOVERLAPPED):WINBOOL;
+
+  function UnlockFileEx(hFile:HANDLE; dwReserved:DWORD; nNumberOfBytesToUnlockLow:DWORD; nNumberOfBytesToUnlockHigh:DWORD; lpOverlapped:LPOVERLAPPED):WINBOOL;
+
+  function GetFileInformationByHandle(hFile:HANDLE; lpFileInformation:LPBY_HANDLE_FILE_INFORMATION):WINBOOL;
+
+  function GetFileType(hFile:HANDLE):DWORD;
+
+  function GetFileSize(hFile:HANDLE; lpFileSizeHigh:LPDWORD):DWORD;
+
+  function GetStdHandle(nStdHandle:DWORD):HANDLE;
+
+  function SetStdHandle(nStdHandle:DWORD; hHandle:HANDLE):WINBOOL;
+
+  function WriteFile(hFile:HANDLE; lpBuffer:LPCVOID; nNumberOfBytesToWrite:DWORD; lpNumberOfBytesWritten:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL;
+
+  function ReadFile(hFile:HANDLE; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; lpNumberOfBytesRead:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL;
+
+  function FlushFileBuffers(hFile:HANDLE):WINBOOL;
+
+  function DeviceIoControl(hDevice:HANDLE; dwIoControlCode:DWORD; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; 
+             nOutBufferSize:DWORD; lpBytesReturned:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL;
+
+  function SetEndOfFile(hFile:HANDLE):WINBOOL;
+
+  function SetFilePointer(hFile:HANDLE; lDistanceToMove:LONG; lpDistanceToMoveHigh:PLONG; dwMoveMethod:DWORD):DWORD;
+
+  function FindClose(hFindFile:HANDLE):WINBOOL;
+
+  function GetFileTime(hFile:HANDLE; lpCreationTime:LPFILETIME; lpLastAccessTime:LPFILETIME; lpLastWriteTime:LPFILETIME):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function SetFileTime(hFile:HANDLE; var lpCreationTime:FILETIME; var lpLastAccessTime:FILETIME; var lpLastWriteTime:FILETIME):WINBOOL;
+
+  function CloseHandle(hObject:HANDLE):WINBOOL;
+
+  function DuplicateHandle(hSourceProcessHandle:HANDLE; hSourceHandle:HANDLE; hTargetProcessHandle:HANDLE; lpTargetHandle:LPHANDLE; dwDesiredAccess:DWORD; 
+             bInheritHandle:WINBOOL; dwOptions:DWORD):WINBOOL;
+
+  function GetHandleInformation(hObject:HANDLE; lpdwFlags:LPDWORD):WINBOOL;
+
+  function SetHandleInformation(hObject:HANDLE; dwMask:DWORD; dwFlags:DWORD):WINBOOL;
+
+  function LoadModule(lpModuleName:LPCSTR; lpParameterBlock:LPVOID):DWORD;
+
+  function WinExec(lpCmdLine:LPCSTR; uCmdShow:UINT):UINT;
+
+  function ClearCommBreak(hFile:HANDLE):WINBOOL;
+
+  function ClearCommError(hFile:HANDLE; lpErrors:LPDWORD; lpStat:LPCOMSTAT):WINBOOL;
+
+  function SetupComm(hFile:HANDLE; dwInQueue:DWORD; dwOutQueue:DWORD):WINBOOL;
+
+  function EscapeCommFunction(hFile:HANDLE; dwFunc:DWORD):WINBOOL;
+
+  function GetCommConfig(hCommDev:HANDLE; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL;
+
+  function GetCommMask(hFile:HANDLE; lpEvtMask:LPDWORD):WINBOOL;
+
+  function GetCommProperties(hFile:HANDLE; lpCommProp:LPCOMMPROP):WINBOOL;
+
+  function GetCommModemStatus(hFile:HANDLE; lpModemStat:LPDWORD):WINBOOL;
+
+  function GetCommState(hFile:HANDLE; lpDCB:LPDCB):WINBOOL;
+
+  function GetCommTimeouts(hFile:HANDLE; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL;
+
+  function PurgeComm(hFile:HANDLE; dwFlags:DWORD):WINBOOL;
+
+  function SetCommBreak(hFile:HANDLE):WINBOOL;
+
+  function SetCommConfig(hCommDev:HANDLE; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL;
+
+  function SetCommMask(hFile:HANDLE; dwEvtMask:DWORD):WINBOOL;
+
+  function SetCommState(hFile:HANDLE; lpDCB:LPDCB):WINBOOL;
+
+  function SetCommTimeouts(hFile:HANDLE; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL;
+
+  function TransmitCommChar(hFile:HANDLE; cChar:char):WINBOOL;
+
+  function WaitCommEvent(hFile:HANDLE; lpEvtMask:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL;
+
+  function SetTapePosition(hDevice:HANDLE; dwPositionMethod:DWORD; dwPartition:DWORD; dwOffsetLow:DWORD; dwOffsetHigh:DWORD; 
+             bImmediate:WINBOOL):DWORD;
+
+  function GetTapePosition(hDevice:HANDLE; dwPositionType:DWORD; lpdwPartition:LPDWORD; lpdwOffsetLow:LPDWORD; lpdwOffsetHigh:LPDWORD):DWORD;
+
+  function PrepareTape(hDevice:HANDLE; dwOperation:DWORD; bImmediate:WINBOOL):DWORD;
+
+  function EraseTape(hDevice:HANDLE; dwEraseType:DWORD; bImmediate:WINBOOL):DWORD;
+
+  function CreateTapePartition(hDevice:HANDLE; dwPartitionMethod:DWORD; dwCount:DWORD; dwSize:DWORD):DWORD;
+
+  function WriteTapemark(hDevice:HANDLE; dwTapemarkType:DWORD; dwTapemarkCount:DWORD; bImmediate:WINBOOL):DWORD;
+
+  function GetTapeStatus(hDevice:HANDLE):DWORD;
+
+  function GetTapeParameters(hDevice:HANDLE; dwOperation:DWORD; lpdwSize:LPDWORD; lpTapeInformation:LPVOID):DWORD;
+
+  function SetTapeParameters(hDevice:HANDLE; dwOperation:DWORD; lpTapeInformation:LPVOID):DWORD;
+
+  function Beep(dwFreq:DWORD; dwDuration:DWORD):WINBOOL;
+
+  procedure OpenSound;
+
+  procedure CloseSound;
+
+  procedure StartSound;
+
+  procedure StopSound;
+
+  function WaitSoundState(nState:DWORD):DWORD;
+
+  function SyncAllVoices:DWORD;
+
+  function CountVoiceNotes(nVoice:DWORD):DWORD;
+
+  function GetThresholdEvent:LPDWORD;
+
+  function GetThresholdStatus:DWORD;
+
+  function SetSoundNoise(nSource:DWORD; nDuration:DWORD):DWORD;
+
+  function SetVoiceAccent(nVoice:DWORD; nTempo:DWORD; nVolume:DWORD; nMode:DWORD; nPitch:DWORD):DWORD;
+
+  function SetVoiceEnvelope(nVoice:DWORD; nShape:DWORD; nRepeat:DWORD):DWORD;
+
+  function SetVoiceNote(nVoice:DWORD; nValue:DWORD; nLength:DWORD; nCdots:DWORD):DWORD;
+
+  function SetVoiceQueueSize(nVoice:DWORD; nBytes:DWORD):DWORD;
+
+  function SetVoiceSound(nVoice:DWORD; Frequency:DWORD; nDuration:DWORD):DWORD;
+
+  function SetVoiceThreshold(nVoice:DWORD; nNotes:DWORD):DWORD;
+
+  function MulDiv(nNumber:longint; nNumerator:longint; nDenominator:longint):longint;
+
+  procedure GetSystemTime(lpSystemTime:LPSYSTEMTIME);
+
+(* Const before type ignored *)
+  function SetSystemTime(var lpSystemTime:SYSTEMTIME):WINBOOL;
+
+  procedure GetLocalTime(lpSystemTime:LPSYSTEMTIME);
+
+(* Const before type ignored *)
+  function SetLocalTime(var lpSystemTime:SYSTEMTIME):WINBOOL;
+
+  procedure GetSystemInfo(lpSystemInfo:LPSYSTEM_INFO);
+
+  function SystemTimeToTzSpecificLocalTime(lpTimeZoneInformation:LPTIME_ZONE_INFORMATION; lpUniversalTime:LPSYSTEMTIME; lpLocalTime:LPSYSTEMTIME):WINBOOL;
+
+  function GetTimeZoneInformation(lpTimeZoneInformation:LPTIME_ZONE_INFORMATION):DWORD;
+
+(* Const before type ignored *)
+  function SetTimeZoneInformation(var lpTimeZoneInformation:TIME_ZONE_INFORMATION):WINBOOL;
+
+(* Const before type ignored *)
+  function SystemTimeToFileTime(var lpSystemTime:SYSTEMTIME; lpFileTime:LPFILETIME):WINBOOL;
+
+(* Const before type ignored *)
+  function FileTimeToLocalFileTime(var lpFileTime:FILETIME; lpLocalFileTime:LPFILETIME):WINBOOL;
+
+(* Const before type ignored *)
+  function LocalFileTimeToFileTime(var lpLocalFileTime:FILETIME; lpFileTime:LPFILETIME):WINBOOL;
+
+(* Const before type ignored *)
+  function FileTimeToSystemTime(var lpFileTime:FILETIME; lpSystemTime:LPSYSTEMTIME):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function CompareFileTime(var lpFileTime1:FILETIME; var lpFileTime2:FILETIME):LONG;
+
+(* Const before type ignored *)
+  function FileTimeToDosDateTime(var lpFileTime:FILETIME; lpFatDate:LPWORD; lpFatTime:LPWORD):WINBOOL;
+
+  function DosDateTimeToFileTime(wFatDate:WORD; wFatTime:WORD; lpFileTime:LPFILETIME):WINBOOL;
+
+  function GetTickCount:DWORD;
+
+  function SetSystemTimeAdjustment(dwTimeAdjustment:DWORD; bTimeAdjustmentDisabled:WINBOOL):WINBOOL;
+
+  function GetSystemTimeAdjustment(lpTimeAdjustment:PDWORD; lpTimeIncrement:PDWORD; lpTimeAdjustmentDisabled:PWINBOOL):WINBOOL;
+
+  function CreatePipe(hReadPipe:PHANDLE; hWritePipe:PHANDLE; lpPipeAttributes:LPSECURITY_ATTRIBUTES; nSize:DWORD):WINBOOL;
+
+  function ConnectNamedPipe(hNamedPipe:HANDLE; lpOverlapped:LPOVERLAPPED):WINBOOL;
+
+  function DisconnectNamedPipe(hNamedPipe:HANDLE):WINBOOL;
+
+  function SetNamedPipeHandleState(hNamedPipe:HANDLE; lpMode:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD):WINBOOL;
+
+  function GetNamedPipeInfo(hNamedPipe:HANDLE; lpFlags:LPDWORD; lpOutBufferSize:LPDWORD; lpInBufferSize:LPDWORD; lpMaxInstances:LPDWORD):WINBOOL;
+
+  function PeekNamedPipe(hNamedPipe:HANDLE; lpBuffer:LPVOID; nBufferSize:DWORD; lpBytesRead:LPDWORD; lpTotalBytesAvail:LPDWORD; 
+             lpBytesLeftThisMessage:LPDWORD):WINBOOL;
+
+  function TransactNamedPipe(hNamedPipe:HANDLE; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL;
+
+  function GetMailslotInfo(hMailslot:HANDLE; lpMaxMessageSize:LPDWORD; lpNextSize:LPDWORD; lpMessageCount:LPDWORD; lpReadTimeout:LPDWORD):WINBOOL;
+
+  function SetMailslotInfo(hMailslot:HANDLE; lReadTimeout:DWORD):WINBOOL;
+
+  function MapViewOfFile(hFileMappingObject:HANDLE; dwDesiredAccess:DWORD; dwFileOffsetHigh:DWORD; dwFileOffsetLow:DWORD; dwNumberOfBytesToMap:DWORD):LPVOID;
+
+  function FlushViewOfFile(lpBaseAddress:LPCVOID; dwNumberOfBytesToFlush:DWORD):WINBOOL;
+
+  function UnmapViewOfFile(lpBaseAddress:LPVOID):WINBOOL;
+
+  function OpenFile(lpFileName:LPCSTR; lpReOpenBuff:LPOFSTRUCT; uStyle:UINT):HFILE;
+
+  function _lopen(lpPathName:LPCSTR; iReadWrite:longint):HFILE;
+
+  function _lcreat(lpPathName:LPCSTR; iAttribute:longint):HFILE;
+
+  function _lread(hFile:HFILE; lpBuffer:LPVOID; uBytes:UINT):UINT;
+
+  function _lwrite(hFile:HFILE; lpBuffer:LPCSTR; uBytes:UINT):UINT;
+
+  function _hread(hFile:HFILE; lpBuffer:LPVOID; lBytes:longint):longint;
+
+  function _hwrite(hFile:HFILE; lpBuffer:LPCSTR; lBytes:longint):longint;
+
+  function _lclose(hFile:HFILE):HFILE;
+
+  function _llseek(hFile:HFILE; lOffset:LONG; iOrigin:longint):LONG;
+
+(* Const before type ignored *)
+  function IsTextUnicode(lpBuffer:LPVOID; cb:longint; lpi:LPINT):WINBOOL;
+
+  function TlsAlloc:DWORD;
+
+  function TlsGetValue(dwTlsIndex:DWORD):LPVOID;
+
+  function TlsSetValue(dwTlsIndex:DWORD; lpTlsValue:LPVOID):WINBOOL;
+
+  function TlsFree(dwTlsIndex:DWORD):WINBOOL;
+
+  function SleepEx(dwMilliseconds:DWORD; bAlertable:WINBOOL):DWORD;
+
+  function WaitForSingleObjectEx(hHandle:HANDLE; dwMilliseconds:DWORD; bAlertable:WINBOOL):DWORD;
+
+(* Const before type ignored *)
+  function WaitForMultipleObjectsEx(nCount:DWORD; var lpHandles:HANDLE; bWaitAll:WINBOOL; dwMilliseconds:DWORD; bAlertable:WINBOOL):DWORD;
+
+  function ReadFileEx(hFile:HANDLE; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; lpOverlapped:LPOVERLAPPED; lpCompletionRoutine:LPOVERLAPPED_COMPLETION_ROUTINE):WINBOOL;
+
+  function WriteFileEx(hFile:HANDLE; lpBuffer:LPCVOID; nNumberOfBytesToWrite:DWORD; lpOverlapped:LPOVERLAPPED; lpCompletionRoutine:LPOVERLAPPED_COMPLETION_ROUTINE):WINBOOL;
+
+  function BackupRead(hFile:HANDLE; lpBuffer:LPBYTE; nNumberOfBytesToRead:DWORD; lpNumberOfBytesRead:LPDWORD; bAbort:WINBOOL; 
+             bProcessSecurity:WINBOOL; var lpContext:LPVOID):WINBOOL;
+
+  function BackupSeek(hFile:HANDLE; dwLowBytesToSeek:DWORD; dwHighBytesToSeek:DWORD; lpdwLowByteSeeked:LPDWORD; lpdwHighByteSeeked:LPDWORD; 
+             var lpContext:LPVOID):WINBOOL;
+
+  function BackupWrite(hFile:HANDLE; lpBuffer:LPBYTE; nNumberOfBytesToWrite:DWORD; lpNumberOfBytesWritten:LPDWORD; bAbort:WINBOOL; 
+             bProcessSecurity:WINBOOL; var lpContext:LPVOID):WINBOOL;
+
+  function SetProcessShutdownParameters(dwLevel:DWORD; dwFlags:DWORD):WINBOOL;
+
+  function GetProcessShutdownParameters(lpdwLevel:LPDWORD; lpdwFlags:LPDWORD):WINBOOL;
+
+  procedure SetFileApisToOEM;
+
+  procedure SetFileApisToANSI;
+
+  function AreFileApisANSI:WINBOOL;
+
+  function CloseEventLog(hEventLog:HANDLE):WINBOOL;
+
+  function DeregisterEventSource(hEventLog:HANDLE):WINBOOL;
+
+  function NotifyChangeEventLog(hEventLog:HANDLE; hEvent:HANDLE):WINBOOL;
+
+  function GetNumberOfEventLogRecords(hEventLog:HANDLE; NumberOfRecords:PDWORD):WINBOOL;
+
+  function GetOldestEventLogRecord(hEventLog:HANDLE; OldestRecord:PDWORD):WINBOOL;
+
+  function DuplicateToken(ExistingTokenHandle:HANDLE; ImpersonationLevel:SECURITY_IMPERSONATION_LEVEL; DuplicateTokenHandle:PHANDLE):WINBOOL;
+
+  function GetKernelObjectSecurity(Handle:HANDLE; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+  function ImpersonateNamedPipeClient(hNamedPipe:HANDLE):WINBOOL;
+
+  function ImpersonateLoggedOnUser(hToken:HANDLE):WINBOOL;
+
+  function ImpersonateSelf(ImpersonationLevel:SECURITY_IMPERSONATION_LEVEL):WINBOOL;
+
+  function RevertToSelf:WINBOOL;
+
+  function SetThreadToken(Thread:PHANDLE; Token:HANDLE):WINBOOL;
+
+(*  function AccessCheck(pSecurityDescriptor:PSECURITY_DESCRIPTOR; ClientToken:HANDLE; DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; PrivilegeSet:PPRIVILEGE_SET;
+             PrivilegeSetLength:LPDWORD; GrantedAccess:LPDWORD; AccessStatus:LPBOOL):WINBOOL; *)
+
+  function OpenProcessToken(ProcessHandle:HANDLE; DesiredAccess:DWORD; TokenHandle:PHANDLE):WINBOOL;
+
+  function OpenThreadToken(ThreadHandle:HANDLE; DesiredAccess:DWORD; OpenAsSelf:WINBOOL; TokenHandle:PHANDLE):WINBOOL;
+
+  function GetTokenInformation(TokenHandle:HANDLE; TokenInformationClass:TOKEN_INFORMATION_CLASS; TokenInformation:LPVOID; TokenInformationLength:DWORD; ReturnLength:PDWORD):WINBOOL;
+
+  function SetTokenInformation(TokenHandle:HANDLE; TokenInformationClass:TOKEN_INFORMATION_CLASS; TokenInformation:LPVOID; TokenInformationLength:DWORD):WINBOOL;
+
+  function AdjustTokenPrivileges(TokenHandle:HANDLE; DisableAllPrivileges:WINBOOL; NewState:PTOKEN_PRIVILEGES; BufferLength:DWORD; PreviousState:PTOKEN_PRIVILEGES; 
+             ReturnLength:PDWORD):WINBOOL;
+
+  function AdjustTokenGroups(TokenHandle:HANDLE; ResetToDefault:WINBOOL; NewState:PTOKEN_GROUPS; BufferLength:DWORD; PreviousState:PTOKEN_GROUPS; 
+             ReturnLength:PDWORD):WINBOOL;
+
+  function PrivilegeCheck(ClientToken:HANDLE; RequiredPrivileges:PPRIVILEGE_SET; pfResult:LPBOOL):WINBOOL;
+
+  function IsValidSid(pSid:PSID):WINBOOL;
+
+  function EqualSid(pSid1:PSID; pSid2:PSID):WINBOOL;
+
+  function EqualPrefixSid(pSid1:PSID; pSid2:PSID):WINBOOL;
+
+  function GetSidLengthRequired(nSubAuthorityCount:UCHAR):DWORD;
+
+  function AllocateAndInitializeSid(pIdentifierAuthority:PSID_IDENTIFIER_AUTHORITY; nSubAuthorityCount:BYTE; nSubAuthority0:DWORD; nSubAuthority1:DWORD; nSubAuthority2:DWORD; 
+             nSubAuthority3:DWORD; nSubAuthority4:DWORD; nSubAuthority5:DWORD; nSubAuthority6:DWORD; nSubAuthority7:DWORD; 
+             var pSid:PSID):WINBOOL;
+
+  function FreeSid(pSid:PSID):PVOID;
+
+  function InitializeSid(Sid:PSID; pIdentifierAuthority:PSID_IDENTIFIER_AUTHORITY; nSubAuthorityCount:BYTE):WINBOOL;
+
+  function GetSidIdentifierAuthority(pSid:PSID):PSID_IDENTIFIER_AUTHORITY;
+
+  function GetSidSubAuthority(pSid:PSID; nSubAuthority:DWORD):PDWORD;
+
+  function GetSidSubAuthorityCount(pSid:PSID):PUCHAR;
+
+  function GetLengthSid(pSid:PSID):DWORD;
+
+  function CopySid(nDestinationSidLength:DWORD; pDestinationSid:PSID; pSourceSid:PSID):WINBOOL;
+
+  function AreAllAccessesGranted(GrantedAccess:DWORD; DesiredAccess:DWORD):WINBOOL;
+
+  function AreAnyAccessesGranted(GrantedAccess:DWORD; DesiredAccess:DWORD):WINBOOL;
+
+  procedure MapGenericMask(AccessMask:PDWORD; GenericMapping:PGENERIC_MAPPING);
+
+  function IsValidAcl(pAcl:PACL):WINBOOL;
+
+  function InitializeAcl(pAcl:PACL; nAclLength:DWORD; dwAclRevision:DWORD):WINBOOL;
+
+  function GetAclInformation(pAcl:PACL; pAclInformation:LPVOID; nAclInformationLength:DWORD; dwAclInformationClass:ACL_INFORMATION_CLASS):WINBOOL;
+
+  function SetAclInformation(pAcl:PACL; pAclInformation:LPVOID; nAclInformationLength:DWORD; dwAclInformationClass:ACL_INFORMATION_CLASS):WINBOOL;
+
+  function AddAce(pAcl:PACL; dwAceRevision:DWORD; dwStartingAceIndex:DWORD; pAceList:LPVOID; nAceListLength:DWORD):WINBOOL;
+
+  function DeleteAce(pAcl:PACL; dwAceIndex:DWORD):WINBOOL;
+
+  function GetAce(pAcl:PACL; dwAceIndex:DWORD; var pAce:LPVOID):WINBOOL;
+
+  function AddAccessAllowedAce(pAcl:PACL; dwAceRevision:DWORD; AccessMask:DWORD; pSid:PSID):WINBOOL;
+
+  function AddAccessDeniedAce(pAcl:PACL; dwAceRevision:DWORD; AccessMask:DWORD; pSid:PSID):WINBOOL;
+
+  function AddAuditAccessAce(pAcl:PACL; dwAceRevision:DWORD; dwAccessMask:DWORD; pSid:PSID; bAuditSuccess:WINBOOL; 
+             bAuditFailure:WINBOOL):WINBOOL;
+
+  function FindFirstFreeAce(pAcl:PACL; var pAce:LPVOID):WINBOOL;
+
+  function InitializeSecurityDescriptor(pSecurityDescriptor:PSECURITY_DESCRIPTOR; dwRevision:DWORD):WINBOOL;
+
+  function IsValidSecurityDescriptor(pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL;
+
+  function GetSecurityDescriptorLength(pSecurityDescriptor:PSECURITY_DESCRIPTOR):DWORD;
+
+  function GetSecurityDescriptorControl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; pControl:PSECURITY_DESCRIPTOR_CONTROL; lpdwRevision:LPDWORD):WINBOOL;
+
+  function SetSecurityDescriptorDacl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; bDaclPresent:WINBOOL; pDacl:PACL; bDaclDefaulted:WINBOOL):WINBOOL;
+
+  function GetSecurityDescriptorDacl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; lpbDaclPresent:LPBOOL; var pDacl:PACL; lpbDaclDefaulted:LPBOOL):WINBOOL;
+
+  function SetSecurityDescriptorSacl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; bSaclPresent:WINBOOL; pSacl:PACL; bSaclDefaulted:WINBOOL):WINBOOL;
+
+  function GetSecurityDescriptorSacl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; lpbSaclPresent:LPBOOL; var pSacl:PACL; lpbSaclDefaulted:LPBOOL):WINBOOL;
+
+  function SetSecurityDescriptorOwner(pSecurityDescriptor:PSECURITY_DESCRIPTOR; pOwner:PSID; bOwnerDefaulted:WINBOOL):WINBOOL;
+
+  function GetSecurityDescriptorOwner(pSecurityDescriptor:PSECURITY_DESCRIPTOR; var pOwner:PSID; lpbOwnerDefaulted:LPBOOL):WINBOOL;
+
+  function SetSecurityDescriptorGroup(pSecurityDescriptor:PSECURITY_DESCRIPTOR; pGroup:PSID; bGroupDefaulted:WINBOOL):WINBOOL;
+
+  function GetSecurityDescriptorGroup(pSecurityDescriptor:PSECURITY_DESCRIPTOR; var pGroup:PSID; lpbGroupDefaulted:LPBOOL):WINBOOL;
+
+  function CreatePrivateObjectSecurity(ParentDescriptor:PSECURITY_DESCRIPTOR; CreatorDescriptor:PSECURITY_DESCRIPTOR; var NewDescriptor:PSECURITY_DESCRIPTOR; IsDirectoryObject:WINBOOL; Token:HANDLE; 
+             GenericMapping:PGENERIC_MAPPING):WINBOOL;
+
+  function SetPrivateObjectSecurity(SecurityInformation:SECURITY_INFORMATION; ModificationDescriptor:PSECURITY_DESCRIPTOR; var ObjectsSecurityDescriptor:PSECURITY_DESCRIPTOR; GenericMapping:PGENERIC_MAPPING; Token:HANDLE):WINBOOL;
+
+  function GetPrivateObjectSecurity(ObjectDescriptor:PSECURITY_DESCRIPTOR; SecurityInformation:SECURITY_INFORMATION; ResultantDescriptor:PSECURITY_DESCRIPTOR; DescriptorLength:DWORD; ReturnLength:PDWORD):WINBOOL;
+
+  function DestroyPrivateObjectSecurity(var ObjectDescriptor:PSECURITY_DESCRIPTOR):WINBOOL;
+
+  function MakeSelfRelativeSD(pAbsoluteSecurityDescriptor:PSECURITY_DESCRIPTOR; pSelfRelativeSecurityDescriptor:PSECURITY_DESCRIPTOR; lpdwBufferLength:LPDWORD):WINBOOL;
+
+  function MakeAbsoluteSD(pSelfRelativeSecurityDescriptor:PSECURITY_DESCRIPTOR; pAbsoluteSecurityDescriptor:PSECURITY_DESCRIPTOR; lpdwAbsoluteSecurityDescriptorSize:LPDWORD; pDacl:PACL; lpdwDaclSize:LPDWORD; 
+             pSacl:PACL; lpdwSaclSize:LPDWORD; pOwner:PSID; lpdwOwnerSize:LPDWORD; pPrimaryGroup:PSID; 
+             lpdwPrimaryGroupSize:LPDWORD):WINBOOL;
+
+  function SetKernelObjectSecurity(Handle:HANDLE; SecurityInformation:SECURITY_INFORMATION; SecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL;
+
+  function FindNextChangeNotification(hChangeHandle:HANDLE):WINBOOL;
+
+  function FindCloseChangeNotification(hChangeHandle:HANDLE):WINBOOL;
+
+  function VirtualLock(lpAddress:LPVOID; dwSize:DWORD):WINBOOL;
+
+  function VirtualUnlock(lpAddress:LPVOID; dwSize:DWORD):WINBOOL;
+
+  function MapViewOfFileEx(hFileMappingObject:HANDLE; dwDesiredAccess:DWORD; dwFileOffsetHigh:DWORD; dwFileOffsetLow:DWORD; dwNumberOfBytesToMap:DWORD; 
+             lpBaseAddress:LPVOID):LPVOID;
+
+  function SetPriorityClass(hProcess:HANDLE; dwPriorityClass:DWORD):WINBOOL;
+
+  function GetPriorityClass(hProcess:HANDLE):DWORD;
+
+(* Const before type ignored *)
+  function IsBadReadPtr(lp:pointer; ucb:UINT):WINBOOL;
+
+  function IsBadWritePtr(lp:LPVOID; ucb:UINT):WINBOOL;
+
+(* Const before type ignored *)
+  function IsBadHugeReadPtr(lp:pointer; ucb:UINT):WINBOOL;
+
+  function IsBadHugeWritePtr(lp:LPVOID; ucb:UINT):WINBOOL;
+
+  function IsBadCodePtr(lpfn:FARPROC):WINBOOL;
+
+  function AllocateLocallyUniqueId(Luid:PLUID):WINBOOL;
+
+  function QueryPerformanceCounter(var lpPerformanceCount:LARGE_INTEGER):WINBOOL;
+
+  function QueryPerformanceFrequency(var lpFrequency:LARGE_INTEGER):WINBOOL;
+
+(* Const before type ignored *)
+{  procedure MoveMemory(Destination:PVOID; Source:pointer; Length:DWORD);
+
+  procedure FillMemory(Destination:PVOID; Length:DWORD; Fill:BYTE);
+
+  procedure ZeroMemory(Destination:PVOID; Length:DWORD);
+
+   The memory functions don't seem to be defined in the libraries, so
+     define macro versions as well.   }
+  { was #define dname(params) def_expr }
+  procedure MoveMemory(var t,s; c : longint);
+
+  { was #define dname(params) def_expr }
+  procedure FillMemory(var p;c,v : longint);
+
+  { was #define dname(params) def_expr }
+  procedure ZeroMemory(var p;c : longint);
+
+{$ifdef WIN95}
+
+  function ActivateKeyboardLayout(hkl:HKL; Flags:UINT):HKL;
+
+{$else}
+
+  function ActivateKeyboardLayout(hkl:HKL; Flags:UINT):WINBOOL;
+
+{$endif}
+  { WIN95  }
+
+  function ToUnicodeEx(wVirtKey:UINT; wScanCode:UINT; lpKeyState:PBYTE; pwszBuff:LPWSTR; cchBuff:longint; 
+             wFlags:UINT; dwhkl:HKL):longint;
+
+  function UnloadKeyboardLayout(hkl:HKL):WINBOOL;
+
+  function GetKeyboardLayoutList(nBuff:longint; var lpList:HKL):longint;
+
+  function GetKeyboardLayout(dwLayout:DWORD):HKL;
+
+  function OpenInputDesktop(dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK;
+
+  function EnumDesktopWindows(hDesktop:HDESK; lpfn:ENUMWINDOWSPROC; lParam:LPARAM):WINBOOL;
+
+  function SwitchDesktop(hDesktop:HDESK):WINBOOL;
+
+  function SetThreadDesktop(hDesktop:HDESK):WINBOOL;
+
+  function CloseDesktop(hDesktop:HDESK):WINBOOL;
+
+  function GetThreadDesktop(dwThreadId:DWORD):HDESK;
+
+  function CloseWindowStation(hWinSta:HWINSTA):WINBOOL;
+
+  function SetProcessWindowStation(hWinSta:HWINSTA):WINBOOL;
+
+  function GetProcessWindowStation:HWINSTA;
+
+  function SetUserObjectSecurity(hObj:HANDLE; pSIRequested:PSECURITY_INFORMATION; pSID:PSECURITY_DESCRIPTOR):WINBOOL;
+
+  function GetUserObjectSecurity(hObj:HANDLE; pSIRequested:PSECURITY_INFORMATION; pSID:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+  function TranslateMessage(var lpMsg:MSG):WINBOOL;
+
+  function SetMessageQueue(cMessagesMax:longint):WINBOOL;
+
+  function RegisterHotKey(hWnd:HWND; anID:longint; fsModifiers:UINT; vk:UINT):WINBOOL;
+
+  function UnregisterHotKey(hWnd:HWND; anID:longint):WINBOOL;
+
+  function ExitWindowsEx(uFlags:UINT; dwReserved:DWORD):WINBOOL;
+
+  function SwapMouseButton(fSwap:WINBOOL):WINBOOL;
+
+  function GetMessagePos:DWORD;
+
+  function GetMessageTime:LONG;
+
+  function GetMessageExtraInfo:LONG;
+
+  function SetMessageExtraInfo(lParam:LPARAM):LPARAM;
+
+  function BroadcastSystemMessage(_para1:DWORD; _para2:LPDWORD; _para3:UINT; _para4:WPARAM; _para5:LPARAM):longint;
+
+  function AttachThreadInput(idAttach:DWORD; idAttachTo:DWORD; fAttach:WINBOOL):WINBOOL;
+
+  function ReplyMessage(lResult:LRESULT):WINBOOL;
+
+  function WaitMessage:WINBOOL;
+
+  function WaitForInputIdle(hProcess:HANDLE; dwMilliseconds:DWORD):DWORD;
+
+  procedure PostQuitMessage(nExitCode:longint);
+
+  function InSendMessage:WINBOOL;
+
+  function GetDoubleClickTime:UINT;
+
+  function SetDoubleClickTime(_para1:UINT):WINBOOL;
+
+  function IsWindow(hWnd:HWND):WINBOOL;
+
+  function IsMenu(hMenu:HMENU):WINBOOL;
+
+  function IsChild(hWndParent:HWND; hWnd:HWND):WINBOOL;
+
+  function DestroyWindow(hWnd:HWND):WINBOOL;
+
+  function ShowWindow(hWnd:HWND; nCmdShow:longint):WINBOOL;
+
+  function ShowWindowAsync(hWnd:HWND; nCmdShow:longint):WINBOOL;
+
+  function FlashWindow(hWnd:HWND; bInvert:WINBOOL):WINBOOL;
+
+  function ShowOwnedPopups(hWnd:HWND; fShow:WINBOOL):WINBOOL;
+
+  function OpenIcon(hWnd:HWND):WINBOOL;
+
+  function CloseWindow(hWnd:HWND):WINBOOL;
+
+  function MoveWindow(hWnd:HWND; X:longint; Y:longint; nWidth:longint; nHeight:longint; 
+             bRepaint:WINBOOL):WINBOOL;
+
+  function SetWindowPos(hWnd:HWND; hWndInsertAfter:HWND; X:longint; Y:longint; cx:longint; 
+             cy:longint; uFlags:UINT):WINBOOL;
+
+  function GetWindowPlacement(hWnd:HWND; var lpwndpl:WINDOWPLACEMENT):WINBOOL;
+
+(* Const before type ignored *)
+  function SetWindowPlacement(hWnd:HWND; var lpwndpl:WINDOWPLACEMENT):WINBOOL;
+
+  function BeginDeferWindowPos(nNumWindows:longint):HDWP;
+
+  function DeferWindowPos(hWinPosInfo:HDWP; hWnd:HWND; hWndInsertAfter:HWND; x:longint; y:longint; 
+             cx:longint; cy:longint; uFlags:UINT):HDWP;
+
+  function EndDeferWindowPos(hWinPosInfo:HDWP):WINBOOL;
+
+  function IsWindowVisible(hWnd:HWND):WINBOOL;
+
+  function IsIconic(hWnd:HWND):WINBOOL;
+
+  function AnyPopup:WINBOOL;
+
+  function BringWindowToTop(hWnd:HWND):WINBOOL;
+
+  function IsZoomed(hWnd:HWND):WINBOOL;
+
+  function EndDialog(hDlg:HWND; nResult:longint):WINBOOL;
+
+  function GetDlgItem(hDlg:HWND; nIDDlgItem:longint):HWND;
+
+  function SetDlgItemInt(hDlg:HWND; nIDDlgItem:longint; uValue:UINT; bSigned:WINBOOL):WINBOOL;
+
+  function GetDlgItemInt(hDlg:HWND; nIDDlgItem:longint; var lpTranslated:WINBOOL; bSigned:WINBOOL):UINT;
+
+  function CheckDlgButton(hDlg:HWND; nIDButton:longint; uCheck:UINT):WINBOOL;
+
+  function CheckRadioButton(hDlg:HWND; nIDFirstButton:longint; nIDLastButton:longint; nIDCheckButton:longint):WINBOOL;
+
+  function IsDlgButtonChecked(hDlg:HWND; nIDButton:longint):UINT;
+
+  function GetNextDlgGroupItem(hDlg:HWND; hCtl:HWND; bPrevious:WINBOOL):HWND;
+
+  function GetNextDlgTabItem(hDlg:HWND; hCtl:HWND; bPrevious:WINBOOL):HWND;
+
+  function GetDlgCtrlID(hWnd:HWND):longint;
+
+  function GetDialogBaseUnits:longint;
+
+  function OpenClipboard(hWndNewOwner:HWND):WINBOOL;
+
+  function CloseClipboard:WINBOOL;
+
+  function GetClipboardOwner:HWND;
+
+  function SetClipboardViewer(hWndNewViewer:HWND):HWND;
+
+  function GetClipboardViewer:HWND;
+
+  function ChangeClipboardChain(hWndRemove:HWND; hWndNewNext:HWND):WINBOOL;
+
+  function SetClipboardData(uFormat:UINT; hMem:HANDLE):HANDLE;
+
+  function GetClipboardData(uFormat:UINT):HANDLE;
+
+  function CountClipboardFormats:longint;
+
+  function EnumClipboardFormats(format:UINT):UINT;
+
+  function EmptyClipboard:WINBOOL;
+
+  function IsClipboardFormatAvailable(format:UINT):WINBOOL;
+
+  function GetPriorityClipboardFormat(var paFormatPriorityList:UINT; cFormats:longint):longint;
+
+  function GetOpenClipboardWindow:HWND;
+
+  { Despite the A these are ASCII functions!  }
+  function CharNextExA(CodePage:WORD; lpCurrentChar:LPCSTR; dwFlags:DWORD):LPSTR;
+
+  function CharPrevExA(CodePage:WORD; lpStart:LPCSTR; lpCurrentChar:LPCSTR; dwFlags:DWORD):LPSTR;
+
+  function SetFocus(hWnd:HWND):HWND;
+
+  function GetActiveWindow:HWND;
+
+  function GetFocus:HWND;
+
+  function GetKBCodePage:UINT;
+
+  function GetKeyState(nVirtKey:longint):SHORT;
+
+  function GetAsyncKeyState(vKey:longint):SHORT;
+
+  function GetKeyboardState(lpKeyState:PBYTE):WINBOOL;
+
+  function SetKeyboardState(lpKeyState:LPBYTE):WINBOOL;
+
+  function GetKeyboardType(nTypeFlag:longint):longint;
+
+  function ToAscii(uVirtKey:UINT; uScanCode:UINT; lpKeyState:PBYTE; lpChar:LPWORD; uFlags:UINT):longint;
+
+  function ToAsciiEx(uVirtKey:UINT; uScanCode:UINT; lpKeyState:PBYTE; lpChar:LPWORD; uFlags:UINT; 
+             dwhkl:HKL):longint;
+
+  function ToUnicode(wVirtKey:UINT; wScanCode:UINT; lpKeyState:PBYTE; pwszBuff:LPWSTR; cchBuff:longint; 
+             wFlags:UINT):longint;
+
+  function OemKeyScan(wOemChar:WORD):DWORD;
+
+  procedure keybd_event(bVk:BYTE; bScan:BYTE; dwFlags:DWORD; dwExtraInfo:DWORD);
+
+  procedure mouse_event(dwFlags:DWORD; dx:DWORD; dy:DWORD; cButtons:DWORD; dwExtraInfo:DWORD);
+
+  function GetInputState:WINBOOL;
+
+  function GetQueueStatus(flags:UINT):DWORD;
+
+  function GetCapture:HWND;
+
+  function SetCapture(hWnd:HWND):HWND;
+
+  function ReleaseCapture:WINBOOL;
+
+  function MsgWaitForMultipleObjects(nCount:DWORD; pHandles:LPHANDLE; fWaitAll:WINBOOL; dwMilliseconds:DWORD; dwWakeMask:DWORD):DWORD;
+
+  function SetTimer(hWnd:HWND; nIDEvent:UINT; uElapse:UINT; lpTimerFunc:TIMERPROC):UINT;
+
+  function KillTimer(hWnd:HWND; uIDEvent:UINT):WINBOOL;
+
+  function IsWindowUnicode(hWnd:HWND):WINBOOL;
+
+  function EnableWindow(hWnd:HWND; bEnable:WINBOOL):WINBOOL;
+
+  function IsWindowEnabled(hWnd:HWND):WINBOOL;
+
+  function DestroyAcceleratorTable(hAccel:HACCEL):WINBOOL;
+
+  function GetSystemMetrics(nIndex:longint):longint;
+
+  function GetMenu(hWnd:HWND):HMENU;
+
+  function SetMenu(hWnd:HWND; hMenu:HMENU):WINBOOL;
+
+  function HiliteMenuItem(hWnd:HWND; hMenu:HMENU; uIDHiliteItem:UINT; uHilite:UINT):WINBOOL;
+
+  function GetMenuState(hMenu:HMENU; uId:UINT; uFlags:UINT):UINT;
+
+  function DrawMenuBar(hWnd:HWND):WINBOOL;
+
+  function GetSystemMenu(hWnd:HWND; bRevert:WINBOOL):HMENU;
+
+  function CreateMenu:HMENU;
+
+  function CreatePopupMenu:HMENU;
+
+  function DestroyMenu(hMenu:HMENU):WINBOOL;
+
+  function CheckMenuItem(hMenu:HMENU; uIDCheckItem:UINT; uCheck:UINT):DWORD;
+
+  function EnableMenuItem(hMenu:HMENU; uIDEnableItem:UINT; uEnable:UINT):WINBOOL;
+
+  function GetSubMenu(hMenu:HMENU; nPos:longint):HMENU;
+
+  function GetMenuItemID(hMenu:HMENU; nPos:longint):UINT;
+
+  function GetMenuItemCount(hMenu:HMENU):longint;
+
+  function RemoveMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT):WINBOOL;
+
+  function DeleteMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT):WINBOOL;
+
+  function SetMenuItemBitmaps(hMenu:HMENU; uPosition:UINT; uFlags:UINT; hBitmapUnchecked:HBITMAP; hBitmapChecked:HBITMAP):WINBOOL;
+
+  function GetMenuCheckMarkDimensions:LONG;
+
+(* Const before type ignored *)
+  function TrackPopupMenu(hMenu:HMENU; uFlags:UINT; x:longint; y:longint; nReserved:longint; 
+             hWnd:HWND; var prcRect:RECT):WINBOOL;
+
+  function GetMenuDefaultItem(hMenu:HMENU; fByPos:UINT; gmdiFlags:UINT):UINT;
+
+  function SetMenuDefaultItem(hMenu:HMENU; uItem:UINT; fByPos:UINT):WINBOOL;
+
+  function GetMenuItemRect(hWnd:HWND; hMenu:HMENU; uItem:UINT; lprcItem:LPRECT):WINBOOL;
+
+  function MenuItemFromPoint(hWnd:HWND; hMenu:HMENU; ptScreen:POINT):longint;
+
+  function DragObject(_para1:HWND; _para2:HWND; _para3:UINT; _para4:DWORD; _para5:HCURSOR):DWORD;
+
+  function DragDetect(hwnd:HWND; pt:POINT):WINBOOL;
+
+  function DrawIcon(hDC:HDC; X:longint; Y:longint; hIcon:HICON):WINBOOL;
+
+  function UpdateWindow(hWnd:HWND):WINBOOL;
+
+  function SetActiveWindow(hWnd:HWND):HWND;
+
+  function GetForegroundWindow:HWND;
+
+  function PaintDesktop(hdc:HDC):WINBOOL;
+
+  function SetForegroundWindow(hWnd:HWND):WINBOOL;
+
+  function WindowFromDC(hDC:HDC):HWND;
+
+  function GetDC(hWnd:HWND):HDC;
+
+  function GetDCEx(hWnd:HWND; hrgnClip:HRGN; flags:DWORD):HDC;
+
+  function GetWindowDC(hWnd:HWND):HDC;
+
+  function ReleaseDC(hWnd:HWND; hDC:HDC):longint;
+
+  function BeginPaint(hWnd:HWND; lpPaint:LPPAINTSTRUCT):HDC;
+
+(* Const before type ignored *)
+  function EndPaint(hWnd:HWND; var lpPaint:PAINTSTRUCT):WINBOOL;
+
+  function GetUpdateRect(hWnd:HWND; lpRect:LPRECT; bErase:WINBOOL):WINBOOL;
+
+  function GetUpdateRgn(hWnd:HWND; hRgn:HRGN; bErase:WINBOOL):longint;
+
+  function SetWindowRgn(hWnd:HWND; hRgn:HRGN; bRedraw:WINBOOL):longint;
+
+  function GetWindowRgn(hWnd:HWND; hRgn:HRGN):longint;
+
+  function ExcludeUpdateRgn(hDC:HDC; hWnd:HWND):longint;
+
+(* Const before type ignored *)
+  function InvalidateRect(hWnd:HWND; var lpRect:RECT; bErase:WINBOOL):WINBOOL;
+
+(* Const before type ignored *)
+  function ValidateRect(hWnd:HWND; var lpRect:RECT):WINBOOL;
+
+  function InvalidateRgn(hWnd:HWND; hRgn:HRGN; bErase:WINBOOL):WINBOOL;
+
+  function ValidateRgn(hWnd:HWND; hRgn:HRGN):WINBOOL;
+
+(* Const before type ignored *)
+  function RedrawWindow(hWnd:HWND; var lprcUpdate:RECT; hrgnUpdate:HRGN; flags:UINT):WINBOOL;
+
+  function LockWindowUpdate(hWndLock:HWND):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ScrollWindow(hWnd:HWND; XAmount:longint; YAmount:longint; var lpRect:RECT; var lpClipRect:RECT):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ScrollDC(hDC:HDC; dx:longint; dy:longint; var lprcScroll:RECT; var lprcClip:RECT; 
+             hrgnUpdate:HRGN; lprcUpdate:LPRECT):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ScrollWindowEx(hWnd:HWND; dx:longint; dy:longint; var prcScroll:RECT; var prcClip:RECT; 
+             hrgnUpdate:HRGN; prcUpdate:LPRECT; flags:UINT):longint;
+
+  function SetScrollPos(hWnd:HWND; nBar:longint; nPos:longint; bRedraw:WINBOOL):longint;
+
+  function GetScrollPos(hWnd:HWND; nBar:longint):longint;
+
+  function SetScrollRange(hWnd:HWND; nBar:longint; nMinPos:longint; nMaxPos:longint; bRedraw:WINBOOL):WINBOOL;
+
+  function GetScrollRange(hWnd:HWND; nBar:longint; lpMinPos:LPINT; lpMaxPos:LPINT):WINBOOL;
+
+  function ShowScrollBar(hWnd:HWND; wBar:longint; bShow:WINBOOL):WINBOOL;
+
+  function EnableScrollBar(hWnd:HWND; wSBflags:UINT; wArrows:UINT):WINBOOL;
+
+  function GetClientRect(hWnd:HWND; lpRect:LPRECT):WINBOOL;
+
+  function GetWindowRect(hWnd:HWND; lpRect:LPRECT):WINBOOL;
+
+  function AdjustWindowRect(lpRect:LPRECT; dwStyle:DWORD; bMenu:WINBOOL):WINBOOL;
+
+  function AdjustWindowRectEx(lpRect:LPRECT; dwStyle:DWORD; bMenu:WINBOOL; dwExStyle:DWORD):WINBOOL;
+
+  function SetWindowContextHelpId(_para1:HWND; _para2:DWORD):WINBOOL;
+
+  function GetWindowContextHelpId(_para1:HWND):DWORD;
+
+  function SetMenuContextHelpId(_para1:HMENU; _para2:DWORD):WINBOOL;
+
+  function GetMenuContextHelpId(_para1:HMENU):DWORD;
+
+  function MessageBeep(uType:UINT):WINBOOL;
+
+  function ShowCursor(bShow:WINBOOL):longint;
+
+  function SetCursorPos(X:longint; Y:longint):WINBOOL;
+
+  function SetCursor(hCursor:HCURSOR):HCURSOR;
+
+  function GetCursorPos(lpPoint:LPPOINT):WINBOOL;
+
+(* Const before type ignored *)
+  function ClipCursor(var lpRect:RECT):WINBOOL;
+
+  function GetClipCursor(lpRect:LPRECT):WINBOOL;
+
+  function GetCursor:HCURSOR;
+
+  function CreateCaret(hWnd:HWND; hBitmap:HBITMAP; nWidth:longint; nHeight:longint):WINBOOL;
+
+  function GetCaretBlinkTime:UINT;
+
+  function SetCaretBlinkTime(uMSeconds:UINT):WINBOOL;
+
+  function DestroyCaret:WINBOOL;
+
+  function HideCaret(hWnd:HWND):WINBOOL;
+
+  function ShowCaret(hWnd:HWND):WINBOOL;
+
+  function SetCaretPos(X:longint; Y:longint):WINBOOL;
+
+  function GetCaretPos(lpPoint:LPPOINT):WINBOOL;
+
+  function ClientToScreen(hWnd:HWND; lpPoint:LPPOINT):WINBOOL;
+
+  function ScreenToClient(hWnd:HWND; lpPoint:LPPOINT):WINBOOL;
+
+  function MapWindowPoints(hWndFrom:HWND; hWndTo:HWND; lpPoints:LPPOINT; cPoints:UINT):longint;
+
+  function WindowFromPoint(Point:POINT):HWND;
+
+  function ChildWindowFromPoint(hWndParent:HWND; Point:POINT):HWND;
+
+  function GetSysColor(nIndex:longint):DWORD;
+
+  function GetSysColorBrush(nIndex:longint):HBRUSH;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function SetSysColors(cElements:longint; var lpaElements:INT; var lpaRgbValues:COLORREF):WINBOOL;
+
+(* Const before type ignored *)
+  function DrawFocusRect(hDC:HDC; var lprc:RECT):WINBOOL;
+
+(* Const before type ignored *)
+  function FillRect(hDC:HDC; var lprc:RECT; hbr:HBRUSH):longint;
+
+(* Const before type ignored *)
+  function FrameRect(hDC:HDC; var lprc:RECT; hbr:HBRUSH):longint;
+
+(* Const before type ignored *)
+  function InvertRect(hDC:HDC; var lprc:RECT):WINBOOL;
+
+  function SetRect(lprc:LPRECT; xLeft:longint; yTop:longint; xRight:longint; yBottom:longint):WINBOOL;
+
+  function SetRectEmpty(lprc:LPRECT):WINBOOL;
+
+(* Const before type ignored *)
+  function CopyRect(lprcDst:LPRECT; var lprcSrc:RECT):WINBOOL;
+
+  function InflateRect(lprc:LPRECT; dx:longint; dy:longint):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function IntersectRect(lprcDst:LPRECT; var lprcSrc1:RECT; var lprcSrc2:RECT):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function UnionRect(lprcDst:LPRECT; var lprcSrc1:RECT; var lprcSrc2:RECT):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function SubtractRect(lprcDst:LPRECT; var lprcSrc1:RECT; var lprcSrc2:RECT):WINBOOL;
+
+  function OffsetRect(lprc:LPRECT; dx:longint; dy:longint):WINBOOL;
+
+(* Const before type ignored *)
+  function IsRectEmpty(var lprc:RECT):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function EqualRect(var lprc1:RECT; var lprc2:RECT):WINBOOL;
+
+(* Const before type ignored *)
+  function PtInRect(var lprc:RECT; pt:POINT):WINBOOL;
+
+  function GetWindowWord(hWnd:HWND; nIndex:longint):WORD;
+
+  function SetWindowWord(hWnd:HWND; nIndex:longint; wNewWord:WORD):WORD;
+
+  function GetClassWord(hWnd:HWND; nIndex:longint):WORD;
+
+  function SetClassWord(hWnd:HWND; nIndex:longint; wNewWord:WORD):WORD;
+
+  function GetDesktopWindow:HWND;
+
+  function GetParent(hWnd:HWND):HWND;
+
+  function SetParent(hWndChild:HWND; hWndNewParent:HWND):HWND;
+
+  function EnumChildWindows(hWndParent:HWND; lpEnumFunc:ENUMWINDOWSPROC; lParam:LPARAM):WINBOOL;
+
+  function EnumWindows(lpEnumFunc:ENUMWINDOWSPROC; lParam:LPARAM):WINBOOL;
+
+  function EnumThreadWindows(dwThreadId:DWORD; lpfn:ENUMWINDOWSPROC; lParam:LPARAM):WINBOOL;
+
+  function GetTopWindow(hWnd:HWND):HWND;
+
+  function GetWindowThreadProcessId(hWnd:HWND; lpdwProcessId:LPDWORD):DWORD;
+
+  function GetLastActivePopup(hWnd:HWND):HWND;
+
+  function GetWindow(hWnd:HWND; uCmd:UINT):HWND;
+
+  function UnhookWindowsHook(nCode:longint; pfnFilterProc:HOOKPROC):WINBOOL;
+
+  function UnhookWindowsHookEx(hhk:HHOOK):WINBOOL;
+
+  function CallNextHookEx(hhk:HHOOK; nCode:longint; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CheckMenuRadioItem(_para1:HMENU; _para2:UINT; _para3:UINT; _para4:UINT; _para5:UINT):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function CreateCursor(hInst:HINSTANCE; xHotSpot:longint; yHotSpot:longint; nWidth:longint; nHeight:longint; 
+             pvANDPlane:pointer; pvXORPlane:pointer):HCURSOR;
+
+  function DestroyCursor(hCursor:HCURSOR):WINBOOL;
+
+  function SetSystemCursor(hcur:HCURSOR; anID:DWORD):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function CreateIcon(hInstance:HINSTANCE; nWidth:longint; nHeight:longint; cPlanes:BYTE; cBitsPixel:BYTE; 
+             var lpbANDbits:BYTE; var lpbXORbits:BYTE):HICON;
+
+  function DestroyIcon(hIcon:HICON):WINBOOL;
+
+  function LookupIconIdFromDirectory(presbits:PBYTE; fIcon:WINBOOL):longint;
+
+  function LookupIconIdFromDirectoryEx(presbits:PBYTE; fIcon:WINBOOL; cxDesired:longint; cyDesired:longint; Flags:UINT):longint;
+
+  function CreateIconFromResource(presbits:PBYTE; dwResSize:DWORD; fIcon:WINBOOL; dwVer:DWORD):HICON;
+
+  function CreateIconFromResourceEx(presbits:PBYTE; dwResSize:DWORD; fIcon:WINBOOL; dwVer:DWORD; cxDesired:longint; 
+             cyDesired:longint; Flags:UINT):HICON;
+
+  function CopyImage(_para1:HANDLE; _para2:UINT; _para3:longint; _para4:longint; _para5:UINT):HICON;
+
+  function CreateIconIndirect(piconinfo:PICONINFO):HICON;
+
+  function CopyIcon(hIcon:HICON):HICON;
+
+  function GetIconInfo(hIcon:HICON; piconinfo:PICONINFO):WINBOOL;
+
+  function MapDialogRect(hDlg:HWND; lpRect:LPRECT):WINBOOL;
+
+  function SetScrollInfo(_para1:HWND; _para2:longint; _para3:LPCSCROLLINFO; _para4:WINBOOL):longint;
+
+  function GetScrollInfo(_para1:HWND; _para2:longint; _para3:LPSCROLLINFO):WINBOOL;
+
+  function TranslateMDISysAccel(hWndClient:HWND; lpMsg:LPMSG):WINBOOL;
+
+  function ArrangeIconicWindows(hWnd:HWND):UINT;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function TileWindows(hwndParent:HWND; wHow:UINT; var lpRect:RECT; cKids:UINT; var lpKids:HWND):WORD;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function CascadeWindows(hwndParent:HWND; wHow:UINT; var lpRect:RECT; cKids:UINT; var lpKids:HWND):WORD;
+
+  procedure SetLastErrorEx(dwErrCode:DWORD; dwType:DWORD);
+
+  procedure SetDebugErrorLevel(dwLevel:DWORD);
+
+  function DrawEdge(hdc:HDC; qrc:LPRECT; edge:UINT; grfFlags:UINT):WINBOOL;
+
+  function DrawFrameControl(_para1:HDC; _para2:LPRECT; _para3:UINT; _para4:UINT):WINBOOL;
+
+(* Const before type ignored *)
+  function DrawCaption(_para1:HWND; _para2:HDC; var _para3:RECT; _para4:UINT):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function DrawAnimatedRects(hwnd:HWND; idAni:longint; var lprcFrom:RECT; var lprcTo:RECT):WINBOOL;
+
+  function TrackPopupMenuEx(_para1:HMENU; _para2:UINT; _para3:longint; _para4:longint; _para5:HWND; 
+             _para6:LPTPMPARAMS):WINBOOL;
+
+  function ChildWindowFromPointEx(_para1:HWND; _para2:POINT; _para3:UINT):HWND;
+
+  function DrawIconEx(hdc:HDC; xLeft:longint; yTop:longint; hIcon:HICON; cxWidth:longint; 
+             cyWidth:longint; istepIfAniCur:UINT; hbrFlickerFreeDraw:HBRUSH; diFlags:UINT):WINBOOL;
+
+(* Const before type ignored *)
+  function AnimatePalette(_para1:HPALETTE; _para2:UINT; _para3:UINT; var _para4:PALETTEENTRY):WINBOOL;
+
+  function Arc(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint):WINBOOL;
+
+  function BitBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:HDC; _para7:longint; _para8:longint; _para9:DWORD):WINBOOL;
+
+  function CancelDC(_para1:HDC):WINBOOL;
+
+  function Chord(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint):WINBOOL;
+
+  function CloseMetaFile(_para1:HDC):HMETAFILE;
+
+  function CombineRgn(_para1:HRGN; _para2:HRGN; _para3:HRGN; _para4:longint):longint;
+
+(* Const before type ignored *)
+  function CreateBitmap(_para1:longint; _para2:longint; _para3:UINT; _para4:UINT; _para5:pointer):HBITMAP;
+
+(* Const before type ignored *)
+  function CreateBitmapIndirect(var _para1:BITMAP):HBITMAP;
+
+(* Const before type ignored *)
+  function CreateBrushIndirect(var _para1:LOGBRUSH):HBRUSH;
+
+  function CreateCompatibleBitmap(_para1:HDC; _para2:longint; _para3:longint):HBITMAP;
+
+  function CreateDiscardableBitmap(_para1:HDC; _para2:longint; _para3:longint):HBITMAP;
+
+  function CreateCompatibleDC(_para1:HDC):HDC;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function CreateDIBitmap(_para1:HDC; var _para2:BITMAPINFOHEADER; _para3:DWORD; _para4:pointer; var _para5:BITMAPINFO;
+             _para6:UINT):HBITMAP;
+
+  function CreateDIBPatternBrush(_para1:HGLOBAL; _para2:UINT):HBRUSH;
+
+(* Const before type ignored *)
+  function CreateDIBPatternBrushPt(_para1:pointer; _para2:UINT):HBRUSH;
+
+  function CreateEllipticRgn(_para1:longint; _para2:longint; _para3:longint; _para4:longint):HRGN;
+
+(* Const before type ignored *)
+  function CreateEllipticRgnIndirect(var _para1:RECT):HRGN;
+
+  function CreateHatchBrush(_para1:longint; _para2:COLORREF):HBRUSH;
+
+(* Const before type ignored *)
+  function CreatePalette(var _para1:LOGPALETTE):HPALETTE;
+
+  function CreatePen(_para1:longint; _para2:longint; _para3:COLORREF):HPEN;
+
+(* Const before type ignored *)
+  function CreatePenIndirect(var _para1:LOGPEN):HPEN;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function CreatePolyPolygonRgn(var _para1:POINT; var _para2:INT; _para3:longint; _para4:longint):HRGN;
+
+  function CreatePatternBrush(_para1:HBITMAP):HBRUSH;
+
+  function CreateRectRgn(_para1:longint; _para2:longint; _para3:longint; _para4:longint):HRGN;
+
+(* Const before type ignored *)
+  function CreateRectRgnIndirect(var _para1:RECT):HRGN;
+
+  function CreateRoundRectRgn(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint):HRGN;
+
+  function CreateSolidBrush(_para1:COLORREF):HBRUSH;
+
+  function DeleteDC(_para1:HDC):WINBOOL;
+
+  function DeleteMetaFile(_para1:HMETAFILE):WINBOOL;
+
+  function DeleteObject(_para1:HGDIOBJ):WINBOOL;
+
+  function DrawEscape(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR):longint;
+
+  function Ellipse(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint):WINBOOL;
+
+  function EnumObjects(_para1:HDC; _para2:longint; _para3:ENUMOBJECTSPROC; _para4:LPARAM):longint;
+
+  function EqualRgn(_para1:HRGN; _para2:HRGN):WINBOOL;
+
+  function Escape(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR; _para5:LPVOID):longint;
+
+  function ExtEscape(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR; _para5:longint; 
+             _para6:LPSTR):longint;
+
+  function ExcludeClipRect(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint):longint;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ExtCreateRegion(var _para1:XFORM; _para2:DWORD; var _para3:RGNDATA):HRGN;
+
+  function ExtFloodFill(_para1:HDC; _para2:longint; _para3:longint; _para4:COLORREF; _para5:UINT):WINBOOL;
+
+  function FillRgn(_para1:HDC; _para2:HRGN; _para3:HBRUSH):WINBOOL;
+
+  function FloodFill(_para1:HDC; _para2:longint; _para3:longint; _para4:COLORREF):WINBOOL;
+
+  function FrameRgn(_para1:HDC; _para2:HRGN; _para3:HBRUSH; _para4:longint; _para5:longint):WINBOOL;
+
+  function GetROP2(_para1:HDC):longint;
+
+  function GetAspectRatioFilterEx(_para1:HDC; _para2:LPSIZE):WINBOOL;
+
+  function GetBkColor(_para1:HDC):COLORREF;
+
+  function GetBkMode(_para1:HDC):longint;
+
+  function GetBitmapBits(_para1:HBITMAP; _para2:LONG; _para3:LPVOID):LONG;
+
+  function GetBitmapDimensionEx(_para1:HBITMAP; _para2:LPSIZE):WINBOOL;
+
+  function GetBoundsRect(_para1:HDC; _para2:LPRECT; _para3:UINT):UINT;
+
+  function GetBrushOrgEx(_para1:HDC; _para2:LPPOINT):WINBOOL;
+
+  function GetClipBox(_para1:HDC; _para2:LPRECT):longint;
+
+  function GetClipRgn(_para1:HDC; _para2:HRGN):longint;
+
+  function GetMetaRgn(_para1:HDC; _para2:HRGN):longint;
+
+  function GetCurrentObject(_para1:HDC; _para2:UINT):HGDIOBJ;
+
+  function GetCurrentPositionEx(_para1:HDC; _para2:LPPOINT):WINBOOL;
+
+  function GetDeviceCaps(_para1:HDC; _para2:longint):longint;
+
+  function GetDIBits(_para1:HDC; _para2:HBITMAP; _para3:UINT; _para4:UINT; _para5:LPVOID; 
+             _para6:LPBITMAPINFO; _para7:UINT):longint;
+
+  function GetFontData(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:LPVOID; _para5:DWORD):DWORD;
+
+  function GetGraphicsMode(_para1:HDC):longint;
+
+  function GetMapMode(_para1:HDC):longint;
+
+  function GetMetaFileBitsEx(_para1:HMETAFILE; _para2:UINT; _para3:LPVOID):UINT;
+
+  function GetNearestColor(_para1:HDC; _para2:COLORREF):COLORREF;
+
+  function GetNearestPaletteIndex(_para1:HPALETTE; _para2:COLORREF):UINT;
+
+  function GetObjectType(h:HGDIOBJ):DWORD;
+
+  function GetPaletteEntries(_para1:HPALETTE; _para2:UINT; _para3:UINT; _para4:LPPALETTEENTRY):UINT;
+
+  function GetPixel(_para1:HDC; _para2:longint; _para3:longint):COLORREF;
+
+  function GetPixelFormat(_para1:HDC):longint;
+
+  function GetPolyFillMode(_para1:HDC):longint;
+
+  function GetRasterizerCaps(_para1:LPRASTERIZER_STATUS; _para2:UINT):WINBOOL;
+
+  function GetRegionData(_para1:HRGN; _para2:DWORD; _para3:LPRGNDATA):DWORD;
+
+  function GetRgnBox(_para1:HRGN; _para2:LPRECT):longint;
+
+  function GetStockObject(_para1:longint):HGDIOBJ;
+
+  function GetStretchBltMode(_para1:HDC):longint;
+
+  function GetSystemPaletteEntries(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPPALETTEENTRY):UINT;
+
+  function GetSystemPaletteUse(_para1:HDC):UINT;
+
+  function GetTextCharacterExtra(_para1:HDC):longint;
+
+  function GetTextAlign(_para1:HDC):UINT;
+
+  function GetTextColor(_para1:HDC):COLORREF;
+
+  function GetTextCharset(hdc:HDC):longint;
+
+  function GetTextCharsetInfo(hdc:HDC; lpSig:LPFONTSIGNATURE; dwFlags:DWORD):longint;
+
+  function TranslateCharsetInfo(var lpSrc:DWORD; lpCs:LPCHARSETINFO; dwFlags:DWORD):WINBOOL;
+
+  function GetFontLanguageInfo(_para1:HDC):DWORD;
+
+  function GetViewportExtEx(_para1:HDC; _para2:LPSIZE):WINBOOL;
+
+  function GetViewportOrgEx(_para1:HDC; _para2:LPPOINT):WINBOOL;
+
+  function GetWindowExtEx(_para1:HDC; _para2:LPSIZE):WINBOOL;
+
+  function GetWindowOrgEx(_para1:HDC; _para2:LPPOINT):WINBOOL;
+
+  function IntersectClipRect(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint):longint;
+
+  function InvertRgn(_para1:HDC; _para2:HRGN):WINBOOL;
+
+  function LineDDA(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:LINEDDAPROC; 
+             _para6:LPARAM):WINBOOL;
+
+  function LineTo(_para1:HDC; _para2:longint; _para3:longint):WINBOOL;
+
+  function MaskBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:HDC; _para7:longint; _para8:longint; _para9:HBITMAP; _para10:longint; 
+             _para11:longint; _para12:DWORD):WINBOOL;
+
+(* Const before type ignored *)
+  function PlgBlt(_para1:HDC; var _para2:POINT; _para3:HDC; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:HBITMAP; _para9:longint; _para10:longint):WINBOOL;
+
+  function OffsetClipRgn(_para1:HDC; _para2:longint; _para3:longint):longint;
+
+  function OffsetRgn(_para1:HRGN; _para2:longint; _para3:longint):longint;
+
+  function PatBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD):WINBOOL;
+
+  function Pie(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint):WINBOOL;
+
+  function PlayMetaFile(_para1:HDC; _para2:HMETAFILE):WINBOOL;
+
+  function PaintRgn(_para1:HDC; _para2:HRGN):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function PolyPolygon(_para1:HDC; var _para2:POINT; var _para3:INT; _para4:longint):WINBOOL;
+
+  function PtInRegion(_para1:HRGN; _para2:longint; _para3:longint):WINBOOL;
+
+  function PtVisible(_para1:HDC; _para2:longint; _para3:longint):WINBOOL;
+
+(* Const before type ignored *)
+  function RectInRegion(_para1:HRGN; var _para2:RECT):WINBOOL;
+
+(* Const before type ignored *)
+  function RectVisible(_para1:HDC; var _para2:RECT):WINBOOL;
+
+  function Rectangle(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint):WINBOOL;
+
+  function RestoreDC(_para1:HDC; _para2:longint):WINBOOL;
+
+  function RealizePalette(_para1:HDC):UINT;
+
+  function RoundRect(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint):WINBOOL;
+
+  function ResizePalette(_para1:HPALETTE; _para2:UINT):WINBOOL;
+
+  function SaveDC(_para1:HDC):longint;
+
+  function SelectClipRgn(_para1:HDC; _para2:HRGN):longint;
+
+  function ExtSelectClipRgn(_para1:HDC; _para2:HRGN; _para3:longint):longint;
+
+  function SetMetaRgn(_para1:HDC):longint;
+
+  function SelectObject(_para1:HDC; _para2:HGDIOBJ):HGDIOBJ;
+
+  function SelectPalette(_para1:HDC; _para2:HPALETTE; _para3:WINBOOL):HPALETTE;
+
+  function SetBkColor(_para1:HDC; _para2:COLORREF):COLORREF;
+
+  function SetBkMode(_para1:HDC; _para2:longint):longint;
+
+(* Const before type ignored *)
+  function SetBitmapBits(_para1:HBITMAP; _para2:DWORD; _para3:pointer):LONG;
+
+(* Const before type ignored *)
+  function SetBoundsRect(_para1:HDC; var _para2:RECT; _para3:UINT):UINT;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function SetDIBits(_para1:HDC; _para2:HBITMAP; _para3:UINT; _para4:UINT; _para5:pointer;
+             var _para6:BITMAPINFO; _para7:UINT):longint;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function SetDIBitsToDevice(_para1:HDC; _para2:longint; _para3:longint; _para4:DWORD; _para5:DWORD; 
+             _para6:longint; _para7:longint; _para8:UINT; _para9:UINT; _para10:pointer;
+             var _para11:BITMAPINFO; _para12:UINT):longint;
+
+  function SetMapperFlags(_para1:HDC; _para2:DWORD):DWORD;
+
+  function SetGraphicsMode(hdc:HDC; iMode:longint):longint;
+
+  function SetMapMode(_para1:HDC; _para2:longint):longint;
+
+(* Const before type ignored *)
+  function SetMetaFileBitsEx(_para1:UINT; var _para2:BYTE):HMETAFILE;
+
+(* Const before type ignored *)
+  function SetPaletteEntries(_para1:HPALETTE; _para2:UINT; _para3:UINT; var _para4:PALETTEENTRY):UINT;
+
+  function SetPixel(_para1:HDC; _para2:longint; _para3:longint; _para4:COLORREF):COLORREF;
+
+  function SetPixelV(_para1:HDC; _para2:longint; _para3:longint; _para4:COLORREF):WINBOOL;
+
+  function SetPolyFillMode(_para1:HDC; _para2:longint):longint;
+
+  function StretchBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:HDC; _para7:longint; _para8:longint; _para9:longint; _para10:longint; 
+             _para11:DWORD):WINBOOL;
+
+  function SetRectRgn(_para1:HRGN; _para2:longint; _para3:longint; _para4:longint; _para5:longint):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function StretchDIBits(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:pointer;
+             var _para11:BITMAPINFO; _para12:UINT; _para13:DWORD):longint;
+
+  function SetROP2(_para1:HDC; _para2:longint):longint;
+
+  function SetStretchBltMode(_para1:HDC; _para2:longint):longint;
+
+  function SetSystemPaletteUse(_para1:HDC; _para2:UINT):UINT;
+
+  function SetTextCharacterExtra(_para1:HDC; _para2:longint):longint;
+
+  function SetTextColor(_para1:HDC; _para2:COLORREF):COLORREF;
+
+  function SetTextAlign(_para1:HDC; _para2:UINT):UINT;
+
+  function SetTextJustification(_para1:HDC; _para2:longint; _para3:longint):WINBOOL;
+
+  function UpdateColors(_para1:HDC):WINBOOL;
+
+  function PlayMetaFileRecord(_para1:HDC; _para2:LPHANDLETABLE; _para3:LPMETARECORD; _para4:UINT):WINBOOL;
+
+  function EnumMetaFile(_para1:HDC; _para2:HMETAFILE; _para3:ENUMMETAFILEPROC; _para4:LPARAM):WINBOOL;
+
+  function CloseEnhMetaFile(_para1:HDC):HENHMETAFILE;
+
+  function DeleteEnhMetaFile(_para1:HENHMETAFILE):WINBOOL;
+
+(* Const before type ignored *)
+  function EnumEnhMetaFile(_para1:HDC; _para2:HENHMETAFILE; _para3:ENHMETAFILEPROC; _para4:LPVOID; var _para5:RECT):WINBOOL;
+
+  function GetEnhMetaFileHeader(_para1:HENHMETAFILE; _para2:UINT; _para3:LPENHMETAHEADER):UINT;
+
+  function GetEnhMetaFilePaletteEntries(_para1:HENHMETAFILE; _para2:UINT; _para3:LPPALETTEENTRY):UINT;
+
+  function GetWinMetaFileBits(_para1:HENHMETAFILE; _para2:UINT; _para3:LPBYTE; _para4:INT; _para5:HDC):UINT;
+
+(* Const before type ignored *)
+  function PlayEnhMetaFile(_para1:HDC; _para2:HENHMETAFILE; var _para3:RECT):WINBOOL;
+
+(* Const before type ignored *)
+  function PlayEnhMetaFileRecord(_para1:HDC; _para2:LPHANDLETABLE; var _para3:ENHMETARECORD; _para4:UINT):WINBOOL;
+
+(* Const before type ignored *)
+  function SetEnhMetaFileBits(_para1:UINT; var _para2:BYTE):HENHMETAFILE;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function SetWinMetaFileBits(_para1:UINT; var _para2:BYTE; _para3:HDC; var _para4:METAFILEPICT):HENHMETAFILE;
+
+(* Const before type ignored *)
+  function GdiComment(_para1:HDC; _para2:UINT; var _para3:BYTE):WINBOOL;
+
+  function AngleArc(_para1:HDC; _para2:longint; _para3:longint; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function PolyPolyline(_para1:HDC; var _para2:POINT; var _para3:DWORD; _para4:DWORD):WINBOOL;
+
+  function GetWorldTransform(_para1:HDC; _para2:LPXFORM):WINBOOL;
+
+(* Const before type ignored *)
+  function SetWorldTransform(_para1:HDC; var _para2:XFORM):WINBOOL;
+
+(* Const before type ignored *)
+  function ModifyWorldTransform(_para1:HDC; var _para2:XFORM; _para3:DWORD):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function CombineTransform(_para1:LPXFORM; var _para2:XFORM; var _para3:XFORM):WINBOOL;
+
+(* Const before type ignored *)
+  function CreateDIBSection(_para1:HDC; var _para2:BITMAPINFO; _para3:UINT; var _para4:pointer; _para5:HANDLE; 
+             _para6:DWORD):HBITMAP;
+
+  function GetDIBColorTable(_para1:HDC; _para2:UINT; _para3:UINT; var _para4:RGBQUAD):UINT;
+
+(* Const before type ignored *)
+  function SetDIBColorTable(_para1:HDC; _para2:UINT; _para3:UINT; var _para4:RGBQUAD):UINT;
+
+(* Const before type ignored *)
+  function SetColorAdjustment(_para1:HDC; var _para2:COLORADJUSTMENT):WINBOOL;
+
+  function GetColorAdjustment(_para1:HDC; _para2:LPCOLORADJUSTMENT):WINBOOL;
+
+  function CreateHalftonePalette(_para1:HDC):HPALETTE;
+
+  function EndDoc(_para1:HDC):longint;
+
+  function StartPage(_para1:HDC):longint;
+
+  function EndPage(_para1:HDC):longint;
+
+(*  function AbortDoc(_para1:HDC):longint; already above *)
+
+  function SetAbortProc(_para1:HDC; _para2:TABORTPROC):longint;
+
+(*  function AbortPath(_para1:HDC):WINBOOL; already above *)
+
+  function ArcTo(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint):WINBOOL;
+
+  function BeginPath(_para1:HDC):WINBOOL;
+
+  function CloseFigure(_para1:HDC):WINBOOL;
+
+  function EndPath(_para1:HDC):WINBOOL;
+
+  function FillPath(_para1:HDC):WINBOOL;
+
+  function FlattenPath(_para1:HDC):WINBOOL;
+
+  function GetPath(_para1:HDC; _para2:LPPOINT; _para3:LPBYTE; _para4:longint):longint;
+
+  function PathToRegion(_para1:HDC):HRGN;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function PolyDraw(_para1:HDC; var _para2:POINT; var _para3:BYTE; _para4:longint):WINBOOL;
+
+  function SelectClipPath(_para1:HDC; _para2:longint):WINBOOL;
+
+  function SetArcDirection(_para1:HDC; _para2:longint):longint;
+
+  function SetMiterLimit(_para1:HDC; _para2:FLOAT; _para3:PFLOAT):WINBOOL;
+
+  function StrokeAndFillPath(_para1:HDC):WINBOOL;
+
+  function StrokePath(_para1:HDC):WINBOOL;
+
+  function WidenPath(_para1:HDC):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ExtCreatePen(_para1:DWORD; _para2:DWORD; var _para3:LOGBRUSH; _para4:DWORD; var _para5:DWORD):HPEN;
+
+  function GetMiterLimit(_para1:HDC; _para2:PFLOAT):WINBOOL;
+
+  function GetArcDirection(_para1:HDC):longint;
+
+  function MoveToEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL;
+
+(* Const before type ignored *)
+  function CreatePolygonRgn(var _para1:POINT; _para2:longint; _para3:longint):HRGN;
+
+  function DPtoLP(_para1:HDC; _para2:LPPOINT; _para3:longint):WINBOOL;
+
+  function LPtoDP(_para1:HDC; _para2:LPPOINT; _para3:longint):WINBOOL;
+
+(* Const before type ignored *)
+  function Polygon(_para1:HDC; var _para2:POINT; _para3:longint):WINBOOL;
+
+(* Const before type ignored *)
+  function Polyline(_para1:HDC; var _para2:POINT; _para3:longint):WINBOOL;
+
+(* Const before type ignored *)
+  function PolyBezier(_para1:HDC; var _para2:POINT; _para3:DWORD):WINBOOL;
+
+(* Const before type ignored *)
+  function PolyBezierTo(_para1:HDC; var _para2:POINT; _para3:DWORD):WINBOOL;
+
+(* Const before type ignored *)
+  function PolylineTo(_para1:HDC; var _para2:POINT; _para3:DWORD):WINBOOL;
+
+  function SetViewportExtEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function SetViewportOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL;
+
+  function SetWindowExtEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function SetWindowOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL;
+
+  function OffsetViewportOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL;
+
+  function OffsetWindowOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL;
+
+  function ScaleViewportExtEx(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:LPSIZE):WINBOOL;
+
+  function ScaleWindowExtEx(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:LPSIZE):WINBOOL;
+
+  function SetBitmapDimensionEx(_para1:HBITMAP; _para2:longint; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function SetBrushOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL;
+
+  function GetDCOrgEx(_para1:HDC; _para2:LPPOINT):WINBOOL;
+
+  function FixBrushOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL;
+
+  function UnrealizeObject(_para1:HGDIOBJ):WINBOOL;
+
+  function GdiFlush:WINBOOL;
+
+  function GdiSetBatchLimit(_para1:DWORD):DWORD;
+
+  function GdiGetBatchLimit:DWORD;
+
+  function SetICMMode(_para1:HDC; _para2:longint):longint;
+
+  function CheckColorsInGamut(_para1:HDC; _para2:LPVOID; _para3:LPVOID; _para4:DWORD):WINBOOL;
+
+  function GetColorSpace(_para1:HDC):HANDLE;
+
+  function SetColorSpace(_para1:HDC; _para2:HCOLORSPACE):WINBOOL;
+
+  function DeleteColorSpace(_para1:HCOLORSPACE):WINBOOL;
+
+  function GetDeviceGammaRamp(_para1:HDC; _para2:LPVOID):WINBOOL;
+
+  function SetDeviceGammaRamp(_para1:HDC; _para2:LPVOID):WINBOOL;
+
+  function ColorMatchToTarget(_para1:HDC; _para2:HDC; _para3:DWORD):WINBOOL;
+
+  function CreatePropertySheetPageA(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE;
+
+  function DestroyPropertySheetPage(hPSPage:HPROPSHEETPAGE):WINBOOL;
+
+  procedure InitCommonControls;
+
+  { was #define dname(params) def_expr }
+  function ImageList_AddIcon(himl:HIMAGELIST; hicon:HICON):longint;
+
+  function ImageList_Create(cx:longint; cy:longint; flags:UINT; cInitial:longint; cGrow:longint):HIMAGELIST;
+
+  function ImageList_Destroy(himl:HIMAGELIST):WINBOOL;
+
+  function ImageList_GetImageCount(himl:HIMAGELIST):longint;
+
+  function ImageList_Add(himl:HIMAGELIST; hbmImage:HBITMAP; hbmMask:HBITMAP):longint;
+
+  function ImageList_ReplaceIcon(himl:HIMAGELIST; i:longint; hicon:HICON):longint;
+
+  function ImageList_SetBkColor(himl:HIMAGELIST; clrBk:COLORREF):COLORREF;
+
+  function ImageList_GetBkColor(himl:HIMAGELIST):COLORREF;
+
+  function ImageList_SetOverlayImage(himl:HIMAGELIST; iImage:longint; iOverlay:longint):WINBOOL;
+
+  function ImageList_Draw(himl:HIMAGELIST; i:longint; hdcDst:HDC; x:longint; y:longint; 
+             fStyle:UINT):WINBOOL;
+
+  function ImageList_Replace(himl:HIMAGELIST; i:longint; hbmImage:HBITMAP; hbmMask:HBITMAP):WINBOOL;
+
+  function ImageList_AddMasked(himl:HIMAGELIST; hbmImage:HBITMAP; crMask:COLORREF):longint;
+
+  function ImageList_DrawEx(himl:HIMAGELIST; i:longint; hdcDst:HDC; x:longint; y:longint; 
+             dx:longint; dy:longint; rgbBk:COLORREF; rgbFg:COLORREF; fStyle:UINT):WINBOOL;
+
+  function ImageList_Remove(himl:HIMAGELIST; i:longint):WINBOOL;
+
+  function ImageList_GetIcon(himl:HIMAGELIST; i:longint; flags:UINT):HICON;
+
+  function ImageList_BeginDrag(himlTrack:HIMAGELIST; iTrack:longint; dxHotspot:longint; dyHotspot:longint):WINBOOL;
+
+  procedure ImageList_EndDrag;
+
+  function ImageList_DragEnter(hwndLock:HWND; x:longint; y:longint):WINBOOL;
+
+  function ImageList_DragLeave(hwndLock:HWND):WINBOOL;
+
+  function ImageList_DragMove(x:longint; y:longint):WINBOOL;
+
+  function ImageList_SetDragCursorImage(himlDrag:HIMAGELIST; iDrag:longint; dxHotspot:longint; dyHotspot:longint):WINBOOL;
+
+  function ImageList_DragShowNolock(fShow:WINBOOL):WINBOOL;
+
+  function ImageList_GetDragImage(var ppt:POINT; var pptHotspot:POINT):HIMAGELIST;
+
+  function ImageList_GetIconSize(himl:HIMAGELIST; var cx:longint; var cy:longint):WINBOOL;
+
+  function ImageList_SetIconSize(himl:HIMAGELIST; cx:longint; cy:longint):WINBOOL;
+
+  function ImageList_GetImageInfo(himl:HIMAGELIST; i:longint; var pImageInfo:IMAGEINFO):WINBOOL;
+
+  function ImageList_Merge(himl1:HIMAGELIST; i1:longint; himl2:HIMAGELIST; i2:longint; dx:longint; 
+             dy:longint):HIMAGELIST;
+
+  function CreateToolbarEx(hwnd:HWND; ws:DWORD; wID:UINT; nBitmaps:longint; hBMInst:HINSTANCE; 
+             wBMID:UINT; lpButtons:LPCTBBUTTON; iNumButtons:longint; dxButton:longint; dyButton:longint; 
+             dxBitmap:longint; dyBitmap:longint; uStructSize:UINT):HWND;
+
+  function CreateMappedBitmap(hInstance:HINSTANCE; idBitmap:longint; wFlags:UINT; lpColorMap:LPCOLORMAP; iNumMaps:longint):HBITMAP;
+
+  procedure MenuHelp(uMsg:UINT; wParam:WPARAM; lParam:LPARAM; hMainMenu:HMENU; hInst:HINSTANCE; 
+              hwndStatus:HWND; var lpwIDs:UINT);
+
+  function ShowHideMenuCtl(hWnd:HWND; uFlags:UINT; lpInfo:LPINT):WINBOOL;
+
+  procedure GetEffectiveClientRect(hWnd:HWND; lprc:LPRECT; lpInfo:LPINT);
+
+  function MakeDragList(hLB:HWND):WINBOOL;
+
+  procedure DrawInsert(handParent:HWND; hLB:HWND; nItem:longint);
+
+  function LBItemFromPt(hLB:HWND; pt:POINT; bAutoScroll:WINBOOL):longint;
+
+  function CreateUpDownControl(dwStyle:DWORD; x:longint; y:longint; cx:longint; cy:longint; 
+             hParent:HWND; nID:longint; hInst:HINSTANCE; hBuddy:HWND; nUpper:longint; 
+             nLower:longint; nPos:longint):HWND;
+
+  function CommDlgExtendedError:DWORD;
+
+  { Animation controls  }
+  { was #define dname(params) def_expr }
+  function Animate_Create(hWndP:HWND; id:HMENU;dwStyle:DWORD;hInstance:HINSTANCE):HWND;
+
+  { was #define dname(params) def_expr }
+  function Animate_Open(hwnd : HWND;szName : LPTSTR) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function Animate_Play(hwnd : HWND;from,_to : longint;rep : UINT) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function Animate_Stop(hwnd : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function Animate_Close(hwnd : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function Animate_Seek(hwnd : HWND;frame : longint) : LRESULT;
+
+  { Property sheet macros  }
+  { was #define dname(params) def_expr }
+  function PropSheet_AddPage(hPropSheetDlg : HWND;hpage : HPROPSHEETPAGE) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_Apply(hPropSheetDlg : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_CancelToClose(hPropSheetDlg : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_Changed(hPropSheetDlg,hwndPage : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_GetCurrentPageHwnd(hDlg : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_GetTabControl(hPropSheetDlg : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_IsDialogMessage(hDlg : HWND;pMsg : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_PressButton(hPropSheetDlg : HWND;iButton : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_QuerySiblings(hPropSheetDlg : HWND;param1,param2 : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_RebootSystem(hPropSheetDlg : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_RemovePage(hPropSheetDlg : HWND;hpage : HPROPSHEETPAGE; index : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_RestartWindows(hPropSheetDlg : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetCurSel(hPropSheetDlg : HWND;hpage : HPROPSHEETPAGE; index : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetCurSelByID(hPropSheetDlg : HWND; id : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetFinishText(hPropSheetDlg:HWND;lpszText : LPTSTR) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetTitle(hPropSheetDlg:HWND;dwStyle:DWORD;lpszText : LPCTSTR) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetWizButtons(hPropSheetDlg:HWND;dwFlags : DWORD) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_UnChanged(hPropSheetDlg:HWND;hwndPage : HWND) : LRESULT;
+
+  { Header control  }
+  { was #define dname(params) def_expr }
+  function Header_DeleteItem(hwndHD:HWND;index : longint) : WINBOOL;
+
+  (* far ignored *)
+  { was #define dname(params) def_expr }
+  function Header_GetItem(hwndHD:HWND;index:longint;var hdi : HD_ITEM) : WINBOOL;
+
+  { was #define dname(params) def_expr }
+  function Header_GetItemCount(hwndHD : HWND) : longint;
+
+(* Const before type ignored *)
+  (* far ignored *)
+  { was #define dname(params) def_expr }
+  function Header_InsertItem(hwndHD:HWND;index : longint;var hdi : HD_ITEM) : longint;
+
+  (* far ignored *)
+  { was #define dname(params) def_expr }
+  function Header_Layout(hwndHD:HWND;var layout : HD_LAYOUT) : WINBOOL;
+
+(* Const before type ignored *)
+  (* far ignored *)
+  { was #define dname(params) def_expr }
+  function Header_SetItem(hwndHD:HWND;index : longint;var hdi : HD_ITEM) : WINBOOL;
+
+  { List View  }
+  { was #define dname(params) def_expr }
+  function ListView_Arrange(hwndLV:HWND;code : UINT) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_CreateDragImage(hwnd:HWND;i : longint;lpptUpLeft : LPPOINT) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_DeleteAllItems(hwnd : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_DeleteColumn(hwnd:HWND;iCol : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_DeleteItem(hwnd:HWND;iItem : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_EditLabel(hwndLV:HWND;i : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_EnsureVisible(hwndLV:HWND;i,fPartialOK : longint) : LRESULT;
+
+(* Const before type ignored *)
+  { was #define dname(params) def_expr }
+  function ListView_FindItem(hwnd:HWND;iStart : longint;var lvfi : LV_FINDINFO) : longint;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetBkColor(hwnd : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetCallbackMask(hwnd : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetColumn(hwnd:HWND;iCol : longint;var col : LV_COLUMN) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetColumnWidth(hwnd:HWND;iCol : longint) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetCountPerPage(hwndLV : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetEditControl(hwndLV : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetImageList(hwnd:HWND;iImageList : INT) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetISearchString(hwndLV:HWND;lpsz : LPTSTR) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetItem(hwnd:HWND;var item : LV_ITEM) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetItemCount(hwnd : HWND) : LRESULT;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetItemPosition(hwndLV:HWND;i : longint;var pt : POINT) : longint;
+
+{ error
+#define ListView_GetItemRect(hwnd, i, prc, code) \
+SendMessage(hwnd, LVM_GETITEMRECT, (WPARAM)(int)i, \
+           ((prc) ? (((RECT *)(prc))->left = (code), \
+		     (LPARAM)(RECT *)(prc)) : (LPARAM)(RECT *)NULL))
+in define line 6717 }
+    { was #define dname(params) def_expr }
+    function ListView_GetItemSpacing(hwndLV:HWND;fSmall : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetItemState(hwndLV:HWND;i,mask : longint) : LRESULT;
+
+{ error
+#define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_) \
+{ LV_ITEM _gnu_lvi;\
+  _gnu_lvi.iSubItem = iSubItem_;\
+  _gnu_lvi.cchTextMax = cchTextMax_;\
+  _gnu_lvi.pszText = pszText_;\
+  SendMessage((hwndLV), LVM_GETITEMTEXT, (WPARAM)i, \
+	      (LPARAM)(LV_ITEM *)&_gnu_lvi);\
+}
+in declaration at line 6725 }
+
+{  this one was scratched by the error above
+#define ListView_GetNextItem(hwnd, iStart, flags) \
+SendMessage(hwnd, LVM_GETNEXTITEM, (WPARAM)(int)iStart, (LPARAM)flags)
+inserted manually PM }
+  function ListView_GetNextItem(hwnd:HWND; iStart, flags : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetOrigin(hwndLV:HWND;var pt : POINT) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetSelectedCount(hwndLV : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetStringWidth(hwndLV:HWND;psz : LPCTSTR) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetTextBkColor(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetTextColor(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetTopIndex(hwndLV : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetViewRect(hwnd:HWND;var rc : RECT) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_HitTest(hwndLV:HWND;var info : LV_HITTESTINFO) : LRESULT;
+
+(* Const before type ignored *)
+    { was #define dname(params) def_expr }
+    function ListView_InsertColumn(hwnd:HWND;iCol : longint;var col : LV_COLUMN) : LRESULT;
+
+(* Const before type ignored *)
+    { was #define dname(params) def_expr }
+    function ListView_InsertItem(hwnd:HWND;var item : LV_ITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_RedrawItems(hwndLV:HWND;iFirst,iLast : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_Scroll(hwndLV:HWND;dx,dy : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetBkColor(hwnd:HWND;clrBk : COLORREF) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetCallbackMask(hwnd:HWND;mask : UINT) : LRESULT;
+
+(* Const before type ignored *)
+    { was #define dname(params) def_expr }
+    function ListView_SetColumn(hwnd:HWND;iCol : longint; var col : LV_COLUMN) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetColumnWidth(hwnd:HWND;iCol,cx : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetImageList(hwnd:HWND;himl : longint;iImageList : HIMAGELIST) : LRESULT;
+
+(* Const before type ignored *)
+    { was #define dname(params) def_expr }
+    function ListView_SetItem(hwnd:HWND;var item : LV_ITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetItemCount(hwndLV:HWND;cItems : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetItemPosition(hwndLV:HWND;i,x,y : longint) : LRESULT;
+
+(* error 
+	    MAKELPARAM((x), (y)))
+
+in declaration at line 6803 *)
+(* error 
+#define ListView_SetItemPosition32(hwndLV, i, x, y) \
+{ POINT ptNewPos = {x,y}; \
+    SendMessage((hwndLV), LVM_SETITEMPOSITION32, (WPARAM)(int)(i), \
+		(LPARAM)&ptNewPos); \
+}
+ inserted by hand PM *)
+    { was #define dname(params) def_expr }
+    function ListView_SetItemPosition32(hwndLV:HWND;i,x,y : longint) : LRESULT;
+
+(* error
+#define ListView_SetItemState(hwndLV, i, data, mask) \
+{ LV_ITEM _gnu_lvi;\
+  _gnu_lvi.stateMask = mask;\
+  _gnu_lvi.state = data;\
+  SendMessage((hwndLV), LVM_SETITEMSTATE, (WPARAM)i, \
+	      (LPARAM)(LV_ITEM * )&_gnu_lvi);\
+}
+in declaration at line 6817
+ error *)
+    function ListView_SetItemState(hwndLV:HWND; i, data, mask:longint) : LRESULT;
+
+(* error
+#define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_) \
+{ LV_ITEM _gnu_lvi;\
+  _gnu_lvi.iSubItem = iSubItem_;\
+  _gnu_lvi.pszText = pszText_;\
+  SendMessage((hwndLV), LVM_SETITEMTEXT, (WPARAM)i, \
+	      (LPARAM)(LV_ITEM * )&_gnu_lvi);\
+}
+in define line 6826 *)
+    function ListView_SetItemText(hwndLV:HWND; i, iSubItem_:longint;pszText_ : LPTSTR) : LRESULT;
+
+    { also eaten by errors !! }
+    function ListView_SetTextBkColor(hwnd:HWND;clrTextBk : COLORREF) : LRESULT;
+    
+    { was #define dname(params) def_expr }
+    function ListView_SetTextColor(hwnd:HWND;clrText : COLORREF) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_SortItems(hwndLV:HWND;_pfnCompare:PFNLVCOMPARE;_lPrm : LPARAM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function ListView_Update(hwndLV:HWND;i : longint) : LRESULT;
+
+    { Tree View  }
+    { was #define dname(params) def_expr }
+    function TreeView_InsertItem(hwnd:HWND;lpis : LPTV_INSERTSTRUCT) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_DeleteItem(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_DeleteAllItems(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_Expand(hwnd:HWND;hitem:HTREEITEM;code : longint) : LRESULT;
+
+(* error 
+SendMessage((hwnd), TVM_EXPAND, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
+
+in define line 6852 *)
+    { was #define dname(params) def_expr }
+    function TreeView_GetCount(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetIndent(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SetIndent(hwnd:HWND;indent : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetImageList(hwnd:HWND;iImage : WPARAM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SetImageList(hwnd:HWND;himl:HIMAGELIST;iImage : WPARAM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetNextItem(hwnd:HWND;hitem:HTREEITEM;code : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetChild(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetNextSibling(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetPrevSibling(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetParent(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetFirstVisible(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetNextVisible(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetPrevVisible(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetSelection(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetDropHilight(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetRoot(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_Select(hwnd:HWND;hitem:HTREEITEM;code : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SelectItem(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SelectDropTarget(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SelectSetFirstVisible(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetItem(hwnd:HWND;var item : TV_ITEM) : LRESULT;
+
+(* Const before type ignored *)
+    { was #define dname(params) def_expr }
+    function TreeView_SetItem(hwnd:HWND;var item : TV_ITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_EditLabel(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetEditControl(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetVisibleCount(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_HitTest(hwnd:HWND;lpht : LPTV_HITTESTINFO) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_CreateDragImage(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SortChildren(hwnd:HWND;hitem:HTREEITEM;recurse : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_EnsureVisible(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SortChildrenCB(hwnd:HWND;psort:LPTV_SORTCB;recurse : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_EndEditLabelNow(hwnd:HWND;fCancel : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetISearchString(hwndTV:HWND;lpsz : LPTSTR) : LRESULT;
+
+    { Tab control  }
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetImageList(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetImageList(hwnd:HWND;himl : HIMAGELIST) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetItemCount(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetItem(hwnd:HWND;iItem : longint;var item : TC_ITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetItem(hwnd:HWND;iItem : longint;var item : TC_ITEM) : LRESULT;
+
+(* Const before type ignored *)
+    { was #define dname(params) def_expr }
+    function TabCtrl_InsertItem(hwnd:HWND;iItem : longint;var item : TC_ITEM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_DeleteItem(hwnd:HWND;i : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_DeleteAllItems(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetItemRect(hwnd:HWND;i : longint;var rc : RECT) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetCurSel(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetCurSel(hwnd:HWND;i : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_HitTest(hwndTC:HWND;var info : TC_HITTESTINFO) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetItemExtra(hwndTC:HWND;cb : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_AdjustRect(hwnd:HWND;bLarger:WINBOOL;var rc : RECT) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetItemSize(hwnd:HWND;x,y : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_RemoveImage(hwnd:HWND;i : WPARAM) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetPadding(hwnd:HWND;cx,cy : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetRowCount(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetToolTips(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetToolTips(hwnd:HWND;hwndTT : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetCurFocus(hwnd : HWND) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetCurFocus(hwnd:HWND;i : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetSpecA(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetSpecW(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+
+{$ifndef Unicode}
+    function CommDlg_OpenSave_GetSpec(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+{$else Unicode}
+    function CommDlg_OpenSave_GetSpec(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+{$endif Unicode}
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFilePathA(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFilePathW(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+
+{$ifndef Unicode}
+    function CommDlg_OpenSave_GetFilePath(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+{$else Unicode}
+    function CommDlg_OpenSave_GetFilePath(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+{$endif Unicode}
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFolderPathA(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFolderPathW(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+
+{$ifndef Unicode}
+    function CommDlg_OpenSave_GetFolderPath(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+{$else Unicode}
+    function CommDlg_OpenSave_GetFolderPath(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+{$endif Unicode}
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFolderIDList(_hdlg:HWND;_pidl:LPVOID;_cbmax : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_SetControlText(_hdlg:HWND;_id : longint;_text : LPSTR) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_HideControl(_hdlg:HWND;_id : longint) : LRESULT;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_SetDefExt(_hdlg:HWND;_pszext : LPSTR) : LRESULT;
+
+    function RegCloseKey(hKey:HKEY):LONG;
+
+    function RegSetKeySecurity(hKey:HKEY; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):LONG;
+
+    function RegFlushKey(hKey:HKEY):LONG;
+
+    function RegGetKeySecurity(hKey:HKEY; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; lpcbSecurityDescriptor:LPDWORD):LONG;
+
+    function RegNotifyChangeKeyValue(hKey:HKEY; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD; hEvent:HANDLE; fAsynchronus:WINBOOL):LONG;
+
+    function IsValidCodePage(CodePage:UINT):WINBOOL;
+
+    function GetACP:UINT;
+
+    function GetOEMCP:UINT;
+
+    function GetCPInfo(_para1:UINT; _para2:LPCPINFO):WINBOOL;
+
+    function IsDBCSLeadByte(TestChar:BYTE):WINBOOL;
+
+    function IsDBCSLeadByteEx(CodePage:UINT; TestChar:BYTE):WINBOOL;
+
+    function MultiByteToWideChar(CodePage:UINT; dwFlags:DWORD; lpMultiByteStr:LPCSTR; cchMultiByte:longint; lpWideCharStr:LPWSTR; 
+               cchWideChar:longint):longint;
+
+    function WideCharToMultiByte(CodePage:UINT; dwFlags:DWORD; lpWideCharStr:LPCWSTR; cchWideChar:longint; lpMultiByteStr:LPSTR; 
+               cchMultiByte:longint; lpDefaultChar:LPCSTR; lpUsedDefaultChar:LPBOOL):longint;
+
+    function IsValidLocale(Locale:LCID; dwFlags:DWORD):WINBOOL;
+
+    function ConvertDefaultLocale(Locale:LCID):LCID;
+
+    function GetThreadLocale:LCID;
+
+    function SetThreadLocale(Locale:LCID):WINBOOL;
+
+    function GetSystemDefaultLangID:LANGID;
+
+    function GetUserDefaultLangID:LANGID;
+
+    function GetSystemDefaultLCID:LCID;
+
+    function GetUserDefaultLCID:LCID;
+
+    function ReadConsoleOutputAttribute(hConsoleOutput:HANDLE; lpAttribute:LPWORD; nLength:DWORD; dwReadCoord:COORD; lpNumberOfAttrsRead:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+    function WriteConsoleOutputAttribute(hConsoleOutput:HANDLE; var lpAttribute:WORD; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfAttrsWritten:LPDWORD):WINBOOL;
+
+    function FillConsoleOutputAttribute(hConsoleOutput:HANDLE; wAttribute:WORD; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfAttrsWritten:LPDWORD):WINBOOL;
+
+    function GetConsoleMode(hConsoleHandle:HANDLE; lpMode:LPDWORD):WINBOOL;
+
+    function GetNumberOfConsoleInputEvents(hConsoleInput:HANDLE; lpNumberOfEvents:LPDWORD):WINBOOL;
+
+    function GetConsoleScreenBufferInfo(hConsoleOutput:HANDLE; lpConsoleScreenBufferInfo:PCONSOLE_SCREEN_BUFFER_INFO):WINBOOL;
+
+    function GetLargestConsoleWindowSize(hConsoleOutput:HANDLE):COORD;
+
+    function GetConsoleCursorInfo(hConsoleOutput:HANDLE; lpConsoleCursorInfo:PCONSOLE_CURSOR_INFO):WINBOOL;
+
+    function GetNumberOfConsoleMouseButtons(lpNumberOfMouseButtons:LPDWORD):WINBOOL;
+
+    function SetConsoleMode(hConsoleHandle:HANDLE; dwMode:DWORD):WINBOOL;
+
+    function SetConsoleActiveScreenBuffer(hConsoleOutput:HANDLE):WINBOOL;
+
+    function FlushConsoleInputBuffer(hConsoleInput:HANDLE):WINBOOL;
+
+    function SetConsoleScreenBufferSize(hConsoleOutput:HANDLE; dwSize:COORD):WINBOOL;
+
+    function SetConsoleCursorPosition(hConsoleOutput:HANDLE; dwCursorPosition:COORD):WINBOOL;
+
+(* Const before type ignored *)
+    function SetConsoleCursorInfo(hConsoleOutput:HANDLE; var lpConsoleCursorInfo:CONSOLE_CURSOR_INFO):WINBOOL;
+
+(* Const before type ignored *)
+    function SetConsoleWindowInfo(hConsoleOutput:HANDLE; bAbsolute:WINBOOL; var lpConsoleWindow:SMALL_RECT):WINBOOL;
+
+    function SetConsoleTextAttribute(hConsoleOutput:HANDLE; wAttributes:WORD):WINBOOL;
+
+    function SetConsoleCtrlHandler(HandlerRoutine:PHANDLER_ROUTINE; Add:WINBOOL):WINBOOL;
+
+    function GenerateConsoleCtrlEvent(dwCtrlEvent:DWORD; dwProcessGroupId:DWORD):WINBOOL;
+
+    function AllocConsole:WINBOOL;
+
+    function FreeConsole:WINBOOL;
+
+(* Const before type ignored *)
+    function CreateConsoleScreenBuffer(dwDesiredAccess:DWORD; dwShareMode:DWORD; var lpSecurityAttributes:SECURITY_ATTRIBUTES; dwFlags:DWORD; lpScreenBufferData:LPVOID):HANDLE;
+
+    function GetConsoleCP:UINT;
+
+    function SetConsoleCP(wCodePageID:UINT):WINBOOL;
+
+    function GetConsoleOutputCP:UINT;
+
+    function SetConsoleOutputCP(wCodePageID:UINT):WINBOOL;
+
+    function WNetConnectionDialog(hwnd:HWND; dwType:DWORD):DWORD;
+
+    function WNetDisconnectDialog(hwnd:HWND; dwType:DWORD):DWORD;
+
+    function WNetCloseEnum(hEnum:HANDLE):DWORD;
+
+    function CloseServiceHandle(hSCObject:SC_HANDLE):WINBOOL;
+
+    function ControlService(hService:SC_HANDLE; dwControl:DWORD; lpServiceStatus:LPSERVICE_STATUS):WINBOOL;
+
+    function DeleteService(hService:SC_HANDLE):WINBOOL;
+
+    function LockServiceDatabase(hSCManager:SC_HANDLE):SC_LOCK;
+
+    function NotifyBootConfigStatus(BootAcceptable:WINBOOL):WINBOOL;
+
+    function QueryServiceObjectSecurity(hService:SC_HANDLE; dwSecurityInformation:SECURITY_INFORMATION; lpSecurityDescriptor:PSECURITY_DESCRIPTOR; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+
+    function QueryServiceStatus(hService:SC_HANDLE; lpServiceStatus:LPSERVICE_STATUS):WINBOOL;
+
+    function SetServiceObjectSecurity(hService:SC_HANDLE; dwSecurityInformation:SECURITY_INFORMATION; lpSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL;
+
+    function SetServiceStatus(hServiceStatus:SERVICE_STATUS_HANDLE; lpServiceStatus:LPSERVICE_STATUS):WINBOOL;
+
+    function UnlockServiceDatabase(ScLock:SC_LOCK):WINBOOL;
+
+    { Extensions to OpenGL  }
+(* Const before type ignored *)
+    function ChoosePixelFormat(_para1:HDC; var _para2:PIXELFORMATDESCRIPTOR):longint;
+
+    function DescribePixelFormat(_para1:HDC; _para2:longint; _para3:UINT; _para4:LPPIXELFORMATDESCRIPTOR):longint;
+
+(* Const before type ignored *)
+    function GetEnhMetaFilePixelFormat(_para1:HENHMETAFILE; _para2:DWORD; var _para3:PIXELFORMATDESCRIPTOR):UINT;
+
+{    function GetPixelFormat(_para1:HDC):longint; already above }
+
+(* Const before type ignored *)
+    function SetPixelFormat(_para1:HDC; _para2:longint; var _para3:PIXELFORMATDESCRIPTOR):WINBOOL;
+
+    function SwapBuffers(_para1:HDC):WINBOOL;
+
+    function wglCreateContext(_para1:HDC):HGLRC;
+
+    function wglCreateLayerContext(_para1:HDC; _para2:longint):HGLRC;
+
+    function wglCopyContext(_para1:HGLRC; _para2:HGLRC; _para3:UINT):WINBOOL;
+
+    function wglDeleteContext(_para1:HGLRC):WINBOOL;
+
+    function wglDescribeLayerPlane(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; _para5:LPLAYERPLANEDESCRIPTOR):WINBOOL;
+
+    function wglGetCurrentContext:HGLRC;
+
+    function wglGetCurrentDC:HDC;
+
+(* Const before type ignored *)
+    function wglGetLayerPaletteEntries(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; var _para5:COLORREF):longint;
+
+    function wglGetProcAddress(_para1:LPCSTR):PROC;
+
+    function wglMakeCurrent(_para1:HDC; _para2:HGLRC):WINBOOL;
+
+    function wglRealizeLayerPalette(_para1:HDC; _para2:longint; _para3:WINBOOL):WINBOOL;
+
+(* Const before type ignored *)
+    function wglSetLayerPaletteEntries(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; var _para5:COLORREF):longint;
+
+    function wglShareLists(_para1:HGLRC; _para2:HGLRC):WINBOOL;
+
+    function wglSwapLayerBuffers(_para1:HDC; _para2:UINT):WINBOOL;
+
+    {
+      Why are these different between ANSI and UNICODE?
+      There doesn't seem to be any difference.
+       }
+(*{$ifdef UNICODE}
+
+    const
+       wglUseFontBitmaps = wglUseFontBitmapsW;
+       wglUseFontOutlines = wglUseFontOutlinesW;
+{$else}
+
+    const
+       wglUseFontBitmaps = wglUseFontBitmapsA;
+       wglUseFontOutlines = wglUseFontOutlinesA;
+{$endif}
+    { !UNICODE  } *)
+    { -------------------------------------  }
+    { From shellapi.h in old Cygnus headers  }
+
+    function DragQueryPoint(_para1:HDROP; _para2:LPPOINT):WINBOOL;
+
+    procedure DragFinish(_para1:HDROP);
+
+    procedure DragAcceptFiles(_para1:HWND; _para2:WINBOOL);
+
+    function DuplicateIcon(_para1:HINSTANCE; _para2:HICON):HICON;
+
+    { end of stuff from shellapi.h in old Cygnus headers  }
+    { --------------------------------------------------  }
+    { From ddeml.h in old Cygnus headers  }
+    function DdeConnect(_para1:DWORD; _para2:HSZ; _para3:HSZ; var _para4:CONVCONTEXT):HCONV;
+
+    function DdeDisconnect(_para1:HCONV):WINBOOL;
+
+    function DdeFreeDataHandle(_para1:HDDEDATA):WINBOOL;
+
+    function DdeGetData(_para1:HDDEDATA; var _para2:BYTE; _para3:DWORD; _para4:DWORD):DWORD;
+
+    function DdeGetLastError(_para1:DWORD):UINT;
+
+    function DdeNameService(_para1:DWORD; _para2:HSZ; _para3:HSZ; _para4:UINT):HDDEDATA;
+
+    function DdePostAdvise(_para1:DWORD; _para2:HSZ; _para3:HSZ):WINBOOL;
+
+    function DdeReconnect(_para1:HCONV):HCONV;
+
+    function DdeUninitialize(_para1:DWORD):WINBOOL;
+
+    function DdeCmpStringHandles(_para1:HSZ; _para2:HSZ):longint;
+
+    function DdeCreateDataHandle(_para1:DWORD; _para2:LPBYTE; _para3:DWORD; _para4:DWORD; _para5:HSZ; 
+               _para6:UINT; _para7:UINT):HDDEDATA;
+
+    { end of stuff from ddeml.h in old Cygnus headers  }
+    { -----------------------------------------------  }
+    function NetUserEnum(_para1:LPWSTR; _para2:DWORD; _para3:DWORD; var _para4:LPBYTE; _para5:DWORD; 
+               _para6:LPDWORD; _para7:LPDWORD; _para8:LPDWORD):DWORD;
+
+    function NetApiBufferFree(_para1:LPVOID):DWORD;
+
+    function NetUserGetInfo(_para1:LPWSTR; _para2:LPWSTR; _para3:DWORD; _para4:LPBYTE):DWORD;
+
+    function NetGetDCName(_para1:LPWSTR; _para2:LPWSTR; var _para3:LPBYTE):DWORD;
+
+    function NetGroupEnum(_para1:LPWSTR; _para2:DWORD; var _para3:LPBYTE; _para4:DWORD; _para5:LPDWORD; 
+               _para6:LPDWORD; _para7:LPDWORD):DWORD;
+
+    function NetLocalGroupEnum(_para1:LPWSTR; _para2:DWORD; var _para3:LPBYTE; _para4:DWORD; _para5:LPDWORD; 
+               _para6:LPDWORD; _para7:LPDWORD):DWORD;
+
+    procedure SHAddToRecentDocs(_para1:UINT; _para2:LPCVOID);
+
+    function SHBrowseForFolder(_para1:LPBROWSEINFO):LPITEMIDLIST;
+
+    procedure SHChangeNotify(_para1:LONG; _para2:UINT; _para3:LPCVOID; _para4:LPCVOID);
+
+    function SHFileOperation(_para1:LPSHFILEOPSTRUCT):longint;
+
+    procedure SHFreeNameMappings(_para1:HANDLE);
+
+    { Define when SHELLFOLDER is defined.
+    HRESULT WINAPI
+    SHGetDataFromIDList (LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int);
+    
+    HRESULT WINAPI
+    SHGetDesktopFolder (LPSHELLFOLDER);
+     }
+    (* far ignored *)
+    function SHGetFileInfo(_para1:LPCTSTR; _para2:DWORD; var _para3:SHFILEINFO; _para4:UINT; _para5:UINT):DWORD;
+
+    { Define when IUnknown is defined.
+    HRESULT WINAPI
+    SHGetInstanceExplorer (IUnknown   );
+     }
+    { Define when MALLOC is defined.
+    HRESULT WINAPI
+    SHGetMalloc (LPMALLOC  );
+     }
+    function SHGetPathFromIDList(_para1:LPCITEMIDLIST; _para2:LPTSTR):WINBOOL;
+
+    function SHGetSpecialFolderLocation(_para1:HWND; _para2:longint; var _para3:LPITEMIDLIST):HRESULT;
+
+    { Define when REFCLSID is defined.
+    HRESULT WINAPI
+    SHLoadInProc (REFCLSID);
+     }
+{ C++ end of extern C conditionnal removed }
+    { __cplusplus  }
+{$endif}
+    { _GNU_H_WINDOWS32_FUNCTIONS  }
+
+{$endif read_interface}
+
+{$ifndef windows_include_files}
+  implementation
+
+    const External_library='kernel32'; {Setup as you need!}
+
+{$endif not windows_include_files}
+
+{$ifdef read_implementation}
+
+  function AbnormalTermination:WINBOOL; external External_library name 'AbnormalTermination';
+
+(*  function AbortDoc(_para1:HDC):longint; external External_library name 'AbortDoc';*)
+
+  function AbortPath(_para1:HDC):WINBOOL; external External_library name 'AbortPath';
+
+  function AbortPrinter(_para1:HANDLE):WINBOOL; external External_library name 'AbortPrinter';
+
+  function AbortProc(_para1:HDC; _para2:longint):WINBOOL; external External_library name 'AbortProc';
+
+{$ifndef windows_include_files}
+  function AbortSystemShutdown(_para1:LPTSTR):WINBOOL; external External_library name 'AbortSystemShutdown';
+{$endif windows_include_files}
+
+  function AccessCheck(pSecurityDescriptor:PSECURITY_DESCRIPTOR; ClientToken:HANDLE; DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; PrivilegeSet:PPRIVILEGE_SET; 
+             PrivilegeSetLength:LPDWORD; GrantedAccess:LPDWORD; AccessStatus:LPBOOL):WINBOOL; external External_library name 'AccessCheck';
+
+{$ifndef windows_include_files}
+  function AccessCheckAndAuditAlarm(SubsystemName:LPCTSTR; HandleId:LPVOID; ObjectTypeName:LPTSTR; ObjectName:LPTSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL; external External_library name 'AccessCheckAndAuditAlarm';
+{$endif windows_include_files}
+
+  function InterlockedIncrement(lpAddend:LPLONG):LONG; external External_library name 'InterlockedIncrement';
+
+  function InterlockedDecrement(lpAddend:LPLONG):LONG; external External_library name 'InterlockedDecrement';
+
+  function InterlockedExchange(Target:LPLONG; Value:LONG):LONG; external External_library name 'InterlockedExchange';
+
+  function FreeResource(hResData:HGLOBAL):WINBOOL; external External_library name 'FreeResource';
+
+  function LockResource(hResData:HGLOBAL):LPVOID; external External_library name 'LockResource';
+
+  function WinMain(hInstance:HINSTANCE; hPrevInstance:HINSTANCE; lpCmdLine:LPSTR; nShowCmd:longint):longint; external External_library name 'WinMain';
+
+  function FreeLibrary(hLibModule:HINSTANCE):WINBOOL; external External_library name 'FreeLibrary';
+
+  procedure FreeLibraryAndExitThread(hLibModule:HMODULE; dwExitCode:DWORD); external External_library name 'FreeLibraryAndExitThread';
+
+  function DisableThreadLibraryCalls(hLibModule:HMODULE):WINBOOL; external External_library name 'DisableThreadLibraryCalls';
+
+  function GetProcAddress(hModule:HINSTANCE; lpProcName:LPCSTR):FARPROC; external External_library name 'GetProcAddress';
+
+  function GetVersion:DWORD; external External_library name 'GetVersion';
+
+  function GlobalAlloc(uFlags:UINT; dwBytes:DWORD):HGLOBAL; external External_library name 'GlobalAlloc';
+
+  function GlobalDiscard(hglbMem:HGLOBAL):HGLOBAL;CDECL; external External_library name 'GlobalDiscard';
+
+  function GlobalReAlloc(hMem:HGLOBAL; dwBytes:DWORD; uFlags:UINT):HGLOBAL; external External_library name 'GlobalReAlloc';
+
+  function GlobalSize(hMem:HGLOBAL):DWORD; external External_library name 'GlobalSize';
+
+  function GlobalFlags(hMem:HGLOBAL):UINT; external External_library name 'GlobalFlags';
+
+  function GlobalLock(hMem:HGLOBAL):LPVOID; external External_library name 'GlobalLock';
+
+  function GlobalHandle(pMem:LPCVOID):HGLOBAL; external External_library name 'GlobalHandle';
+
+  function GlobalUnlock(hMem:HGLOBAL):WINBOOL; external External_library name 'GlobalUnlock';
+
+  function GlobalFree(hMem:HGLOBAL):HGLOBAL; external External_library name 'GlobalFree';
+
+  function GlobalCompact(dwMinFree:DWORD):UINT; external External_library name 'GlobalCompact';
+
+  procedure GlobalFix(hMem:HGLOBAL); external External_library name 'GlobalFix';
+
+  procedure GlobalUnfix(hMem:HGLOBAL); external External_library name 'GlobalUnfix';
+
+  function GlobalWire(hMem:HGLOBAL):LPVOID; external External_library name 'GlobalWire';
+
+  function GlobalUnWire(hMem:HGLOBAL):WINBOOL; external External_library name 'GlobalUnWire';
+
+  procedure GlobalMemoryStatus(lpBuffer:LPMEMORYSTATUS); external External_library name 'GlobalMemoryStatus';
+
+  function LocalAlloc(uFlags:UINT; uBytes:UINT):HLOCAL; external External_library name 'LocalAlloc';
+
+  function LocalDiscard(hlocMem:HLOCAL):HLOCAL;CDECL; external External_library name 'LocalDiscard';
+
+  function LocalReAlloc(hMem:HLOCAL; uBytes:UINT; uFlags:UINT):HLOCAL; external External_library name 'LocalReAlloc';
+
+  function LocalLock(hMem:HLOCAL):LPVOID; external External_library name 'LocalLock';
+
+  function LocalHandle(pMem:LPCVOID):HLOCAL; external External_library name 'LocalHandle';
+
+  function LocalUnlock(hMem:HLOCAL):WINBOOL; external External_library name 'LocalUnlock';
+
+  function LocalSize(hMem:HLOCAL):UINT; external External_library name 'LocalSize';
+
+  function LocalFlags(hMem:HLOCAL):UINT; external External_library name 'LocalFlags';
+
+  function LocalFree(hMem:HLOCAL):HLOCAL; external External_library name 'LocalFree';
+
+  function LocalShrink(hMem:HLOCAL; cbNewSize:UINT):UINT; external External_library name 'LocalShrink';
+
+  function LocalCompact(uMinFree:UINT):UINT; external External_library name 'LocalCompact';
+
+  function FlushInstructionCache(hProcess:HANDLE; lpBaseAddress:LPCVOID; dwSize:DWORD):WINBOOL; external External_library name 'FlushInstructionCache';
+
+  function VirtualAlloc(lpAddress:LPVOID; dwSize:DWORD; flAllocationType:DWORD; flProtect:DWORD):LPVOID; external External_library name 'VirtualAlloc';
+
+  function VirtualFree(lpAddress:LPVOID; dwSize:DWORD; dwFreeType:DWORD):WINBOOL; external External_library name 'VirtualFree';
+
+  function VirtualProtect(lpAddress:LPVOID; dwSize:DWORD; flNewProtect:DWORD; lpflOldProtect:PDWORD):WINBOOL; external External_library name 'VirtualProtect';
+
+  function VirtualQuery(lpAddress:LPCVOID; lpBuffer:PMEMORY_BASIC_INFORMATION; dwLength:DWORD):DWORD; external External_library name 'VirtualQuery';
+
+  function VirtualProtectEx(hProcess:HANDLE; lpAddress:LPVOID; dwSize:DWORD; flNewProtect:DWORD; lpflOldProtect:PDWORD):WINBOOL; external External_library name 'VirtualProtectEx';
+
+  function VirtualQueryEx(hProcess:HANDLE; lpAddress:LPCVOID; lpBuffer:PMEMORY_BASIC_INFORMATION; dwLength:DWORD):DWORD; external External_library name 'VirtualQueryEx';
+
+  function HeapCreate(flOptions:DWORD; dwInitialSize:DWORD; dwMaximumSize:DWORD):HANDLE; external External_library name 'HeapCreate';
+
+  function HeapDestroy(hHeap:HANDLE):WINBOOL; external External_library name 'HeapDestroy';
+
+  function HeapAlloc(hHeap:HANDLE; dwFlags:DWORD; dwBytes:DWORD):LPVOID; external External_library name 'HeapAlloc';
+
+  function HeapReAlloc(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPVOID; dwBytes:DWORD):LPVOID; external External_library name 'HeapReAlloc';
+
+  function HeapFree(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPVOID):WINBOOL; external External_library name 'HeapFree';
+
+  function HeapSize(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPCVOID):DWORD; external External_library name 'HeapSize';
+
+  function HeapValidate(hHeap:HANDLE; dwFlags:DWORD; lpMem:LPCVOID):WINBOOL; external External_library name 'HeapValidate';
+
+  function HeapCompact(hHeap:HANDLE; dwFlags:DWORD):UINT; external External_library name 'HeapCompact';
+
+  function GetProcessHeap:HANDLE; external External_library name 'GetProcessHeap';
+
+  function GetProcessHeaps(NumberOfHeaps:DWORD; ProcessHeaps:PHANDLE):DWORD; external External_library name 'GetProcessHeaps';
+
+  function HeapLock(hHeap:HANDLE):WINBOOL; external External_library name 'HeapLock';
+
+  function HeapUnlock(hHeap:HANDLE):WINBOOL; external External_library name 'HeapUnlock';
+
+  function HeapWalk(hHeap:HANDLE; lpEntry:LPPROCESS_HEAP_ENTRY):WINBOOL; external External_library name 'HeapWalk';
+
+  function GetProcessAffinityMask(hProcess:HANDLE; lpProcessAffinityMask:LPDWORD; lpSystemAffinityMask:LPDWORD):WINBOOL; external External_library name 'GetProcessAffinityMask';
+
+  function GetProcessTimes(hProcess:HANDLE; lpCreationTime:LPFILETIME; lpExitTime:LPFILETIME; lpKernelTime:LPFILETIME; lpUserTime:LPFILETIME):WINBOOL; external External_library name 'GetProcessTimes';
+
+  function GetProcessWorkingSetSize(hProcess:HANDLE; lpMinimumWorkingSetSize:LPDWORD; lpMaximumWorkingSetSize:LPDWORD):WINBOOL; external External_library name 'GetProcessWorkingSetSize';
+
+  function SetProcessWorkingSetSize(hProcess:HANDLE; dwMinimumWorkingSetSize:DWORD; dwMaximumWorkingSetSize:DWORD):WINBOOL; external External_library name 'SetProcessWorkingSetSize';
+
+  function OpenProcess(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; dwProcessId:DWORD):HANDLE; external External_library name 'OpenProcess';
+
+  function GetCurrentProcess:HANDLE; external External_library name 'GetCurrentProcess';
+
+  function GetCurrentProcessId:DWORD; external External_library name 'GetCurrentProcessId';
+
+  procedure ExitProcess(uExitCode:UINT);external External_library name 'ExitProcess';
+
+  function TerminateProcess(hProcess:HANDLE; uExitCode:UINT):WINBOOL; external External_library name 'TerminateProcess';
+
+  function GetExitCodeProcess(hProcess:HANDLE; lpExitCode:LPDWORD):WINBOOL; external External_library name 'GetExitCodeProcess';
+
+  procedure FatalExit(ExitCode:longint); external External_library name 'FatalExit';
+
+  procedure RaiseException(dwExceptionCode:DWORD; dwExceptionFlags:DWORD; nNumberOfArguments:DWORD; var lpArguments:DWORD); external External_library name 'RaiseException';
+
+  function UnhandledExceptionFilter(var ExceptionInfo:emptyrecord):LONG; external External_library name 'UnhandledExceptionFilter';
+
+  function CreateThread(lpThreadAttributes:LPSECURITY_ATTRIBUTES; dwStackSize:DWORD; lpStartAddress:LPTHREAD_START_ROUTINE; lpParameter:LPVOID; dwCreationFlags:DWORD; 
+             lpThreadId:LPDWORD):HANDLE; external External_library name 'CreateThread';
+
+  function CreateRemoteThread(hProcess:HANDLE; lpThreadAttributes:LPSECURITY_ATTRIBUTES; dwStackSize:DWORD; lpStartAddress:LPTHREAD_START_ROUTINE; lpParameter:LPVOID; 
+             dwCreationFlags:DWORD; lpThreadId:LPDWORD):HANDLE; external External_library name 'CreateRemoteThread';
+
+  function GetCurrentThread:HANDLE; external External_library name 'GetCurrentThread';
+
+  function GetCurrentThreadId:DWORD; external External_library name 'GetCurrentThreadId';
+
+  function SetThreadAffinityMask(hThread:HANDLE; dwThreadAffinityMask:DWORD):DWORD; external External_library name 'SetThreadAffinityMask';
+
+  function SetThreadPriority(hThread:HANDLE; nPriority:longint):WINBOOL; external External_library name 'SetThreadPriority';
+
+  function GetThreadPriority(hThread:HANDLE):longint; external External_library name 'GetThreadPriority';
+
+  function GetThreadTimes(hThread:HANDLE; lpCreationTime:LPFILETIME; lpExitTime:LPFILETIME; lpKernelTime:LPFILETIME; lpUserTime:LPFILETIME):WINBOOL; external External_library name 'GetThreadTimes';
+
+  procedure ExitThread(dwExitCode:DWORD); external External_library name 'ExitThread';
+
+  function TerminateThread(hThread:HANDLE; dwExitCode:DWORD):WINBOOL; external External_library name 'TerminateThread';
+
+  function GetExitCodeThread(hThread:HANDLE; lpExitCode:LPDWORD):WINBOOL; external External_library name 'GetExitCodeThread';
+
+  function GetThreadSelectorEntry(hThread:HANDLE; dwSelector:DWORD; lpSelectorEntry:LPLDT_ENTRY):WINBOOL; external External_library name 'GetThreadSelectorEntry';
+
+  function GetLastError:DWORD; external External_library name 'GetLastError';
+
+  procedure SetLastError(dwErrCode:DWORD); external External_library name 'SetLastError';
+
+  function GetOverlappedResult(hFile:HANDLE; lpOverlapped:LPOVERLAPPED; lpNumberOfBytesTransferred:LPDWORD; bWait:WINBOOL):WINBOOL; external External_library name 'GetOverlappedResult';
+
+  function CreateIoCompletionPort(FileHandle:HANDLE; ExistingCompletionPort:HANDLE; CompletionKey:DWORD; NumberOfConcurrentThreads:DWORD):HANDLE; external External_library name 'CreateIoCompletionPort';
+
+  function GetQueuedCompletionStatus(CompletionPort:HANDLE; lpNumberOfBytesTransferred:LPDWORD; lpCompletionKey:LPDWORD; var lpOverlapped:LPOVERLAPPED; dwMilliseconds:DWORD):WINBOOL; external External_library name 'GetQueuedCompletionStatus';
+
+  function SetErrorMode(uMode:UINT):UINT; external External_library name 'SetErrorMode';
+
+  function ReadProcessMemory(hProcess:HANDLE; lpBaseAddress:LPCVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesRead:LPDWORD):WINBOOL; external External_library name 'ReadProcessMemory';
+
+  function WriteProcessMemory(hProcess:HANDLE; lpBaseAddress:LPVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesWritten:LPDWORD):WINBOOL; external External_library name 'WriteProcessMemory';
+
+  function GetThreadContext(hThread:HANDLE; lpContext:LPCONTEXT):WINBOOL; external External_library name 'GetThreadContext';
+
+  function SetThreadContext(hThread:HANDLE; var lpContext:CONTEXT):WINBOOL; external External_library name 'SetThreadContext';
+
+  function SuspendThread(hThread:HANDLE):DWORD; external External_library name 'SuspendThread';
+
+  function ResumeThread(hThread:HANDLE):DWORD; external External_library name 'ResumeThread';
+
+  procedure DebugBreak; external External_library name 'DebugBreak';
+
+  function WaitForDebugEvent(lpDebugEvent:LPDEBUG_EVENT; dwMilliseconds:DWORD):WINBOOL; external External_library name 'WaitForDebugEvent';
+
+  function ContinueDebugEvent(dwProcessId:DWORD; dwThreadId:DWORD; dwContinueStatus:DWORD):WINBOOL; external External_library name 'ContinueDebugEvent';
+
+  function DebugActiveProcess(dwProcessId:DWORD):WINBOOL; external External_library name 'DebugActiveProcess';
+
+  procedure InitializeCriticalSection(lpCriticalSection:LPCRITICAL_SECTION); external External_library name 'InitializeCriticalSection';
+
+  procedure EnterCriticalSection(lpCriticalSection:LPCRITICAL_SECTION); external External_library name 'EnterCriticalSection';
+
+  procedure LeaveCriticalSection(lpCriticalSection:LPCRITICAL_SECTION); external External_library name 'LeaveCriticalSection';
+
+  procedure DeleteCriticalSection(lpCriticalSection:LPCRITICAL_SECTION); external External_library name 'DeleteCriticalSection';
+
+  function SetEvent(hEvent:HANDLE):WINBOOL; external External_library name 'SetEvent';
+
+  function ResetEvent(hEvent:HANDLE):WINBOOL; external External_library name 'ResetEvent';
+
+  function PulseEvent(hEvent:HANDLE):WINBOOL; external External_library name 'PulseEvent';
+
+  function ReleaseSemaphore(hSemaphore:HANDLE; lReleaseCount:LONG; lpPreviousCount:LPLONG):WINBOOL; external External_library name 'ReleaseSemaphore';
+
+  function ReleaseMutex(hMutex:HANDLE):WINBOOL; external External_library name 'ReleaseMutex';
+
+  function WaitForSingleObject(hHandle:HANDLE; dwMilliseconds:DWORD):DWORD; external External_library name 'WaitForSingleObject';
+
+  function WaitForMultipleObjects(nCount:DWORD; var lpHandles:HANDLE; bWaitAll:WINBOOL; dwMilliseconds:DWORD):DWORD; external External_library name 'WaitForMultipleObjects';
+
+  procedure Sleep(dwMilliseconds:DWORD); external External_library name 'Sleep';
+
+  function LoadResource(hModule:HINSTANCE; hResInfo:HRSRC):HGLOBAL; external External_library name 'LoadResource';
+
+  function SizeofResource(hModule:HINSTANCE; hResInfo:HRSRC):DWORD; external External_library name 'SizeofResource';
+
+  function GlobalDeleteAtom(nAtom:ATOM):ATOM; external External_library name 'GlobalDeleteAtom';
+
+  function InitAtomTable(nSize:DWORD):WINBOOL; external External_library name 'InitAtomTable';
+
+  function DeleteAtom(nAtom:ATOM):ATOM; external External_library name 'DeleteAtom';
+
+  function SetHandleCount(uNumber:UINT):UINT; external External_library name 'SetHandleCount';
+
+  function GetLogicalDrives:DWORD; external External_library name 'GetLogicalDrives';
+
+  function LockFile(hFile:HANDLE; dwFileOffsetLow:DWORD; dwFileOffsetHigh:DWORD; nNumberOfBytesToLockLow:DWORD; nNumberOfBytesToLockHigh:DWORD):WINBOOL; external External_library name 'LockFile';
+
+  function UnlockFile(hFile:HANDLE; dwFileOffsetLow:DWORD; dwFileOffsetHigh:DWORD; nNumberOfBytesToUnlockLow:DWORD; nNumberOfBytesToUnlockHigh:DWORD):WINBOOL; external External_library name 'UnlockFile';
+
+  function LockFileEx(hFile:HANDLE; dwFlags:DWORD; dwReserved:DWORD; nNumberOfBytesToLockLow:DWORD; nNumberOfBytesToLockHigh:DWORD; 
+             lpOverlapped:LPOVERLAPPED):WINBOOL; external External_library name 'LockFileEx';
+
+  function UnlockFileEx(hFile:HANDLE; dwReserved:DWORD; nNumberOfBytesToUnlockLow:DWORD; nNumberOfBytesToUnlockHigh:DWORD; lpOverlapped:LPOVERLAPPED):WINBOOL; external External_library name 'UnlockFileEx';
+
+  function GetFileInformationByHandle(hFile:HANDLE; lpFileInformation:LPBY_HANDLE_FILE_INFORMATION):WINBOOL; external External_library name 'GetFileInformationByHandle';
+
+  function GetFileType(hFile:HANDLE):DWORD; external External_library name 'GetFileType';
+
+  function GetFileSize(hFile:HANDLE; lpFileSizeHigh:LPDWORD):DWORD; external External_library name 'GetFileSize';
+
+  function GetStdHandle(nStdHandle:DWORD):HANDLE; external External_library name 'GetStdHandle';
+
+  function SetStdHandle(nStdHandle:DWORD; hHandle:HANDLE):WINBOOL; external External_library name 'SetStdHandle';
+
+  function WriteFile(hFile:HANDLE; lpBuffer:LPCVOID; nNumberOfBytesToWrite:DWORD; lpNumberOfBytesWritten:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL; external External_library name 'WriteFile';
+
+  function ReadFile(hFile:HANDLE; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; lpNumberOfBytesRead:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL; external External_library name 'ReadFile';
+
+  function FlushFileBuffers(hFile:HANDLE):WINBOOL; external External_library name 'FlushFileBuffers';
+
+  function DeviceIoControl(hDevice:HANDLE; dwIoControlCode:DWORD; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; 
+             nOutBufferSize:DWORD; lpBytesReturned:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL; external External_library name 'DeviceIoControl';
+
+  function SetEndOfFile(hFile:HANDLE):WINBOOL; external External_library name 'SetEndOfFile';
+
+  function SetFilePointer(hFile:HANDLE; lDistanceToMove:LONG; lpDistanceToMoveHigh:PLONG; dwMoveMethod:DWORD):DWORD; external External_library name 'SetFilePointer';
+
+  function FindClose(hFindFile:HANDLE):WINBOOL; external External_library name 'FindClose';
+
+  function GetFileTime(hFile:HANDLE; lpCreationTime:LPFILETIME; lpLastAccessTime:LPFILETIME; lpLastWriteTime:LPFILETIME):WINBOOL; external External_library name 'GetFileTime';
+
+  function SetFileTime(hFile:HANDLE; var lpCreationTime:FILETIME; var lpLastAccessTime:FILETIME; var lpLastWriteTime:FILETIME):WINBOOL; external External_library name 'SetFileTime';
+
+  function CloseHandle(hObject:HANDLE):WINBOOL; external External_library name 'CloseHandle';
+
+  function DuplicateHandle(hSourceProcessHandle:HANDLE; hSourceHandle:HANDLE; hTargetProcessHandle:HANDLE; lpTargetHandle:LPHANDLE; dwDesiredAccess:DWORD; 
+             bInheritHandle:WINBOOL; dwOptions:DWORD):WINBOOL; external External_library name 'DuplicateHandle';
+
+  function GetHandleInformation(hObject:HANDLE; lpdwFlags:LPDWORD):WINBOOL; external External_library name 'GetHandleInformation';
+
+  function SetHandleInformation(hObject:HANDLE; dwMask:DWORD; dwFlags:DWORD):WINBOOL; external External_library name 'SetHandleInformation';
+
+  function LoadModule(lpModuleName:LPCSTR; lpParameterBlock:LPVOID):DWORD; external External_library name 'LoadModule';
+
+  function WinExec(lpCmdLine:LPCSTR; uCmdShow:UINT):UINT; external External_library name 'WinExec';
+
+  function ClearCommBreak(hFile:HANDLE):WINBOOL; external External_library name 'ClearCommBreak';
+
+  function ClearCommError(hFile:HANDLE; lpErrors:LPDWORD; lpStat:LPCOMSTAT):WINBOOL; external External_library name 'ClearCommError';
+
+  function SetupComm(hFile:HANDLE; dwInQueue:DWORD; dwOutQueue:DWORD):WINBOOL; external External_library name 'SetupComm';
+
+  function EscapeCommFunction(hFile:HANDLE; dwFunc:DWORD):WINBOOL; external External_library name 'EscapeCommFunction';
+
+  function GetCommConfig(hCommDev:HANDLE; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL; external External_library name 'GetCommConfig';
+
+  function GetCommMask(hFile:HANDLE; lpEvtMask:LPDWORD):WINBOOL; external External_library name 'GetCommMask';
+
+  function GetCommProperties(hFile:HANDLE; lpCommProp:LPCOMMPROP):WINBOOL; external External_library name 'GetCommProperties';
+
+  function GetCommModemStatus(hFile:HANDLE; lpModemStat:LPDWORD):WINBOOL; external External_library name 'GetCommModemStatus';
+
+  function GetCommState(hFile:HANDLE; lpDCB:LPDCB):WINBOOL; external External_library name 'GetCommState';
+
+  function GetCommTimeouts(hFile:HANDLE; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL; external External_library name 'GetCommTimeouts';
+
+  function PurgeComm(hFile:HANDLE; dwFlags:DWORD):WINBOOL; external External_library name 'PurgeComm';
+
+  function SetCommBreak(hFile:HANDLE):WINBOOL; external External_library name 'SetCommBreak';
+
+  function SetCommConfig(hCommDev:HANDLE; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL; external External_library name 'SetCommConfig';
+
+  function SetCommMask(hFile:HANDLE; dwEvtMask:DWORD):WINBOOL; external External_library name 'SetCommMask';
+
+  function SetCommState(hFile:HANDLE; lpDCB:LPDCB):WINBOOL; external External_library name 'SetCommState';
+
+  function SetCommTimeouts(hFile:HANDLE; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL; external External_library name 'SetCommTimeouts';
+
+  function TransmitCommChar(hFile:HANDLE; cChar:char):WINBOOL; external External_library name 'TransmitCommChar';
+
+  function WaitCommEvent(hFile:HANDLE; lpEvtMask:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL; external External_library name 'WaitCommEvent';
+
+  function SetTapePosition(hDevice:HANDLE; dwPositionMethod:DWORD; dwPartition:DWORD; dwOffsetLow:DWORD; dwOffsetHigh:DWORD; 
+             bImmediate:WINBOOL):DWORD; external External_library name 'SetTapePosition';
+
+  function GetTapePosition(hDevice:HANDLE; dwPositionType:DWORD; lpdwPartition:LPDWORD; lpdwOffsetLow:LPDWORD; lpdwOffsetHigh:LPDWORD):DWORD; external External_library name 'GetTapePosition';
+
+  function PrepareTape(hDevice:HANDLE; dwOperation:DWORD; bImmediate:WINBOOL):DWORD; external External_library name 'PrepareTape';
+
+  function EraseTape(hDevice:HANDLE; dwEraseType:DWORD; bImmediate:WINBOOL):DWORD; external External_library name 'EraseTape';
+
+  function CreateTapePartition(hDevice:HANDLE; dwPartitionMethod:DWORD; dwCount:DWORD; dwSize:DWORD):DWORD; external External_library name 'CreateTapePartition';
+
+  function WriteTapemark(hDevice:HANDLE; dwTapemarkType:DWORD; dwTapemarkCount:DWORD; bImmediate:WINBOOL):DWORD; external External_library name 'WriteTapemark';
+
+  function GetTapeStatus(hDevice:HANDLE):DWORD; external External_library name 'GetTapeStatus';
+
+  function GetTapeParameters(hDevice:HANDLE; dwOperation:DWORD; lpdwSize:LPDWORD; lpTapeInformation:LPVOID):DWORD; external External_library name 'GetTapeParameters';
+
+  function SetTapeParameters(hDevice:HANDLE; dwOperation:DWORD; lpTapeInformation:LPVOID):DWORD; external External_library name 'SetTapeParameters';
+
+  function Beep(dwFreq:DWORD; dwDuration:DWORD):WINBOOL; external External_library name 'Beep';
+
+  procedure OpenSound; external External_library name 'OpenSound';
+
+  procedure CloseSound; external External_library name 'CloseSound';
+
+  procedure StartSound; external External_library name 'StartSound';
+
+  procedure StopSound; external External_library name 'StopSound';
+
+  function WaitSoundState(nState:DWORD):DWORD; external External_library name 'WaitSoundState';
+
+  function SyncAllVoices:DWORD; external External_library name 'SyncAllVoices';
+
+  function CountVoiceNotes(nVoice:DWORD):DWORD; external External_library name 'CountVoiceNotes';
+
+  function GetThresholdEvent:LPDWORD; external External_library name 'GetThresholdEvent';
+
+  function GetThresholdStatus:DWORD; external External_library name 'GetThresholdStatus';
+
+  function SetSoundNoise(nSource:DWORD; nDuration:DWORD):DWORD; external External_library name 'SetSoundNoise';
+
+  function SetVoiceAccent(nVoice:DWORD; nTempo:DWORD; nVolume:DWORD; nMode:DWORD; nPitch:DWORD):DWORD; external External_library name 'SetVoiceAccent';
+
+  function SetVoiceEnvelope(nVoice:DWORD; nShape:DWORD; nRepeat:DWORD):DWORD; external External_library name 'SetVoiceEnvelope';
+
+  function SetVoiceNote(nVoice:DWORD; nValue:DWORD; nLength:DWORD; nCdots:DWORD):DWORD; external External_library name 'SetVoiceNote';
+
+  function SetVoiceQueueSize(nVoice:DWORD; nBytes:DWORD):DWORD; external External_library name 'SetVoiceQueueSize';
+
+  function SetVoiceSound(nVoice:DWORD; Frequency:DWORD; nDuration:DWORD):DWORD; external External_library name 'SetVoiceSound';
+
+  function SetVoiceThreshold(nVoice:DWORD; nNotes:DWORD):DWORD; external External_library name 'SetVoiceThreshold';
+
+  function MulDiv(nNumber:longint; nNumerator:longint; nDenominator:longint):longint; external External_library name 'MulDiv';
+
+  procedure GetSystemTime(lpSystemTime:LPSYSTEMTIME); external External_library name 'GetSystemTime';
+
+  function SetSystemTime(var lpSystemTime:SYSTEMTIME):WINBOOL; external External_library name 'SetSystemTime';
+
+  procedure GetLocalTime(lpSystemTime:LPSYSTEMTIME); external External_library name 'GetLocalTime';
+
+  function SetLocalTime(var lpSystemTime:SYSTEMTIME):WINBOOL; external External_library name 'SetLocalTime';
+
+  procedure GetSystemInfo(lpSystemInfo:LPSYSTEM_INFO); external External_library name 'GetSystemInfo';
+
+  function SystemTimeToTzSpecificLocalTime(lpTimeZoneInformation:LPTIME_ZONE_INFORMATION; lpUniversalTime:LPSYSTEMTIME; lpLocalTime:LPSYSTEMTIME):WINBOOL; external External_library name 'SystemTimeToTzSpecificLocalTime';
+
+  function GetTimeZoneInformation(lpTimeZoneInformation:LPTIME_ZONE_INFORMATION):DWORD; external External_library name 'GetTimeZoneInformation';
+
+  function SetTimeZoneInformation(var lpTimeZoneInformation:TIME_ZONE_INFORMATION):WINBOOL; external External_library name 'SetTimeZoneInformation';
+
+  function SystemTimeToFileTime(var lpSystemTime:SYSTEMTIME; lpFileTime:LPFILETIME):WINBOOL; external External_library name 'SystemTimeToFileTime';
+
+  function FileTimeToLocalFileTime(var lpFileTime:FILETIME; lpLocalFileTime:LPFILETIME):WINBOOL; external External_library name 'FileTimeToLocalFileTime';
+
+  function LocalFileTimeToFileTime(var lpLocalFileTime:FILETIME; lpFileTime:LPFILETIME):WINBOOL; external External_library name 'LocalFileTimeToFileTime';
+
+  function FileTimeToSystemTime(var lpFileTime:FILETIME; lpSystemTime:LPSYSTEMTIME):WINBOOL; external External_library name 'FileTimeToSystemTime';
+
+  function CompareFileTime(var lpFileTime1:FILETIME; var lpFileTime2:FILETIME):LONG; external External_library name 'CompareFileTime';
+
+  function FileTimeToDosDateTime(var lpFileTime:FILETIME; lpFatDate:LPWORD; lpFatTime:LPWORD):WINBOOL; external External_library name 'FileTimeToDosDateTime';
+
+  function DosDateTimeToFileTime(wFatDate:WORD; wFatTime:WORD; lpFileTime:LPFILETIME):WINBOOL; external External_library name 'DosDateTimeToFileTime';
+
+  function GetTickCount:DWORD; external External_library name 'GetTickCount';
+
+  function SetSystemTimeAdjustment(dwTimeAdjustment:DWORD; bTimeAdjustmentDisabled:WINBOOL):WINBOOL; external External_library name 'SetSystemTimeAdjustment';
+
+  function GetSystemTimeAdjustment(lpTimeAdjustment:PDWORD; lpTimeIncrement:PDWORD; lpTimeAdjustmentDisabled:PWINBOOL):WINBOOL; external External_library name 'GetSystemTimeAdjustment';
+
+  function CreatePipe(hReadPipe:PHANDLE; hWritePipe:PHANDLE; lpPipeAttributes:LPSECURITY_ATTRIBUTES; nSize:DWORD):WINBOOL; external External_library name 'CreatePipe';
+
+  function ConnectNamedPipe(hNamedPipe:HANDLE; lpOverlapped:LPOVERLAPPED):WINBOOL; external External_library name 'ConnectNamedPipe';
+
+  function DisconnectNamedPipe(hNamedPipe:HANDLE):WINBOOL; external External_library name 'DisconnectNamedPipe';
+
+  function SetNamedPipeHandleState(hNamedPipe:HANDLE; lpMode:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD):WINBOOL; external External_library name 'SetNamedPipeHandleState';
+
+  function GetNamedPipeInfo(hNamedPipe:HANDLE; lpFlags:LPDWORD; lpOutBufferSize:LPDWORD; lpInBufferSize:LPDWORD; lpMaxInstances:LPDWORD):WINBOOL; external External_library name 'GetNamedPipeInfo';
+
+  function PeekNamedPipe(hNamedPipe:HANDLE; lpBuffer:LPVOID; nBufferSize:DWORD; lpBytesRead:LPDWORD; lpTotalBytesAvail:LPDWORD; 
+             lpBytesLeftThisMessage:LPDWORD):WINBOOL; external External_library name 'PeekNamedPipe';
+
+  function TransactNamedPipe(hNamedPipe:HANDLE; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; lpOverlapped:LPOVERLAPPED):WINBOOL; external External_library name 'TransactNamedPipe';
+
+  function GetMailslotInfo(hMailslot:HANDLE; lpMaxMessageSize:LPDWORD; lpNextSize:LPDWORD; lpMessageCount:LPDWORD; lpReadTimeout:LPDWORD):WINBOOL; external External_library name 'GetMailslotInfo';
+
+  function SetMailslotInfo(hMailslot:HANDLE; lReadTimeout:DWORD):WINBOOL; external External_library name 'SetMailslotInfo';
+
+  function MapViewOfFile(hFileMappingObject:HANDLE; dwDesiredAccess:DWORD; dwFileOffsetHigh:DWORD; dwFileOffsetLow:DWORD; dwNumberOfBytesToMap:DWORD):LPVOID; external External_library name 'MapViewOfFile';
+
+  function FlushViewOfFile(lpBaseAddress:LPCVOID; dwNumberOfBytesToFlush:DWORD):WINBOOL; external External_library name 'FlushViewOfFile';
+
+  function UnmapViewOfFile(lpBaseAddress:LPVOID):WINBOOL; external External_library name 'UnmapViewOfFile';
+
+  function OpenFile(lpFileName:LPCSTR; lpReOpenBuff:LPOFSTRUCT; uStyle:UINT):HFILE; external External_library name 'OpenFile';
+
+  function _lopen(lpPathName:LPCSTR; iReadWrite:longint):HFILE; external External_library name '_lopen';
+
+  function _lcreat(lpPathName:LPCSTR; iAttribute:longint):HFILE; external External_library name '_lcreat';
+
+  function _lread(hFile:HFILE; lpBuffer:LPVOID; uBytes:UINT):UINT; external External_library name '_lread';
+
+  function _lwrite(hFile:HFILE; lpBuffer:LPCSTR; uBytes:UINT):UINT; external External_library name '_lwrite';
+
+  function _hread(hFile:HFILE; lpBuffer:LPVOID; lBytes:longint):longint; external External_library name '_hread';
+
+  function _hwrite(hFile:HFILE; lpBuffer:LPCSTR; lBytes:longint):longint; external External_library name '_hwrite';
+
+  function _lclose(hFile:HFILE):HFILE; external External_library name '_lclose';
+
+  function _llseek(hFile:HFILE; lOffset:LONG; iOrigin:longint):LONG; external External_library name '_llseek';
+
+  function IsTextUnicode(lpBuffer:LPVOID; cb:longint; lpi:LPINT):WINBOOL; external External_library name 'IsTextUnicode';
+
+  function TlsAlloc:DWORD; external External_library name 'TlsAlloc';
+
+  function TlsGetValue(dwTlsIndex:DWORD):LPVOID; external External_library name 'TlsGetValue';
+
+  function TlsSetValue(dwTlsIndex:DWORD; lpTlsValue:LPVOID):WINBOOL; external External_library name 'TlsSetValue';
+
+  function TlsFree(dwTlsIndex:DWORD):WINBOOL; external External_library name 'TlsFree';
+
+  function SleepEx(dwMilliseconds:DWORD; bAlertable:WINBOOL):DWORD; external External_library name 'SleepEx';
+
+  function WaitForSingleObjectEx(hHandle:HANDLE; dwMilliseconds:DWORD; bAlertable:WINBOOL):DWORD; external External_library name 'WaitForSingleObjectEx';
+
+  function WaitForMultipleObjectsEx(nCount:DWORD; var lpHandles:HANDLE; bWaitAll:WINBOOL; dwMilliseconds:DWORD; bAlertable:WINBOOL):DWORD; external External_library name 'WaitForMultipleObjectsEx';
+
+  function ReadFileEx(hFile:HANDLE; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; lpOverlapped:LPOVERLAPPED; lpCompletionRoutine:LPOVERLAPPED_COMPLETION_ROUTINE):WINBOOL; external External_library name 'ReadFileEx';
+
+  function WriteFileEx(hFile:HANDLE; lpBuffer:LPCVOID; nNumberOfBytesToWrite:DWORD; lpOverlapped:LPOVERLAPPED; lpCompletionRoutine:LPOVERLAPPED_COMPLETION_ROUTINE):WINBOOL; external External_library name 'WriteFileEx';
+
+  function BackupRead(hFile:HANDLE; lpBuffer:LPBYTE; nNumberOfBytesToRead:DWORD; lpNumberOfBytesRead:LPDWORD; bAbort:WINBOOL; 
+             bProcessSecurity:WINBOOL; var lpContext:LPVOID):WINBOOL; external External_library name 'BackupRead';
+
+  function BackupSeek(hFile:HANDLE; dwLowBytesToSeek:DWORD; dwHighBytesToSeek:DWORD; lpdwLowByteSeeked:LPDWORD; lpdwHighByteSeeked:LPDWORD; 
+             var lpContext:LPVOID):WINBOOL; external External_library name 'BackupSeek';
+
+  function BackupWrite(hFile:HANDLE; lpBuffer:LPBYTE; nNumberOfBytesToWrite:DWORD; lpNumberOfBytesWritten:LPDWORD; bAbort:WINBOOL; 
+             bProcessSecurity:WINBOOL; var lpContext:LPVOID):WINBOOL; external External_library name 'BackupWrite';
+
+  function SetProcessShutdownParameters(dwLevel:DWORD; dwFlags:DWORD):WINBOOL; external External_library name 'SetProcessShutdownParameters';
+
+  function GetProcessShutdownParameters(lpdwLevel:LPDWORD; lpdwFlags:LPDWORD):WINBOOL; external External_library name 'GetProcessShutdownParameters';
+
+  procedure SetFileApisToOEM; external External_library name 'SetFileApisToOEM';
+
+  procedure SetFileApisToANSI; external External_library name 'SetFileApisToANSI';
+
+  function AreFileApisANSI:WINBOOL; external External_library name 'AreFileApisANSI';
+
+  function CloseEventLog(hEventLog:HANDLE):WINBOOL; external External_library name 'CloseEventLog';
+
+  function DeregisterEventSource(hEventLog:HANDLE):WINBOOL; external External_library name 'DeregisterEventSource';
+
+  function NotifyChangeEventLog(hEventLog:HANDLE; hEvent:HANDLE):WINBOOL; external External_library name 'NotifyChangeEventLog';
+
+  function GetNumberOfEventLogRecords(hEventLog:HANDLE; NumberOfRecords:PDWORD):WINBOOL; external External_library name 'GetNumberOfEventLogRecords';
+
+  function GetOldestEventLogRecord(hEventLog:HANDLE; OldestRecord:PDWORD):WINBOOL; external External_library name 'GetOldestEventLogRecord';
+
+  function DuplicateToken(ExistingTokenHandle:HANDLE; ImpersonationLevel:SECURITY_IMPERSONATION_LEVEL; DuplicateTokenHandle:PHANDLE):WINBOOL; external External_library name 'DuplicateToken';
+
+  function GetKernelObjectSecurity(Handle:HANDLE; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetKernelObjectSecurity';
+
+  function ImpersonateNamedPipeClient(hNamedPipe:HANDLE):WINBOOL; external External_library name 'ImpersonateNamedPipeClient';
+
+  function ImpersonateLoggedOnUser(hToken:HANDLE):WINBOOL; external External_library name 'ImpersonateLoggedOnUser';
+
+  function ImpersonateSelf(ImpersonationLevel:SECURITY_IMPERSONATION_LEVEL):WINBOOL; external External_library name 'ImpersonateSelf';
+
+  function RevertToSelf:WINBOOL; external External_library name 'RevertToSelf';
+
+  function SetThreadToken(Thread:PHANDLE; Token:HANDLE):WINBOOL; external External_library name 'SetThreadToken';
+
+{  function AccessCheck(pSecurityDescriptor:PSECURITY_DESCRIPTOR; ClientToken:HANDLE; DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; PrivilegeSet:PPRIVILEGE_SET;
+             PrivilegeSetLength:LPDWORD; GrantedAccess:LPDWORD; AccessStatus:LPBOOL):WINBOOL; external External_library name 'AccessCheck'; }
+
+  function OpenProcessToken(ProcessHandle:HANDLE; DesiredAccess:DWORD; TokenHandle:PHANDLE):WINBOOL; external External_library name 'OpenProcessToken';
+
+  function OpenThreadToken(ThreadHandle:HANDLE; DesiredAccess:DWORD; OpenAsSelf:WINBOOL; TokenHandle:PHANDLE):WINBOOL; external External_library name 'OpenThreadToken';
+
+  function GetTokenInformation(TokenHandle:HANDLE; TokenInformationClass:TOKEN_INFORMATION_CLASS; TokenInformation:LPVOID; TokenInformationLength:DWORD; ReturnLength:PDWORD):WINBOOL; external External_library name 'GetTokenInformation';
+
+  function SetTokenInformation(TokenHandle:HANDLE; TokenInformationClass:TOKEN_INFORMATION_CLASS; TokenInformation:LPVOID; TokenInformationLength:DWORD):WINBOOL; external External_library name 'SetTokenInformation';
+
+  function AdjustTokenPrivileges(TokenHandle:HANDLE; DisableAllPrivileges:WINBOOL; NewState:PTOKEN_PRIVILEGES; BufferLength:DWORD; PreviousState:PTOKEN_PRIVILEGES; 
+             ReturnLength:PDWORD):WINBOOL; external External_library name 'AdjustTokenPrivileges';
+
+  function AdjustTokenGroups(TokenHandle:HANDLE; ResetToDefault:WINBOOL; NewState:PTOKEN_GROUPS; BufferLength:DWORD; PreviousState:PTOKEN_GROUPS; 
+             ReturnLength:PDWORD):WINBOOL; external External_library name 'AdjustTokenGroups';
+
+  function PrivilegeCheck(ClientToken:HANDLE; RequiredPrivileges:PPRIVILEGE_SET; pfResult:LPBOOL):WINBOOL; external External_library name 'PrivilegeCheck';
+
+  function IsValidSid(pSid:PSID):WINBOOL; external External_library name 'IsValidSid';
+
+  function EqualSid(pSid1:PSID; pSid2:PSID):WINBOOL; external External_library name 'EqualSid';
+
+  function EqualPrefixSid(pSid1:PSID; pSid2:PSID):WINBOOL; external External_library name 'EqualPrefixSid';
+
+  function GetSidLengthRequired(nSubAuthorityCount:UCHAR):DWORD; external External_library name 'GetSidLengthRequired';
+
+  function AllocateAndInitializeSid(pIdentifierAuthority:PSID_IDENTIFIER_AUTHORITY; nSubAuthorityCount:BYTE; nSubAuthority0:DWORD; nSubAuthority1:DWORD; nSubAuthority2:DWORD; 
+             nSubAuthority3:DWORD; nSubAuthority4:DWORD; nSubAuthority5:DWORD; nSubAuthority6:DWORD; nSubAuthority7:DWORD; 
+             var pSid:PSID):WINBOOL; external External_library name 'AllocateAndInitializeSid';
+
+  function FreeSid(pSid:PSID):PVOID; external External_library name 'FreeSid';
+
+  function InitializeSid(Sid:PSID; pIdentifierAuthority:PSID_IDENTIFIER_AUTHORITY; nSubAuthorityCount:BYTE):WINBOOL; external External_library name 'InitializeSid';
+
+  function GetSidIdentifierAuthority(pSid:PSID):PSID_IDENTIFIER_AUTHORITY; external External_library name 'GetSidIdentifierAuthority';
+
+  function GetSidSubAuthority(pSid:PSID; nSubAuthority:DWORD):PDWORD; external External_library name 'GetSidSubAuthority';
+
+  function GetSidSubAuthorityCount(pSid:PSID):PUCHAR; external External_library name 'GetSidSubAuthorityCount';
+
+  function GetLengthSid(pSid:PSID):DWORD; external External_library name 'GetLengthSid';
+
+  function CopySid(nDestinationSidLength:DWORD; pDestinationSid:PSID; pSourceSid:PSID):WINBOOL; external External_library name 'CopySid';
+
+  function AreAllAccessesGranted(GrantedAccess:DWORD; DesiredAccess:DWORD):WINBOOL; external External_library name 'AreAllAccessesGranted';
+
+  function AreAnyAccessesGranted(GrantedAccess:DWORD; DesiredAccess:DWORD):WINBOOL; external External_library name 'AreAnyAccessesGranted';
+
+  procedure MapGenericMask(AccessMask:PDWORD; GenericMapping:PGENERIC_MAPPING); external External_library name 'MapGenericMask';
+
+  function IsValidAcl(pAcl:PACL):WINBOOL; external External_library name 'IsValidAcl';
+
+  function InitializeAcl(pAcl:PACL; nAclLength:DWORD; dwAclRevision:DWORD):WINBOOL; external External_library name 'InitializeAcl';
+
+  function GetAclInformation(pAcl:PACL; pAclInformation:LPVOID; nAclInformationLength:DWORD; dwAclInformationClass:ACL_INFORMATION_CLASS):WINBOOL; external External_library name 'GetAclInformation';
+
+  function SetAclInformation(pAcl:PACL; pAclInformation:LPVOID; nAclInformationLength:DWORD; dwAclInformationClass:ACL_INFORMATION_CLASS):WINBOOL; external External_library name 'SetAclInformation';
+
+  function AddAce(pAcl:PACL; dwAceRevision:DWORD; dwStartingAceIndex:DWORD; pAceList:LPVOID; nAceListLength:DWORD):WINBOOL; external External_library name 'AddAce';
+
+  function DeleteAce(pAcl:PACL; dwAceIndex:DWORD):WINBOOL; external External_library name 'DeleteAce';
+
+  function GetAce(pAcl:PACL; dwAceIndex:DWORD; var pAce:LPVOID):WINBOOL; external External_library name 'GetAce';
+
+  function AddAccessAllowedAce(pAcl:PACL; dwAceRevision:DWORD; AccessMask:DWORD; pSid:PSID):WINBOOL; external External_library name 'AddAccessAllowedAce';
+
+  function AddAccessDeniedAce(pAcl:PACL; dwAceRevision:DWORD; AccessMask:DWORD; pSid:PSID):WINBOOL; external External_library name 'AddAccessDeniedAce';
+
+  function AddAuditAccessAce(pAcl:PACL; dwAceRevision:DWORD; dwAccessMask:DWORD; pSid:PSID; bAuditSuccess:WINBOOL; 
+             bAuditFailure:WINBOOL):WINBOOL; external External_library name 'AddAuditAccessAce';
+
+  function FindFirstFreeAce(pAcl:PACL; var pAce:LPVOID):WINBOOL; external External_library name 'FindFirstFreeAce';
+
+  function InitializeSecurityDescriptor(pSecurityDescriptor:PSECURITY_DESCRIPTOR; dwRevision:DWORD):WINBOOL; external External_library name 'InitializeSecurityDescriptor';
+
+  function IsValidSecurityDescriptor(pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL; external External_library name 'IsValidSecurityDescriptor';
+
+  function GetSecurityDescriptorLength(pSecurityDescriptor:PSECURITY_DESCRIPTOR):DWORD; external External_library name 'GetSecurityDescriptorLength';
+
+  function GetSecurityDescriptorControl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; pControl:PSECURITY_DESCRIPTOR_CONTROL; lpdwRevision:LPDWORD):WINBOOL; external External_library name 'GetSecurityDescriptorControl';
+
+  function SetSecurityDescriptorDacl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; bDaclPresent:WINBOOL; pDacl:PACL; bDaclDefaulted:WINBOOL):WINBOOL; external External_library name 'SetSecurityDescriptorDacl';
+
+  function GetSecurityDescriptorDacl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; lpbDaclPresent:LPBOOL; var pDacl:PACL; lpbDaclDefaulted:LPBOOL):WINBOOL; external External_library name 'GetSecurityDescriptorDacl';
+
+  function SetSecurityDescriptorSacl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; bSaclPresent:WINBOOL; pSacl:PACL; bSaclDefaulted:WINBOOL):WINBOOL; external External_library name 'SetSecurityDescriptorSacl';
+
+  function GetSecurityDescriptorSacl(pSecurityDescriptor:PSECURITY_DESCRIPTOR; lpbSaclPresent:LPBOOL; var pSacl:PACL; lpbSaclDefaulted:LPBOOL):WINBOOL; external External_library name 'GetSecurityDescriptorSacl';
+
+  function SetSecurityDescriptorOwner(pSecurityDescriptor:PSECURITY_DESCRIPTOR; pOwner:PSID; bOwnerDefaulted:WINBOOL):WINBOOL; external External_library name 'SetSecurityDescriptorOwner';
+
+  function GetSecurityDescriptorOwner(pSecurityDescriptor:PSECURITY_DESCRIPTOR; var pOwner:PSID; lpbOwnerDefaulted:LPBOOL):WINBOOL; external External_library name 'GetSecurityDescriptorOwner';
+
+  function SetSecurityDescriptorGroup(pSecurityDescriptor:PSECURITY_DESCRIPTOR; pGroup:PSID; bGroupDefaulted:WINBOOL):WINBOOL; external External_library name 'SetSecurityDescriptorGroup';
+
+  function GetSecurityDescriptorGroup(pSecurityDescriptor:PSECURITY_DESCRIPTOR; var pGroup:PSID; lpbGroupDefaulted:LPBOOL):WINBOOL; external External_library name 'GetSecurityDescriptorGroup';
+
+  function CreatePrivateObjectSecurity(ParentDescriptor:PSECURITY_DESCRIPTOR; CreatorDescriptor:PSECURITY_DESCRIPTOR; var NewDescriptor:PSECURITY_DESCRIPTOR; IsDirectoryObject:WINBOOL; Token:HANDLE; 
+             GenericMapping:PGENERIC_MAPPING):WINBOOL; external External_library name 'CreatePrivateObjectSecurity';
+
+  function SetPrivateObjectSecurity(SecurityInformation:SECURITY_INFORMATION; ModificationDescriptor:PSECURITY_DESCRIPTOR; var ObjectsSecurityDescriptor:PSECURITY_DESCRIPTOR; GenericMapping:PGENERIC_MAPPING; Token:HANDLE):WINBOOL;
+             external External_library name 'SetPrivateObjectSecurity';
+
+  function GetPrivateObjectSecurity(ObjectDescriptor:PSECURITY_DESCRIPTOR; SecurityInformation:SECURITY_INFORMATION; ResultantDescriptor:PSECURITY_DESCRIPTOR; DescriptorLength:DWORD; ReturnLength:PDWORD):WINBOOL;
+             external External_library name 'GetPrivateObjectSecurity';
+
+  function DestroyPrivateObjectSecurity(var ObjectDescriptor:PSECURITY_DESCRIPTOR):WINBOOL; external External_library name 'DestroyPrivateObjectSecurity';
+
+  function MakeSelfRelativeSD(pAbsoluteSecurityDescriptor:PSECURITY_DESCRIPTOR; pSelfRelativeSecurityDescriptor:PSECURITY_DESCRIPTOR; lpdwBufferLength:LPDWORD):WINBOOL; external External_library name 'MakeSelfRelativeSD';
+
+  function MakeAbsoluteSD(pSelfRelativeSecurityDescriptor:PSECURITY_DESCRIPTOR; pAbsoluteSecurityDescriptor:PSECURITY_DESCRIPTOR; lpdwAbsoluteSecurityDescriptorSize:LPDWORD; pDacl:PACL; lpdwDaclSize:LPDWORD; 
+             pSacl:PACL; lpdwSaclSize:LPDWORD; pOwner:PSID; lpdwOwnerSize:LPDWORD; pPrimaryGroup:PSID; 
+             lpdwPrimaryGroupSize:LPDWORD):WINBOOL; external External_library name 'MakeAbsoluteSD';
+
+  function SetKernelObjectSecurity(Handle:HANDLE; SecurityInformation:SECURITY_INFORMATION; SecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL; external External_library name 'SetKernelObjectSecurity';
+
+  function FindNextChangeNotification(hChangeHandle:HANDLE):WINBOOL; external External_library name 'FindNextChangeNotification';
+
+  function FindCloseChangeNotification(hChangeHandle:HANDLE):WINBOOL; external External_library name 'FindCloseChangeNotification';
+
+  function VirtualLock(lpAddress:LPVOID; dwSize:DWORD):WINBOOL; external External_library name 'VirtualLock';
+
+  function VirtualUnlock(lpAddress:LPVOID; dwSize:DWORD):WINBOOL; external External_library name 'VirtualUnlock';
+
+  function MapViewOfFileEx(hFileMappingObject:HANDLE; dwDesiredAccess:DWORD; dwFileOffsetHigh:DWORD; dwFileOffsetLow:DWORD; dwNumberOfBytesToMap:DWORD; 
+             lpBaseAddress:LPVOID):LPVOID; external External_library name 'MapViewOfFileEx';
+
+  function SetPriorityClass(hProcess:HANDLE; dwPriorityClass:DWORD):WINBOOL; external External_library name 'SetPriorityClass';
+
+  function GetPriorityClass(hProcess:HANDLE):DWORD; external External_library name 'GetPriorityClass';
+
+  function IsBadReadPtr(lp:pointer; ucb:UINT):WINBOOL; external External_library name 'IsBadReadPtr';
+
+  function IsBadWritePtr(lp:LPVOID; ucb:UINT):WINBOOL; external External_library name 'IsBadWritePtr';
+
+  function IsBadHugeReadPtr(lp:pointer; ucb:UINT):WINBOOL; external External_library name 'IsBadHugeReadPtr';
+
+  function IsBadHugeWritePtr(lp:LPVOID; ucb:UINT):WINBOOL; external External_library name 'IsBadHugeWritePtr';
+
+  function IsBadCodePtr(lpfn:FARPROC):WINBOOL; external External_library name 'IsBadCodePtr';
+
+  function AllocateLocallyUniqueId(Luid:PLUID):WINBOOL; external External_library name 'AllocateLocallyUniqueId';
+
+  function QueryPerformanceCounter(var lpPerformanceCount:LARGE_INTEGER):WINBOOL; external External_library name 'QueryPerformanceCounter';
+
+  function QueryPerformanceFrequency(var lpFrequency:LARGE_INTEGER):WINBOOL; external External_library name 'QueryPerformanceFrequency';
+
+{  procedure MoveMemory(Destination:PVOID; Source:pointer; Length:DWORD); external External_library name 'MoveMemory';
+
+  procedure FillMemory(Destination:PVOID; Length:DWORD; Fill:BYTE); external External_library name 'FillMemory';
+
+  procedure ZeroMemory(Destination:PVOID; Length:DWORD); external External_library name 'ZeroMemory'; }
+
+
+  { was #define dname(params) def_expr }
+  procedure MoveMemory(var t,s; c : longint);
+    begin
+       move(s,t,c);
+    end;
+
+  { was #define dname(params) def_expr }
+  procedure FillMemory(var p;c,v : longint);
+    begin
+       fillchar(p,c,char(byte(v)));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  procedure ZeroMemory(var p;c : longint);
+    { return type might be wrong }   
+    begin
+       fillchar(p,c,#0);
+    end;
+
+{$ifdef WIN95}
+
+  function ActivateKeyboardLayout(hkl:HKL; Flags:UINT):HKL; external External_library name 'ActivateKeyboardLayout';
+
+{$else}
+
+  function ActivateKeyboardLayout(hkl:HKL; Flags:UINT):WINBOOL; external External_library name 'ActivateKeyboardLayout';
+
+{$endif}
+
+
+  function ToUnicodeEx(wVirtKey:UINT; wScanCode:UINT; lpKeyState:PBYTE; pwszBuff:LPWSTR; cchBuff:longint; 
+             wFlags:UINT; dwhkl:HKL):longint; external External_library name 'ToUnicodeEx';
+
+  function UnloadKeyboardLayout(hkl:HKL):WINBOOL; external External_library name 'UnloadKeyboardLayout';
+
+  function GetKeyboardLayoutList(nBuff:longint; var lpList:HKL):longint; external External_library name 'GetKeyboardLayoutList';
+
+  function GetKeyboardLayout(dwLayout:DWORD):HKL; external External_library name 'GetKeyboardLayout';
+
+  function OpenInputDesktop(dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK; external External_library name 'OpenInputDesktop';
+
+  function EnumDesktopWindows(hDesktop:HDESK; lpfn:ENUMWINDOWSPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumDesktopWindows';
+
+  function SwitchDesktop(hDesktop:HDESK):WINBOOL; external External_library name 'SwitchDesktop';
+
+  function SetThreadDesktop(hDesktop:HDESK):WINBOOL; external External_library name 'SetThreadDesktop';
+
+  function CloseDesktop(hDesktop:HDESK):WINBOOL; external External_library name 'CloseDesktop';
+
+  function GetThreadDesktop(dwThreadId:DWORD):HDESK; external External_library name 'GetThreadDesktop';
+
+  function CloseWindowStation(hWinSta:HWINSTA):WINBOOL; external External_library name 'CloseWindowStation';
+
+  function SetProcessWindowStation(hWinSta:HWINSTA):WINBOOL; external External_library name 'SetProcessWindowStation';
+
+  function GetProcessWindowStation:HWINSTA; external External_library name 'GetProcessWindowStation';
+
+  function SetUserObjectSecurity(hObj:HANDLE; pSIRequested:PSECURITY_INFORMATION; pSID:PSECURITY_DESCRIPTOR):WINBOOL; external External_library name 'SetUserObjectSecurity';
+
+  function GetUserObjectSecurity(hObj:HANDLE; pSIRequested:PSECURITY_INFORMATION; pSID:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetUserObjectSecurity';
+
+  function TranslateMessage(var lpMsg:MSG):WINBOOL; external External_library name 'TranslateMessage';
+
+  function SetMessageQueue(cMessagesMax:longint):WINBOOL; external External_library name 'SetMessageQueue';
+
+  function RegisterHotKey(hWnd:HWND; anID:longint; fsModifiers:UINT; vk:UINT):WINBOOL; external External_library name 'RegisterHotKey';
+
+  function UnregisterHotKey(hWnd:HWND; anID:longint):WINBOOL; external External_library name 'UnregisterHotKey';
+
+  function ExitWindowsEx(uFlags:UINT; dwReserved:DWORD):WINBOOL; external External_library name 'ExitWindowsEx';
+
+  function SwapMouseButton(fSwap:WINBOOL):WINBOOL; external External_library name 'SwapMouseButton';
+
+  function GetMessagePos:DWORD; external External_library name 'GetMessagePos';
+
+  function GetMessageTime:LONG; external External_library name 'GetMessageTime';
+
+  function GetMessageExtraInfo:LONG; external External_library name 'GetMessageExtraInfo';
+
+  function SetMessageExtraInfo(lParam:LPARAM):LPARAM; external External_library name 'SetMessageExtraInfo';
+
+  function BroadcastSystemMessage(_para1:DWORD; _para2:LPDWORD; _para3:UINT; _para4:WPARAM; _para5:LPARAM):longint; external External_library name 'BroadcastSystemMessage';
+
+  function AttachThreadInput(idAttach:DWORD; idAttachTo:DWORD; fAttach:WINBOOL):WINBOOL; external External_library name 'AttachThreadInput';
+
+  function ReplyMessage(lResult:LRESULT):WINBOOL; external External_library name 'ReplyMessage';
+
+  function WaitMessage:WINBOOL; external External_library name 'WaitMessage';
+
+  function WaitForInputIdle(hProcess:HANDLE; dwMilliseconds:DWORD):DWORD; external External_library name 'WaitForInputIdle';
+
+  procedure PostQuitMessage(nExitCode:longint); external External_library name 'PostQuitMessage';
+
+  function InSendMessage:WINBOOL; external External_library name 'InSendMessage';
+
+  function GetDoubleClickTime:UINT; external External_library name 'GetDoubleClickTime';
+
+  function SetDoubleClickTime(_para1:UINT):WINBOOL; external External_library name 'SetDoubleClickTime';
+
+  function IsWindow(hWnd:HWND):WINBOOL; external External_library name 'IsWindow';
+
+  function IsMenu(hMenu:HMENU):WINBOOL; external External_library name 'IsMenu';
+
+  function IsChild(hWndParent:HWND; hWnd:HWND):WINBOOL; external External_library name 'IsChild';
+
+  function DestroyWindow(hWnd:HWND):WINBOOL; external External_library name 'DestroyWindow';
+
+  function ShowWindow(hWnd:HWND; nCmdShow:longint):WINBOOL; external External_library name 'ShowWindow';
+
+  function ShowWindowAsync(hWnd:HWND; nCmdShow:longint):WINBOOL; external External_library name 'ShowWindowAsync';
+
+  function FlashWindow(hWnd:HWND; bInvert:WINBOOL):WINBOOL; external External_library name 'FlashWindow';
+
+  function ShowOwnedPopups(hWnd:HWND; fShow:WINBOOL):WINBOOL; external External_library name 'ShowOwnedPopups';
+
+  function OpenIcon(hWnd:HWND):WINBOOL; external External_library name 'OpenIcon';
+
+  function CloseWindow(hWnd:HWND):WINBOOL; external External_library name 'CloseWindow';
+
+  function MoveWindow(hWnd:HWND; X:longint; Y:longint; nWidth:longint; nHeight:longint; 
+             bRepaint:WINBOOL):WINBOOL; external External_library name 'MoveWindow';
+
+  function SetWindowPos(hWnd:HWND; hWndInsertAfter:HWND; X:longint; Y:longint; cx:longint; 
+             cy:longint; uFlags:UINT):WINBOOL; external External_library name 'SetWindowPos';
+
+  function GetWindowPlacement(hWnd:HWND; var lpwndpl:WINDOWPLACEMENT):WINBOOL; external External_library name 'GetWindowPlacement';
+
+  function SetWindowPlacement(hWnd:HWND; var lpwndpl:WINDOWPLACEMENT):WINBOOL; external External_library name 'SetWindowPlacement';
+
+  function BeginDeferWindowPos(nNumWindows:longint):HDWP; external External_library name 'BeginDeferWindowPos';
+
+  function DeferWindowPos(hWinPosInfo:HDWP; hWnd:HWND; hWndInsertAfter:HWND; x:longint; y:longint; 
+             cx:longint; cy:longint; uFlags:UINT):HDWP; external External_library name 'DeferWindowPos';
+
+  function EndDeferWindowPos(hWinPosInfo:HDWP):WINBOOL; external External_library name 'EndDeferWindowPos';
+
+  function IsWindowVisible(hWnd:HWND):WINBOOL; external External_library name 'IsWindowVisible';
+
+  function IsIconic(hWnd:HWND):WINBOOL; external External_library name 'IsIconic';
+
+  function AnyPopup:WINBOOL; external External_library name 'AnyPopup';
+
+  function BringWindowToTop(hWnd:HWND):WINBOOL; external External_library name 'BringWindowToTop';
+
+  function IsZoomed(hWnd:HWND):WINBOOL; external External_library name 'IsZoomed';
+
+  function EndDialog(hDlg:HWND; nResult:longint):WINBOOL; external External_library name 'EndDialog';
+
+  function GetDlgItem(hDlg:HWND; nIDDlgItem:longint):HWND; external External_library name 'GetDlgItem';
+
+  function SetDlgItemInt(hDlg:HWND; nIDDlgItem:longint; uValue:UINT; bSigned:WINBOOL):WINBOOL; external External_library name 'SetDlgItemInt';
+
+  function GetDlgItemInt(hDlg:HWND; nIDDlgItem:longint; var lpTranslated:WINBOOL; bSigned:WINBOOL):UINT; external External_library name 'GetDlgItemInt';
+
+  function CheckDlgButton(hDlg:HWND; nIDButton:longint; uCheck:UINT):WINBOOL; external External_library name 'CheckDlgButton';
+
+  function CheckRadioButton(hDlg:HWND; nIDFirstButton:longint; nIDLastButton:longint; nIDCheckButton:longint):WINBOOL; external External_library name 'CheckRadioButton';
+
+  function IsDlgButtonChecked(hDlg:HWND; nIDButton:longint):UINT; external External_library name 'IsDlgButtonChecked';
+
+  function GetNextDlgGroupItem(hDlg:HWND; hCtl:HWND; bPrevious:WINBOOL):HWND; external External_library name 'GetNextDlgGroupItem';
+
+  function GetNextDlgTabItem(hDlg:HWND; hCtl:HWND; bPrevious:WINBOOL):HWND; external External_library name 'GetNextDlgTabItem';
+
+  function GetDlgCtrlID(hWnd:HWND):longint; external External_library name 'GetDlgCtrlID';
+
+  function GetDialogBaseUnits:longint; external External_library name 'GetDialogBaseUnits';
+
+  function OpenClipboard(hWndNewOwner:HWND):WINBOOL; external External_library name 'OpenClipboard';
+
+  function CloseClipboard:WINBOOL; external External_library name 'CloseClipboard';
+
+  function GetClipboardOwner:HWND; external External_library name 'GetClipboardOwner';
+
+  function SetClipboardViewer(hWndNewViewer:HWND):HWND; external External_library name 'SetClipboardViewer';
+
+  function GetClipboardViewer:HWND; external External_library name 'GetClipboardViewer';
+
+  function ChangeClipboardChain(hWndRemove:HWND; hWndNewNext:HWND):WINBOOL; external External_library name 'ChangeClipboardChain';
+
+  function SetClipboardData(uFormat:UINT; hMem:HANDLE):HANDLE; external External_library name 'SetClipboardData';
+
+  function GetClipboardData(uFormat:UINT):HANDLE; external External_library name 'GetClipboardData';
+
+  function CountClipboardFormats:longint; external External_library name 'CountClipboardFormats';
+
+  function EnumClipboardFormats(format:UINT):UINT; external External_library name 'EnumClipboardFormats';
+
+  function EmptyClipboard:WINBOOL; external External_library name 'EmptyClipboard';
+
+  function IsClipboardFormatAvailable(format:UINT):WINBOOL; external External_library name 'IsClipboardFormatAvailable';
+
+  function GetPriorityClipboardFormat(var paFormatPriorityList:UINT; cFormats:longint):longint; external External_library name 'GetPriorityClipboardFormat';
+
+  function GetOpenClipboardWindow:HWND; external External_library name 'GetOpenClipboardWindow';
+
+  function CharNextExA(CodePage:WORD; lpCurrentChar:LPCSTR; dwFlags:DWORD):LPSTR; external External_library name 'CharNextExA';
+
+  function CharPrevExA(CodePage:WORD; lpStart:LPCSTR; lpCurrentChar:LPCSTR; dwFlags:DWORD):LPSTR; external External_library name 'CharPrevExA';
+
+  function SetFocus(hWnd:HWND):HWND; external External_library name 'SetFocus';
+
+  function GetActiveWindow:HWND; external External_library name 'GetActiveWindow';
+
+  function GetFocus:HWND; external External_library name 'GetFocus';
+
+  function GetKBCodePage:UINT; external External_library name 'GetKBCodePage';
+
+  function GetKeyState(nVirtKey:longint):SHORT; external External_library name 'GetKeyState';
+
+  function GetAsyncKeyState(vKey:longint):SHORT; external External_library name 'GetAsyncKeyState';
+
+  function GetKeyboardState(lpKeyState:PBYTE):WINBOOL; external External_library name 'GetKeyboardState';
+
+  function SetKeyboardState(lpKeyState:LPBYTE):WINBOOL; external External_library name 'SetKeyboardState';
+
+  function GetKeyboardType(nTypeFlag:longint):longint; external External_library name 'GetKeyboardType';
+
+  function ToAscii(uVirtKey:UINT; uScanCode:UINT; lpKeyState:PBYTE; lpChar:LPWORD; uFlags:UINT):longint; external External_library name 'ToAscii';
+
+  function ToAsciiEx(uVirtKey:UINT; uScanCode:UINT; lpKeyState:PBYTE; lpChar:LPWORD; uFlags:UINT; 
+             dwhkl:HKL):longint; external External_library name 'ToAsciiEx';
+
+  function ToUnicode(wVirtKey:UINT; wScanCode:UINT; lpKeyState:PBYTE; pwszBuff:LPWSTR; cchBuff:longint; 
+             wFlags:UINT):longint; external External_library name 'ToUnicode';
+
+  function OemKeyScan(wOemChar:WORD):DWORD; external External_library name 'OemKeyScan';
+
+  procedure keybd_event(bVk:BYTE; bScan:BYTE; dwFlags:DWORD; dwExtraInfo:DWORD); external External_library name 'keybd_event';
+
+  procedure mouse_event(dwFlags:DWORD; dx:DWORD; dy:DWORD; cButtons:DWORD; dwExtraInfo:DWORD); external External_library name 'mouse_event';
+
+  function GetInputState:WINBOOL; external External_library name 'GetInputState';
+
+  function GetQueueStatus(flags:UINT):DWORD; external External_library name 'GetQueueStatus';
+
+  function GetCapture:HWND; external External_library name 'GetCapture';
+
+  function SetCapture(hWnd:HWND):HWND; external External_library name 'SetCapture';
+
+  function ReleaseCapture:WINBOOL; external External_library name 'ReleaseCapture';
+
+  function MsgWaitForMultipleObjects(nCount:DWORD; pHandles:LPHANDLE; fWaitAll:WINBOOL; dwMilliseconds:DWORD; dwWakeMask:DWORD):DWORD; external External_library name 'MsgWaitForMultipleObjects';
+
+  function SetTimer(hWnd:HWND; nIDEvent:UINT; uElapse:UINT; lpTimerFunc:TIMERPROC):UINT; external External_library name 'SetTimer';
+
+  function KillTimer(hWnd:HWND; uIDEvent:UINT):WINBOOL; external External_library name 'KillTimer';
+
+  function IsWindowUnicode(hWnd:HWND):WINBOOL; external External_library name 'IsWindowUnicode';
+
+  function EnableWindow(hWnd:HWND; bEnable:WINBOOL):WINBOOL; external External_library name 'EnableWindow';
+
+  function IsWindowEnabled(hWnd:HWND):WINBOOL; external External_library name 'IsWindowEnabled';
+
+  function DestroyAcceleratorTable(hAccel:HACCEL):WINBOOL; external External_library name 'DestroyAcceleratorTable';
+
+  function GetSystemMetrics(nIndex:longint):longint; external External_library name 'GetSystemMetrics';
+
+  function GetMenu(hWnd:HWND):HMENU; external External_library name 'GetMenu';
+
+  function SetMenu(hWnd:HWND; hMenu:HMENU):WINBOOL; external External_library name 'SetMenu';
+
+  function HiliteMenuItem(hWnd:HWND; hMenu:HMENU; uIDHiliteItem:UINT; uHilite:UINT):WINBOOL; external External_library name 'HiliteMenuItem';
+
+  function GetMenuState(hMenu:HMENU; uId:UINT; uFlags:UINT):UINT; external External_library name 'GetMenuState';
+
+  function DrawMenuBar(hWnd:HWND):WINBOOL; external External_library name 'DrawMenuBar';
+
+  function GetSystemMenu(hWnd:HWND; bRevert:WINBOOL):HMENU; external External_library name 'GetSystemMenu';
+
+  function CreateMenu:HMENU; external External_library name 'CreateMenu';
+
+  function CreatePopupMenu:HMENU; external External_library name 'CreatePopupMenu';
+
+  function DestroyMenu(hMenu:HMENU):WINBOOL; external External_library name 'DestroyMenu';
+
+  function CheckMenuItem(hMenu:HMENU; uIDCheckItem:UINT; uCheck:UINT):DWORD; external External_library name 'CheckMenuItem';
+
+  function EnableMenuItem(hMenu:HMENU; uIDEnableItem:UINT; uEnable:UINT):WINBOOL; external External_library name 'EnableMenuItem';
+
+  function GetSubMenu(hMenu:HMENU; nPos:longint):HMENU; external External_library name 'GetSubMenu';
+
+  function GetMenuItemID(hMenu:HMENU; nPos:longint):UINT; external External_library name 'GetMenuItemID';
+
+  function GetMenuItemCount(hMenu:HMENU):longint; external External_library name 'GetMenuItemCount';
+
+  function RemoveMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT):WINBOOL; external External_library name 'RemoveMenu';
+
+  function DeleteMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT):WINBOOL; external External_library name 'DeleteMenu';
+
+  function SetMenuItemBitmaps(hMenu:HMENU; uPosition:UINT; uFlags:UINT; hBitmapUnchecked:HBITMAP; hBitmapChecked:HBITMAP):WINBOOL; external External_library name 'SetMenuItemBitmaps';
+
+  function GetMenuCheckMarkDimensions:LONG; external External_library name 'GetMenuCheckMarkDimensions';
+
+  function TrackPopupMenu(hMenu:HMENU; uFlags:UINT; x:longint; y:longint; nReserved:longint; 
+             hWnd:HWND; var prcRect:RECT):WINBOOL; external External_library name 'TrackPopupMenu';
+
+  function GetMenuDefaultItem(hMenu:HMENU; fByPos:UINT; gmdiFlags:UINT):UINT; external External_library name 'GetMenuDefaultItem';
+
+  function SetMenuDefaultItem(hMenu:HMENU; uItem:UINT; fByPos:UINT):WINBOOL; external External_library name 'SetMenuDefaultItem';
+
+  function GetMenuItemRect(hWnd:HWND; hMenu:HMENU; uItem:UINT; lprcItem:LPRECT):WINBOOL; external External_library name 'GetMenuItemRect';
+
+  function MenuItemFromPoint(hWnd:HWND; hMenu:HMENU; ptScreen:POINT):longint; external External_library name 'MenuItemFromPoint';
+
+  function DragObject(_para1:HWND; _para2:HWND; _para3:UINT; _para4:DWORD; _para5:HCURSOR):DWORD; external External_library name 'DragObject';
+
+  function DragDetect(hwnd:HWND; pt:POINT):WINBOOL; external External_library name 'DragDetect';
+
+  function DrawIcon(hDC:HDC; X:longint; Y:longint; hIcon:HICON):WINBOOL; external External_library name 'DrawIcon';
+
+  function UpdateWindow(hWnd:HWND):WINBOOL; external External_library name 'UpdateWindow';
+
+  function SetActiveWindow(hWnd:HWND):HWND; external External_library name 'SetActiveWindow';
+
+  function GetForegroundWindow:HWND; external External_library name 'GetForegroundWindow';
+
+  function PaintDesktop(hdc:HDC):WINBOOL; external External_library name 'PaintDesktop';
+
+  function SetForegroundWindow(hWnd:HWND):WINBOOL; external External_library name 'SetForegroundWindow';
+
+  function WindowFromDC(hDC:HDC):HWND; external External_library name 'WindowFromDC';
+
+  function GetDC(hWnd:HWND):HDC; external External_library name 'GetDC';
+
+  function GetDCEx(hWnd:HWND; hrgnClip:HRGN; flags:DWORD):HDC; external External_library name 'GetDCEx';
+
+  function GetWindowDC(hWnd:HWND):HDC; external External_library name 'GetWindowDC';
+
+  function ReleaseDC(hWnd:HWND; hDC:HDC):longint; external External_library name 'ReleaseDC';
+
+  function BeginPaint(hWnd:HWND; lpPaint:LPPAINTSTRUCT):HDC; external External_library name 'BeginPaint';
+
+  function EndPaint(hWnd:HWND; var lpPaint:PAINTSTRUCT):WINBOOL; external External_library name 'EndPaint';
+
+  function GetUpdateRect(hWnd:HWND; lpRect:LPRECT; bErase:WINBOOL):WINBOOL; external External_library name 'GetUpdateRect';
+
+  function GetUpdateRgn(hWnd:HWND; hRgn:HRGN; bErase:WINBOOL):longint; external External_library name 'GetUpdateRgn';
+
+  function SetWindowRgn(hWnd:HWND; hRgn:HRGN; bRedraw:WINBOOL):longint; external External_library name 'SetWindowRgn';
+
+  function GetWindowRgn(hWnd:HWND; hRgn:HRGN):longint; external External_library name 'GetWindowRgn';
+
+  function ExcludeUpdateRgn(hDC:HDC; hWnd:HWND):longint; external External_library name 'ExcludeUpdateRgn';
+
+  function InvalidateRect(hWnd:HWND; var lpRect:RECT; bErase:WINBOOL):WINBOOL; external External_library name 'InvalidateRect';
+
+  function ValidateRect(hWnd:HWND; var lpRect:RECT):WINBOOL; external External_library name 'ValidateRect';
+
+  function InvalidateRgn(hWnd:HWND; hRgn:HRGN; bErase:WINBOOL):WINBOOL; external External_library name 'InvalidateRgn';
+
+  function ValidateRgn(hWnd:HWND; hRgn:HRGN):WINBOOL; external External_library name 'ValidateRgn';
+
+  function RedrawWindow(hWnd:HWND; var lprcUpdate:RECT; hrgnUpdate:HRGN; flags:UINT):WINBOOL; external External_library name 'RedrawWindow';
+
+  function LockWindowUpdate(hWndLock:HWND):WINBOOL; external External_library name 'LockWindowUpdate';
+
+  function ScrollWindow(hWnd:HWND; XAmount:longint; YAmount:longint; var lpRect:RECT; var lpClipRect:RECT):WINBOOL; external External_library name 'ScrollWindow';
+
+  function ScrollDC(hDC:HDC; dx:longint; dy:longint; var lprcScroll:RECT; var lprcClip:RECT; 
+             hrgnUpdate:HRGN; lprcUpdate:LPRECT):WINBOOL; external External_library name 'ScrollDC';
+
+  function ScrollWindowEx(hWnd:HWND; dx:longint; dy:longint; var prcScroll:RECT; var prcClip:RECT; 
+             hrgnUpdate:HRGN; prcUpdate:LPRECT; flags:UINT):longint; external External_library name 'ScrollWindowEx';
+
+  function SetScrollPos(hWnd:HWND; nBar:longint; nPos:longint; bRedraw:WINBOOL):longint; external External_library name 'SetScrollPos';
+
+  function GetScrollPos(hWnd:HWND; nBar:longint):longint; external External_library name 'GetScrollPos';
+
+  function SetScrollRange(hWnd:HWND; nBar:longint; nMinPos:longint; nMaxPos:longint; bRedraw:WINBOOL):WINBOOL; external External_library name 'SetScrollRange';
+
+  function GetScrollRange(hWnd:HWND; nBar:longint; lpMinPos:LPINT; lpMaxPos:LPINT):WINBOOL; external External_library name 'GetScrollRange';
+
+  function ShowScrollBar(hWnd:HWND; wBar:longint; bShow:WINBOOL):WINBOOL; external External_library name 'ShowScrollBar';
+
+  function EnableScrollBar(hWnd:HWND; wSBflags:UINT; wArrows:UINT):WINBOOL; external External_library name 'EnableScrollBar';
+
+  function GetClientRect(hWnd:HWND; lpRect:LPRECT):WINBOOL; external External_library name 'GetClientRect';
+
+  function GetWindowRect(hWnd:HWND; lpRect:LPRECT):WINBOOL; external External_library name 'GetWindowRect';
+
+  function AdjustWindowRect(lpRect:LPRECT; dwStyle:DWORD; bMenu:WINBOOL):WINBOOL; external External_library name 'AdjustWindowRect';
+
+  function AdjustWindowRectEx(lpRect:LPRECT; dwStyle:DWORD; bMenu:WINBOOL; dwExStyle:DWORD):WINBOOL; external External_library name 'AdjustWindowRectEx';
+
+  function SetWindowContextHelpId(_para1:HWND; _para2:DWORD):WINBOOL; external External_library name 'SetWindowContextHelpId';
+
+  function GetWindowContextHelpId(_para1:HWND):DWORD; external External_library name 'GetWindowContextHelpId';
+
+  function SetMenuContextHelpId(_para1:HMENU; _para2:DWORD):WINBOOL; external External_library name 'SetMenuContextHelpId';
+
+  function GetMenuContextHelpId(_para1:HMENU):DWORD; external External_library name 'GetMenuContextHelpId';
+
+  function MessageBeep(uType:UINT):WINBOOL; external External_library name 'MessageBeep';
+
+  function ShowCursor(bShow:WINBOOL):longint; external External_library name 'ShowCursor';
+
+  function SetCursorPos(X:longint; Y:longint):WINBOOL; external External_library name 'SetCursorPos';
+
+  function SetCursor(hCursor:HCURSOR):HCURSOR; external External_library name 'SetCursor';
+
+  function GetCursorPos(lpPoint:LPPOINT):WINBOOL; external External_library name 'GetCursorPos';
+
+  function ClipCursor(var lpRect:RECT):WINBOOL; external External_library name 'ClipCursor';
+
+  function GetClipCursor(lpRect:LPRECT):WINBOOL; external External_library name 'GetClipCursor';
+
+  function GetCursor:HCURSOR; external External_library name 'GetCursor';
+
+  function CreateCaret(hWnd:HWND; hBitmap:HBITMAP; nWidth:longint; nHeight:longint):WINBOOL; external External_library name 'CreateCaret';
+
+  function GetCaretBlinkTime:UINT; external External_library name 'GetCaretBlinkTime';
+
+  function SetCaretBlinkTime(uMSeconds:UINT):WINBOOL; external External_library name 'SetCaretBlinkTime';
+
+  function DestroyCaret:WINBOOL; external External_library name 'DestroyCaret';
+
+  function HideCaret(hWnd:HWND):WINBOOL; external External_library name 'HideCaret';
+
+  function ShowCaret(hWnd:HWND):WINBOOL; external External_library name 'ShowCaret';
+
+  function SetCaretPos(X:longint; Y:longint):WINBOOL; external External_library name 'SetCaretPos';
+
+  function GetCaretPos(lpPoint:LPPOINT):WINBOOL; external External_library name 'GetCaretPos';
+
+  function ClientToScreen(hWnd:HWND; lpPoint:LPPOINT):WINBOOL; external External_library name 'ClientToScreen';
+
+  function ScreenToClient(hWnd:HWND; lpPoint:LPPOINT):WINBOOL; external External_library name 'ScreenToClient';
+
+  function MapWindowPoints(hWndFrom:HWND; hWndTo:HWND; lpPoints:LPPOINT; cPoints:UINT):longint; external External_library name 'MapWindowPoints';
+
+  function WindowFromPoint(Point:POINT):HWND; external External_library name 'WindowFromPoint';
+
+  function ChildWindowFromPoint(hWndParent:HWND; Point:POINT):HWND; external External_library name 'ChildWindowFromPoint';
+
+  function GetSysColor(nIndex:longint):DWORD; external External_library name 'GetSysColor';
+
+  function GetSysColorBrush(nIndex:longint):HBRUSH; external External_library name 'GetSysColorBrush';
+
+  function SetSysColors(cElements:longint; var lpaElements:INT; var lpaRgbValues:COLORREF):WINBOOL; external External_library name 'SetSysColors';
+
+  function DrawFocusRect(hDC:HDC; var lprc:RECT):WINBOOL; external External_library name 'DrawFocusRect';
+
+  function FillRect(hDC:HDC; var lprc:RECT; hbr:HBRUSH):longint; external External_library name 'FillRect';
+
+  function FrameRect(hDC:HDC; var lprc:RECT; hbr:HBRUSH):longint; external External_library name 'FrameRect';
+
+  function InvertRect(hDC:HDC; var lprc:RECT):WINBOOL; external External_library name 'InvertRect';
+
+  function SetRect(lprc:LPRECT; xLeft:longint; yTop:longint; xRight:longint; yBottom:longint):WINBOOL; external External_library name 'SetRect';
+
+  function SetRectEmpty(lprc:LPRECT):WINBOOL; external External_library name 'SetRectEmpty';
+
+  function CopyRect(lprcDst:LPRECT; var lprcSrc:RECT):WINBOOL; external External_library name 'CopyRect';
+
+  function InflateRect(lprc:LPRECT; dx:longint; dy:longint):WINBOOL; external External_library name 'InflateRect';
+
+  function IntersectRect(lprcDst:LPRECT; var lprcSrc1:RECT; var lprcSrc2:RECT):WINBOOL; external External_library name 'IntersectRect';
+
+  function UnionRect(lprcDst:LPRECT; var lprcSrc1:RECT; var lprcSrc2:RECT):WINBOOL; external External_library name 'UnionRect';
+
+  function SubtractRect(lprcDst:LPRECT; var lprcSrc1:RECT; var lprcSrc2:RECT):WINBOOL; external External_library name 'SubtractRect';
+
+  function OffsetRect(lprc:LPRECT; dx:longint; dy:longint):WINBOOL; external External_library name 'OffsetRect';
+
+  function IsRectEmpty(var lprc:RECT):WINBOOL; external External_library name 'IsRectEmpty';
+
+  function EqualRect(var lprc1:RECT; var lprc2:RECT):WINBOOL; external External_library name 'EqualRect';
+
+  function PtInRect(var lprc:RECT; pt:POINT):WINBOOL; external External_library name 'PtInRect';
+
+  function GetWindowWord(hWnd:HWND; nIndex:longint):WORD; external External_library name 'GetWindowWord';
+
+  function SetWindowWord(hWnd:HWND; nIndex:longint; wNewWord:WORD):WORD; external External_library name 'SetWindowWord';
+
+  function GetClassWord(hWnd:HWND; nIndex:longint):WORD; external External_library name 'GetClassWord';
+
+  function SetClassWord(hWnd:HWND; nIndex:longint; wNewWord:WORD):WORD; external External_library name 'SetClassWord';
+
+  function GetDesktopWindow:HWND; external External_library name 'GetDesktopWindow';
+
+  function GetParent(hWnd:HWND):HWND; external External_library name 'GetParent';
+
+  function SetParent(hWndChild:HWND; hWndNewParent:HWND):HWND; external External_library name 'SetParent';
+
+  function EnumChildWindows(hWndParent:HWND; lpEnumFunc:ENUMWINDOWSPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumChildWindows';
+
+  function EnumWindows(lpEnumFunc:ENUMWINDOWSPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumWindows';
+
+  function EnumThreadWindows(dwThreadId:DWORD; lpfn:ENUMWINDOWSPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumThreadWindows';
+
+  function GetTopWindow(hWnd:HWND):HWND; external External_library name 'GetTopWindow';
+
+  function GetWindowThreadProcessId(hWnd:HWND; lpdwProcessId:LPDWORD):DWORD; external External_library name 'GetWindowThreadProcessId';
+
+  function GetLastActivePopup(hWnd:HWND):HWND; external External_library name 'GetLastActivePopup';
+
+  function GetWindow(hWnd:HWND; uCmd:UINT):HWND; external External_library name 'GetWindow';
+
+  function UnhookWindowsHook(nCode:longint; pfnFilterProc:HOOKPROC):WINBOOL; external External_library name 'UnhookWindowsHook';
+
+  function UnhookWindowsHookEx(hhk:HHOOK):WINBOOL; external External_library name 'UnhookWindowsHookEx';
+
+  function CallNextHookEx(hhk:HHOOK; nCode:longint; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'CallNextHookEx';
+
+  function CheckMenuRadioItem(_para1:HMENU; _para2:UINT; _para3:UINT; _para4:UINT; _para5:UINT):WINBOOL; external External_library name 'CheckMenuRadioItem';
+
+  function CreateCursor(hInst:HINSTANCE; xHotSpot:longint; yHotSpot:longint; nWidth:longint; nHeight:longint; 
+             pvANDPlane:pointer; pvXORPlane:pointer):HCURSOR; external External_library name 'CreateCursor';
+
+  function DestroyCursor(hCursor:HCURSOR):WINBOOL; external External_library name 'DestroyCursor';
+
+  function SetSystemCursor(hcur:HCURSOR; anID:DWORD):WINBOOL; external External_library name 'SetSystemCursor';
+
+  function CreateIcon(hInstance:HINSTANCE; nWidth:longint; nHeight:longint; cPlanes:BYTE; cBitsPixel:BYTE; 
+             var lpbANDbits:BYTE; var lpbXORbits:BYTE):HICON; external External_library name 'CreateIcon';
+
+  function DestroyIcon(hIcon:HICON):WINBOOL; external External_library name 'DestroyIcon';
+
+  function LookupIconIdFromDirectory(presbits:PBYTE; fIcon:WINBOOL):longint; external External_library name 'LookupIconIdFromDirectory';
+
+  function LookupIconIdFromDirectoryEx(presbits:PBYTE; fIcon:WINBOOL; cxDesired:longint; cyDesired:longint; Flags:UINT):longint; external External_library name 'LookupIconIdFromDirectoryEx';
+
+  function CreateIconFromResource(presbits:PBYTE; dwResSize:DWORD; fIcon:WINBOOL; dwVer:DWORD):HICON; external External_library name 'CreateIconFromResource';
+
+  function CreateIconFromResourceEx(presbits:PBYTE; dwResSize:DWORD; fIcon:WINBOOL; dwVer:DWORD; cxDesired:longint; 
+             cyDesired:longint; Flags:UINT):HICON; external External_library name 'CreateIconFromResourceEx';
+
+  function CopyImage(_para1:HANDLE; _para2:UINT; _para3:longint; _para4:longint; _para5:UINT):HICON; external External_library name 'CopyImage';
+
+  function CreateIconIndirect(piconinfo:PICONINFO):HICON; external External_library name 'CreateIconIndirect';
+
+  function CopyIcon(hIcon:HICON):HICON; external External_library name 'CopyIcon';
+
+  function GetIconInfo(hIcon:HICON; piconinfo:PICONINFO):WINBOOL; external External_library name 'GetIconInfo';
+
+  function MapDialogRect(hDlg:HWND; lpRect:LPRECT):WINBOOL; external External_library name 'MapDialogRect';
+
+  function SetScrollInfo(_para1:HWND; _para2:longint; _para3:LPCSCROLLINFO; _para4:WINBOOL):longint; external External_library name 'SetScrollInfo';
+
+  function GetScrollInfo(_para1:HWND; _para2:longint; _para3:LPSCROLLINFO):WINBOOL; external External_library name 'GetScrollInfo';
+
+  function TranslateMDISysAccel(hWndClient:HWND; lpMsg:LPMSG):WINBOOL; external External_library name 'TranslateMDISysAccel';
+
+  function ArrangeIconicWindows(hWnd:HWND):UINT; external External_library name 'ArrangeIconicWindows';
+
+  function TileWindows(hwndParent:HWND; wHow:UINT; var lpRect:RECT; cKids:UINT; var lpKids:HWND):WORD; external External_library name 'TileWindows';
+
+  function CascadeWindows(hwndParent:HWND; wHow:UINT; var lpRect:RECT; cKids:UINT; var lpKids:HWND):WORD; external External_library name 'CascadeWindows';
+
+  procedure SetLastErrorEx(dwErrCode:DWORD; dwType:DWORD); external External_library name 'SetLastErrorEx';
+
+  procedure SetDebugErrorLevel(dwLevel:DWORD); external External_library name 'SetDebugErrorLevel';
+
+  function DrawEdge(hdc:HDC; qrc:LPRECT; edge:UINT; grfFlags:UINT):WINBOOL; external External_library name 'DrawEdge';
+
+  function DrawFrameControl(_para1:HDC; _para2:LPRECT; _para3:UINT; _para4:UINT):WINBOOL; external External_library name 'DrawFrameControl';
+
+  function DrawCaption(_para1:HWND; _para2:HDC; var _para3:RECT; _para4:UINT):WINBOOL; external External_library name 'DrawCaption';
+
+  function DrawAnimatedRects(hwnd:HWND; idAni:longint; var lprcFrom:RECT; var lprcTo:RECT):WINBOOL; external External_library name 'DrawAnimatedRects';
+
+  function TrackPopupMenuEx(_para1:HMENU; _para2:UINT; _para3:longint; _para4:longint; _para5:HWND; 
+             _para6:LPTPMPARAMS):WINBOOL; external External_library name 'TrackPopupMenuEx';
+
+  function ChildWindowFromPointEx(_para1:HWND; _para2:POINT; _para3:UINT):HWND; external External_library name 'ChildWindowFromPointEx';
+
+  function DrawIconEx(hdc:HDC; xLeft:longint; yTop:longint; hIcon:HICON; cxWidth:longint; 
+             cyWidth:longint; istepIfAniCur:UINT; hbrFlickerFreeDraw:HBRUSH; diFlags:UINT):WINBOOL; external External_library name 'DrawIconEx';
+
+  function AnimatePalette(_para1:HPALETTE; _para2:UINT; _para3:UINT; var _para4:PALETTEENTRY):WINBOOL; external External_library name 'AnimatePalette';
+
+  function Arc(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint):WINBOOL; external External_library name 'Arc';
+
+  function BitBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:HDC; _para7:longint; _para8:longint; _para9:DWORD):WINBOOL; external External_library name 'BitBlt';
+
+  function CancelDC(_para1:HDC):WINBOOL; external External_library name 'CancelDC';
+
+  function Chord(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint):WINBOOL; external External_library name 'Chord';
+
+  function CloseMetaFile(_para1:HDC):HMETAFILE; external External_library name 'CloseMetaFile';
+
+  function CombineRgn(_para1:HRGN; _para2:HRGN; _para3:HRGN; _para4:longint):longint; external External_library name 'CombineRgn';
+
+  function CreateBitmap(_para1:longint; _para2:longint; _para3:UINT; _para4:UINT; _para5:pointer):HBITMAP; external External_library name 'CreateBitmap';
+
+  function CreateBitmapIndirect(var _para1:BITMAP):HBITMAP; external External_library name 'CreateBitmapIndirect';
+
+  function CreateBrushIndirect(var _para1:LOGBRUSH):HBRUSH; external External_library name 'CreateBrushIndirect';
+
+  function CreateCompatibleBitmap(_para1:HDC; _para2:longint; _para3:longint):HBITMAP; external External_library name 'CreateCompatibleBitmap';
+
+  function CreateDiscardableBitmap(_para1:HDC; _para2:longint; _para3:longint):HBITMAP; external External_library name 'CreateDiscardableBitmap';
+
+  function CreateCompatibleDC(_para1:HDC):HDC; external External_library name 'CreateCompatibleDC';
+
+  function CreateDIBitmap(_para1:HDC; var _para2:BITMAPINFOHEADER; _para3:DWORD; _para4:pointer; var _para5:BITMAPINFO;
+             _para6:UINT):HBITMAP; external External_library name 'CreateDIBitmap';
+
+  function CreateDIBPatternBrush(_para1:HGLOBAL; _para2:UINT):HBRUSH; external External_library name 'CreateDIBPatternBrush';
+
+  function CreateDIBPatternBrushPt(_para1:pointer; _para2:UINT):HBRUSH; external External_library name 'CreateDIBPatternBrushPt';
+
+  function CreateEllipticRgn(_para1:longint; _para2:longint; _para3:longint; _para4:longint):HRGN; external External_library name 'CreateEllipticRgn';
+
+  function CreateEllipticRgnIndirect(var _para1:RECT):HRGN; external External_library name 'CreateEllipticRgnIndirect';
+
+  function CreateHatchBrush(_para1:longint; _para2:COLORREF):HBRUSH; external External_library name 'CreateHatchBrush';
+
+  function CreatePalette(var _para1:LOGPALETTE):HPALETTE; external External_library name 'CreatePalette';
+
+  function CreatePen(_para1:longint; _para2:longint; _para3:COLORREF):HPEN; external External_library name 'CreatePen';
+
+  function CreatePenIndirect(var _para1:LOGPEN):HPEN; external External_library name 'CreatePenIndirect';
+
+  function CreatePolyPolygonRgn(var _para1:POINT; var _para2:INT; _para3:longint; _para4:longint):HRGN; external External_library name 'CreatePolyPolygonRgn';
+
+  function CreatePatternBrush(_para1:HBITMAP):HBRUSH; external External_library name 'CreatePatternBrush';
+
+  function CreateRectRgn(_para1:longint; _para2:longint; _para3:longint; _para4:longint):HRGN; external External_library name 'CreateRectRgn';
+
+  function CreateRectRgnIndirect(var _para1:RECT):HRGN; external External_library name 'CreateRectRgnIndirect';
+
+  function CreateRoundRectRgn(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint):HRGN; external External_library name 'CreateRoundRectRgn';
+
+  function CreateSolidBrush(_para1:COLORREF):HBRUSH; external External_library name 'CreateSolidBrush';
+
+  function DeleteDC(_para1:HDC):WINBOOL; external External_library name 'DeleteDC';
+
+  function DeleteMetaFile(_para1:HMETAFILE):WINBOOL; external External_library name 'DeleteMetaFile';
+
+  function DeleteObject(_para1:HGDIOBJ):WINBOOL; external External_library name 'DeleteObject';
+
+  function DrawEscape(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR):longint; external External_library name 'DrawEscape';
+
+  function Ellipse(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint):WINBOOL; external External_library name 'Ellipse';
+
+  function EnumObjects(_para1:HDC; _para2:longint; _para3:ENUMOBJECTSPROC; _para4:LPARAM):longint; external External_library name 'EnumObjects';
+
+  function EqualRgn(_para1:HRGN; _para2:HRGN):WINBOOL; external External_library name 'EqualRgn';
+
+  function Escape(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR; _para5:LPVOID):longint; external External_library name 'Escape';
+
+  function ExtEscape(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCSTR; _para5:longint; 
+             _para6:LPSTR):longint; external External_library name 'ExtEscape';
+
+  function ExcludeClipRect(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint):longint; external External_library name 'ExcludeClipRect';
+
+  function ExtCreateRegion(var _para1:XFORM; _para2:DWORD; var _para3:RGNDATA):HRGN; external External_library name 'ExtCreateRegion';
+
+  function ExtFloodFill(_para1:HDC; _para2:longint; _para3:longint; _para4:COLORREF; _para5:UINT):WINBOOL; external External_library name 'ExtFloodFill';
+
+  function FillRgn(_para1:HDC; _para2:HRGN; _para3:HBRUSH):WINBOOL; external External_library name 'FillRgn';
+
+  function FloodFill(_para1:HDC; _para2:longint; _para3:longint; _para4:COLORREF):WINBOOL; external External_library name 'FloodFill';
+
+  function FrameRgn(_para1:HDC; _para2:HRGN; _para3:HBRUSH; _para4:longint; _para5:longint):WINBOOL; external External_library name 'FrameRgn';
+
+  function GetROP2(_para1:HDC):longint; external External_library name 'GetROP2';
+
+  function GetAspectRatioFilterEx(_para1:HDC; _para2:LPSIZE):WINBOOL; external External_library name 'GetAspectRatioFilterEx';
+
+  function GetBkColor(_para1:HDC):COLORREF; external External_library name 'GetBkColor';
+
+  function GetBkMode(_para1:HDC):longint; external External_library name 'GetBkMode';
+
+  function GetBitmapBits(_para1:HBITMAP; _para2:LONG; _para3:LPVOID):LONG; external External_library name 'GetBitmapBits';
+
+  function GetBitmapDimensionEx(_para1:HBITMAP; _para2:LPSIZE):WINBOOL; external External_library name 'GetBitmapDimensionEx';
+
+  function GetBoundsRect(_para1:HDC; _para2:LPRECT; _para3:UINT):UINT; external External_library name 'GetBoundsRect';
+
+  function GetBrushOrgEx(_para1:HDC; _para2:LPPOINT):WINBOOL; external External_library name 'GetBrushOrgEx';
+
+  function GetClipBox(_para1:HDC; _para2:LPRECT):longint; external External_library name 'GetClipBox';
+
+  function GetClipRgn(_para1:HDC; _para2:HRGN):longint; external External_library name 'GetClipRgn';
+
+  function GetMetaRgn(_para1:HDC; _para2:HRGN):longint; external External_library name 'GetMetaRgn';
+
+  function GetCurrentObject(_para1:HDC; _para2:UINT):HGDIOBJ; external External_library name 'GetCurrentObject';
+
+  function GetCurrentPositionEx(_para1:HDC; _para2:LPPOINT):WINBOOL; external External_library name 'GetCurrentPositionEx';
+
+  function GetDeviceCaps(_para1:HDC; _para2:longint):longint; external External_library name 'GetDeviceCaps';
+
+  function GetDIBits(_para1:HDC; _para2:HBITMAP; _para3:UINT; _para4:UINT; _para5:LPVOID; 
+             _para6:LPBITMAPINFO; _para7:UINT):longint; external External_library name 'GetDIBits';
+
+  function GetFontData(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:LPVOID; _para5:DWORD):DWORD; external External_library name 'GetFontData';
+
+  function GetGraphicsMode(_para1:HDC):longint; external External_library name 'GetGraphicsMode';
+
+  function GetMapMode(_para1:HDC):longint; external External_library name 'GetMapMode';
+
+  function GetMetaFileBitsEx(_para1:HMETAFILE; _para2:UINT; _para3:LPVOID):UINT; external External_library name 'GetMetaFileBitsEx';
+
+  function GetNearestColor(_para1:HDC; _para2:COLORREF):COLORREF; external External_library name 'GetNearestColor';
+
+  function GetNearestPaletteIndex(_para1:HPALETTE; _para2:COLORREF):UINT; external External_library name 'GetNearestPaletteIndex';
+
+  function GetObjectType(h:HGDIOBJ):DWORD; external External_library name 'GetObjectType';
+
+  function GetPaletteEntries(_para1:HPALETTE; _para2:UINT; _para3:UINT; _para4:LPPALETTEENTRY):UINT; external External_library name 'GetPaletteEntries';
+
+  function GetPixel(_para1:HDC; _para2:longint; _para3:longint):COLORREF; external External_library name 'GetPixel';
+
+  function GetPixelFormat(_para1:HDC):longint; external External_library name 'GetPixelFormat';
+
+  function GetPolyFillMode(_para1:HDC):longint; external External_library name 'GetPolyFillMode';
+
+  function GetRasterizerCaps(_para1:LPRASTERIZER_STATUS; _para2:UINT):WINBOOL; external External_library name 'GetRasterizerCaps';
+
+  function GetRegionData(_para1:HRGN; _para2:DWORD; _para3:LPRGNDATA):DWORD; external External_library name 'GetRegionData';
+
+  function GetRgnBox(_para1:HRGN; _para2:LPRECT):longint; external External_library name 'GetRgnBox';
+
+  function GetStockObject(_para1:longint):HGDIOBJ; external External_library name 'GetStockObject';
+
+  function GetStretchBltMode(_para1:HDC):longint; external External_library name 'GetStretchBltMode';
+
+  function GetSystemPaletteEntries(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPPALETTEENTRY):UINT; external External_library name 'GetSystemPaletteEntries';
+
+  function GetSystemPaletteUse(_para1:HDC):UINT; external External_library name 'GetSystemPaletteUse';
+
+  function GetTextCharacterExtra(_para1:HDC):longint; external External_library name 'GetTextCharacterExtra';
+
+  function GetTextAlign(_para1:HDC):UINT; external External_library name 'GetTextAlign';
+
+  function GetTextColor(_para1:HDC):COLORREF; external External_library name 'GetTextColor';
+
+  function GetTextCharset(hdc:HDC):longint; external External_library name 'GetTextCharset';
+
+  function GetTextCharsetInfo(hdc:HDC; lpSig:LPFONTSIGNATURE; dwFlags:DWORD):longint; external External_library name 'GetTextCharsetInfo';
+
+  function TranslateCharsetInfo(var lpSrc:DWORD; lpCs:LPCHARSETINFO; dwFlags:DWORD):WINBOOL; external External_library name 'TranslateCharsetInfo';
+
+  function GetFontLanguageInfo(_para1:HDC):DWORD; external External_library name 'GetFontLanguageInfo';
+
+  function GetViewportExtEx(_para1:HDC; _para2:LPSIZE):WINBOOL; external External_library name 'GetViewportExtEx';
+
+  function GetViewportOrgEx(_para1:HDC; _para2:LPPOINT):WINBOOL; external External_library name 'GetViewportOrgEx';
+
+  function GetWindowExtEx(_para1:HDC; _para2:LPSIZE):WINBOOL; external External_library name 'GetWindowExtEx';
+
+  function GetWindowOrgEx(_para1:HDC; _para2:LPPOINT):WINBOOL; external External_library name 'GetWindowOrgEx';
+
+  function IntersectClipRect(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint):longint; external External_library name 'IntersectClipRect';
+
+  function InvertRgn(_para1:HDC; _para2:HRGN):WINBOOL; external External_library name 'InvertRgn';
+
+  function LineDDA(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:LINEDDAPROC; 
+             _para6:LPARAM):WINBOOL; external External_library name 'LineDDA';
+
+  function LineTo(_para1:HDC; _para2:longint; _para3:longint):WINBOOL; external External_library name 'LineTo';
+
+  function MaskBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:HDC; _para7:longint; _para8:longint; _para9:HBITMAP; _para10:longint; 
+             _para11:longint; _para12:DWORD):WINBOOL; external External_library name 'MaskBlt';
+
+  function PlgBlt(_para1:HDC; var _para2:POINT; _para3:HDC; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:HBITMAP; _para9:longint; _para10:longint):WINBOOL; external External_library name 'PlgBlt';
+
+  function OffsetClipRgn(_para1:HDC; _para2:longint; _para3:longint):longint; external External_library name 'OffsetClipRgn';
+
+  function OffsetRgn(_para1:HRGN; _para2:longint; _para3:longint):longint; external External_library name 'OffsetRgn';
+
+  function PatBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD):WINBOOL; external External_library name 'PatBlt';
+
+  function Pie(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint):WINBOOL; external External_library name 'Pie';
+
+  function PlayMetaFile(_para1:HDC; _para2:HMETAFILE):WINBOOL; external External_library name 'PlayMetaFile';
+
+  function PaintRgn(_para1:HDC; _para2:HRGN):WINBOOL; external External_library name 'PaintRgn';
+
+  function PolyPolygon(_para1:HDC; var _para2:POINT; var _para3:INT; _para4:longint):WINBOOL; external External_library name 'PolyPolygon';
+
+  function PtInRegion(_para1:HRGN; _para2:longint; _para3:longint):WINBOOL; external External_library name 'PtInRegion';
+
+  function PtVisible(_para1:HDC; _para2:longint; _para3:longint):WINBOOL; external External_library name 'PtVisible';
+
+  function RectInRegion(_para1:HRGN; var _para2:RECT):WINBOOL; external External_library name 'RectInRegion';
+
+  function RectVisible(_para1:HDC; var _para2:RECT):WINBOOL; external External_library name 'RectVisible';
+
+  function Rectangle(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint):WINBOOL; external External_library name 'Rectangle';
+
+  function RestoreDC(_para1:HDC; _para2:longint):WINBOOL; external External_library name 'RestoreDC';
+
+  function RealizePalette(_para1:HDC):UINT; external External_library name 'RealizePalette';
+
+  function RoundRect(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint):WINBOOL; external External_library name 'RoundRect';
+
+  function ResizePalette(_para1:HPALETTE; _para2:UINT):WINBOOL; external External_library name 'ResizePalette';
+
+  function SaveDC(_para1:HDC):longint; external External_library name 'SaveDC';
+
+  function SelectClipRgn(_para1:HDC; _para2:HRGN):longint; external External_library name 'SelectClipRgn';
+
+  function ExtSelectClipRgn(_para1:HDC; _para2:HRGN; _para3:longint):longint; external External_library name 'ExtSelectClipRgn';
+
+  function SetMetaRgn(_para1:HDC):longint; external External_library name 'SetMetaRgn';
+
+  function SelectObject(_para1:HDC; _para2:HGDIOBJ):HGDIOBJ; external External_library name 'SelectObject';
+
+  function SelectPalette(_para1:HDC; _para2:HPALETTE; _para3:WINBOOL):HPALETTE; external External_library name 'SelectPalette';
+
+  function SetBkColor(_para1:HDC; _para2:COLORREF):COLORREF; external External_library name 'SetBkColor';
+
+  function SetBkMode(_para1:HDC; _para2:longint):longint; external External_library name 'SetBkMode';
+
+  function SetBitmapBits(_para1:HBITMAP; _para2:DWORD; _para3:pointer):LONG; external External_library name 'SetBitmapBits';
+
+  function SetBoundsRect(_para1:HDC; var _para2:RECT; _para3:UINT):UINT; external External_library name 'SetBoundsRect';
+
+  function SetDIBits(_para1:HDC; _para2:HBITMAP; _para3:UINT; _para4:UINT; _para5:pointer;
+             var _para6:BITMAPINFO; _para7:UINT):longint; external External_library name 'SetDIBits';
+
+  function SetDIBitsToDevice(_para1:HDC; _para2:longint; _para3:longint; _para4:DWORD; _para5:DWORD; 
+             _para6:longint; _para7:longint; _para8:UINT; _para9:UINT; _para10:pointer;
+             var _para11:BITMAPINFO; _para12:UINT):longint; external External_library name 'SetDIBitsToDevice';
+
+  function SetMapperFlags(_para1:HDC; _para2:DWORD):DWORD; external External_library name 'SetMapperFlags';
+
+  function SetGraphicsMode(hdc:HDC; iMode:longint):longint; external External_library name 'SetGraphicsMode';
+
+  function SetMapMode(_para1:HDC; _para2:longint):longint; external External_library name 'SetMapMode';
+
+  function SetMetaFileBitsEx(_para1:UINT; var _para2:BYTE):HMETAFILE; external External_library name 'SetMetaFileBitsEx';
+
+  function SetPaletteEntries(_para1:HPALETTE; _para2:UINT; _para3:UINT; var _para4:PALETTEENTRY):UINT; external External_library name 'SetPaletteEntries';
+
+  function SetPixel(_para1:HDC; _para2:longint; _para3:longint; _para4:COLORREF):COLORREF; external External_library name 'SetPixel';
+
+  function SetPixelV(_para1:HDC; _para2:longint; _para3:longint; _para4:COLORREF):WINBOOL; external External_library name 'SetPixelV';
+
+  function SetPolyFillMode(_para1:HDC; _para2:longint):longint; external External_library name 'SetPolyFillMode';
+
+  function StretchBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:HDC; _para7:longint; _para8:longint; _para9:longint; _para10:longint; 
+             _para11:DWORD):WINBOOL; external External_library name 'StretchBlt';
+
+  function SetRectRgn(_para1:HRGN; _para2:longint; _para3:longint; _para4:longint; _para5:longint):WINBOOL; external External_library name 'SetRectRgn';
+
+  function StretchDIBits(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:pointer;
+             var _para11:BITMAPINFO; _para12:UINT; _para13:DWORD):longint; external External_library name 'StretchDIBits';
+
+  function SetROP2(_para1:HDC; _para2:longint):longint; external External_library name 'SetROP2';
+
+  function SetStretchBltMode(_para1:HDC; _para2:longint):longint; external External_library name 'SetStretchBltMode';
+
+  function SetSystemPaletteUse(_para1:HDC; _para2:UINT):UINT; external External_library name 'SetSystemPaletteUse';
+
+  function SetTextCharacterExtra(_para1:HDC; _para2:longint):longint; external External_library name 'SetTextCharacterExtra';
+
+  function SetTextColor(_para1:HDC; _para2:COLORREF):COLORREF; external External_library name 'SetTextColor';
+
+  function SetTextAlign(_para1:HDC; _para2:UINT):UINT; external External_library name 'SetTextAlign';
+
+  function SetTextJustification(_para1:HDC; _para2:longint; _para3:longint):WINBOOL; external External_library name 'SetTextJustification';
+
+  function UpdateColors(_para1:HDC):WINBOOL; external External_library name 'UpdateColors';
+
+  function PlayMetaFileRecord(_para1:HDC; _para2:LPHANDLETABLE; _para3:LPMETARECORD; _para4:UINT):WINBOOL; external External_library name 'PlayMetaFileRecord';
+
+  function EnumMetaFile(_para1:HDC; _para2:HMETAFILE; _para3:ENUMMETAFILEPROC; _para4:LPARAM):WINBOOL; external External_library name 'EnumMetaFile';
+
+  function CloseEnhMetaFile(_para1:HDC):HENHMETAFILE; external External_library name 'CloseEnhMetaFile';
+
+  function DeleteEnhMetaFile(_para1:HENHMETAFILE):WINBOOL; external External_library name 'DeleteEnhMetaFile';
+
+  function EnumEnhMetaFile(_para1:HDC; _para2:HENHMETAFILE; _para3:ENHMETAFILEPROC; _para4:LPVOID; var _para5:RECT):WINBOOL; external External_library name 'EnumEnhMetaFile';
+
+  function GetEnhMetaFileHeader(_para1:HENHMETAFILE; _para2:UINT; _para3:LPENHMETAHEADER):UINT; external External_library name 'GetEnhMetaFileHeader';
+
+  function GetEnhMetaFilePaletteEntries(_para1:HENHMETAFILE; _para2:UINT; _para3:LPPALETTEENTRY):UINT; external External_library name 'GetEnhMetaFilePaletteEntries';
+
+  function GetWinMetaFileBits(_para1:HENHMETAFILE; _para2:UINT; _para3:LPBYTE; _para4:INT; _para5:HDC):UINT; external External_library name 'GetWinMetaFileBits';
+
+  function PlayEnhMetaFile(_para1:HDC; _para2:HENHMETAFILE; var _para3:RECT):WINBOOL; external External_library name 'PlayEnhMetaFile';
+
+  function PlayEnhMetaFileRecord(_para1:HDC; _para2:LPHANDLETABLE; var _para3:ENHMETARECORD; _para4:UINT):WINBOOL; external External_library name 'PlayEnhMetaFileRecord';
+
+  function SetEnhMetaFileBits(_para1:UINT; var _para2:BYTE):HENHMETAFILE; external External_library name 'SetEnhMetaFileBits';
+
+  function SetWinMetaFileBits(_para1:UINT; var _para2:BYTE; _para3:HDC; var _para4:METAFILEPICT):HENHMETAFILE; external External_library name 'SetWinMetaFileBits';
+
+  function GdiComment(_para1:HDC; _para2:UINT; var _para3:BYTE):WINBOOL; external External_library name 'GdiComment';
+
+  function AngleArc(_para1:HDC; _para2:longint; _para3:longint; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT):WINBOOL; external External_library name 'AngleArc';
+
+  function PolyPolyline(_para1:HDC; var _para2:POINT; var _para3:DWORD; _para4:DWORD):WINBOOL; external External_library name 'PolyPolyline';
+
+  function GetWorldTransform(_para1:HDC; _para2:LPXFORM):WINBOOL; external External_library name 'GetWorldTransform';
+
+  function SetWorldTransform(_para1:HDC; var _para2:XFORM):WINBOOL; external External_library name 'SetWorldTransform';
+
+  function ModifyWorldTransform(_para1:HDC; var _para2:XFORM; _para3:DWORD):WINBOOL; external External_library name 'ModifyWorldTransform';
+
+  function CombineTransform(_para1:LPXFORM; var _para2:XFORM; var _para3:XFORM):WINBOOL; external External_library name 'CombineTransform';
+
+  function CreateDIBSection(_para1:HDC; var _para2:BITMAPINFO; _para3:UINT; var _para4:pointer; _para5:HANDLE; 
+             _para6:DWORD):HBITMAP; external External_library name 'CreateDIBSection';
+
+  function GetDIBColorTable(_para1:HDC; _para2:UINT; _para3:UINT; var _para4:RGBQUAD):UINT; external External_library name 'GetDIBColorTable';
+
+  function SetDIBColorTable(_para1:HDC; _para2:UINT; _para3:UINT; var _para4:RGBQUAD):UINT; external External_library name 'SetDIBColorTable';
+
+  function SetColorAdjustment(_para1:HDC; var _para2:COLORADJUSTMENT):WINBOOL; external External_library name 'SetColorAdjustment';
+
+  function GetColorAdjustment(_para1:HDC; _para2:LPCOLORADJUSTMENT):WINBOOL; external External_library name 'GetColorAdjustment';
+
+  function CreateHalftonePalette(_para1:HDC):HPALETTE; external External_library name 'CreateHalftonePalette';
+
+  function EndDoc(_para1:HDC):longint; external External_library name 'EndDoc';
+
+  function StartPage(_para1:HDC):longint; external External_library name 'StartPage';
+
+  function EndPage(_para1:HDC):longint; external External_library name 'EndPage';
+
+  function AbortDoc(_para1:HDC):longint; external External_library name 'AbortDoc';
+
+  function SetAbortProc(_para1:HDC; _para2:TABORTPROC):longint; external External_library name 'SetAbortProc';
+
+(*  function AbortPath(_para1:HDC):WINBOOL; external External_library name 'AbortPath';*)
+
+  function ArcTo(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint):WINBOOL; external External_library name 'ArcTo';
+
+  function BeginPath(_para1:HDC):WINBOOL; external External_library name 'BeginPath';
+
+  function CloseFigure(_para1:HDC):WINBOOL; external External_library name 'CloseFigure';
+
+  function EndPath(_para1:HDC):WINBOOL; external External_library name 'EndPath';
+
+  function FillPath(_para1:HDC):WINBOOL; external External_library name 'FillPath';
+
+  function FlattenPath(_para1:HDC):WINBOOL; external External_library name 'FlattenPath';
+
+  function GetPath(_para1:HDC; _para2:LPPOINT; _para3:LPBYTE; _para4:longint):longint; external External_library name 'GetPath';
+
+  function PathToRegion(_para1:HDC):HRGN; external External_library name 'PathToRegion';
+
+  function PolyDraw(_para1:HDC; var _para2:POINT; var _para3:BYTE; _para4:longint):WINBOOL; external External_library name 'PolyDraw';
+
+  function SelectClipPath(_para1:HDC; _para2:longint):WINBOOL; external External_library name 'SelectClipPath';
+
+  function SetArcDirection(_para1:HDC; _para2:longint):longint; external External_library name 'SetArcDirection';
+
+  function SetMiterLimit(_para1:HDC; _para2:FLOAT; _para3:PFLOAT):WINBOOL; external External_library name 'SetMiterLimit';
+
+  function StrokeAndFillPath(_para1:HDC):WINBOOL; external External_library name 'StrokeAndFillPath';
+
+  function StrokePath(_para1:HDC):WINBOOL; external External_library name 'StrokePath';
+
+  function WidenPath(_para1:HDC):WINBOOL; external External_library name 'WidenPath';
+
+  function ExtCreatePen(_para1:DWORD; _para2:DWORD; var _para3:LOGBRUSH; _para4:DWORD; var _para5:DWORD):HPEN; external External_library name 'ExtCreatePen';
+
+  function GetMiterLimit(_para1:HDC; _para2:PFLOAT):WINBOOL; external External_library name 'GetMiterLimit';
+
+  function GetArcDirection(_para1:HDC):longint; external External_library name 'GetArcDirection';
+
+  function MoveToEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL; external External_library name 'MoveToEx';
+
+  function CreatePolygonRgn(var _para1:POINT; _para2:longint; _para3:longint):HRGN; external External_library name 'CreatePolygonRgn';
+
+  function DPtoLP(_para1:HDC; _para2:LPPOINT; _para3:longint):WINBOOL; external External_library name 'DPtoLP';
+
+  function LPtoDP(_para1:HDC; _para2:LPPOINT; _para3:longint):WINBOOL; external External_library name 'LPtoDP';
+
+  function Polygon(_para1:HDC; var _para2:POINT; _para3:longint):WINBOOL; external External_library name 'Polygon';
+
+  function Polyline(_para1:HDC; var _para2:POINT; _para3:longint):WINBOOL; external External_library name 'Polyline';
+
+  function PolyBezier(_para1:HDC; var _para2:POINT; _para3:DWORD):WINBOOL; external External_library name 'PolyBezier';
+
+  function PolyBezierTo(_para1:HDC; var _para2:POINT; _para3:DWORD):WINBOOL; external External_library name 'PolyBezierTo';
+
+  function PolylineTo(_para1:HDC; var _para2:POINT; _para3:DWORD):WINBOOL; external External_library name 'PolylineTo';
+
+  function SetViewportExtEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'SetViewportExtEx';
+
+  function SetViewportOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL; external External_library name 'SetViewportOrgEx';
+
+  function SetWindowExtEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'SetWindowExtEx';
+
+  function SetWindowOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL; external External_library name 'SetWindowOrgEx';
+
+  function OffsetViewportOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL; external External_library name 'OffsetViewportOrgEx';
+
+  function OffsetWindowOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL; external External_library name 'OffsetWindowOrgEx';
+
+  function ScaleViewportExtEx(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:LPSIZE):WINBOOL; external External_library name 'ScaleViewportExtEx';
+
+  function ScaleWindowExtEx(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:LPSIZE):WINBOOL; external External_library name 'ScaleWindowExtEx';
+
+  function SetBitmapDimensionEx(_para1:HBITMAP; _para2:longint; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'SetBitmapDimensionEx';
+
+  function SetBrushOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL; external External_library name 'SetBrushOrgEx';
+
+  function GetDCOrgEx(_para1:HDC; _para2:LPPOINT):WINBOOL; external External_library name 'GetDCOrgEx';
+
+  function FixBrushOrgEx(_para1:HDC; _para2:longint; _para3:longint; _para4:LPPOINT):WINBOOL; external External_library name 'FixBrushOrgEx';
+
+  function UnrealizeObject(_para1:HGDIOBJ):WINBOOL; external External_library name 'UnrealizeObject';
+
+  function GdiFlush:WINBOOL; external External_library name 'GdiFlush';
+
+  function GdiSetBatchLimit(_para1:DWORD):DWORD; external External_library name 'GdiSetBatchLimit';
+
+  function GdiGetBatchLimit:DWORD; external External_library name 'GdiGetBatchLimit';
+
+  function SetICMMode(_para1:HDC; _para2:longint):longint; external External_library name 'SetICMMode';
+
+  function CheckColorsInGamut(_para1:HDC; _para2:LPVOID; _para3:LPVOID; _para4:DWORD):WINBOOL; external External_library name 'CheckColorsInGamut';
+
+  function GetColorSpace(_para1:HDC):HANDLE; external External_library name 'GetColorSpace';
+
+  function SetColorSpace(_para1:HDC; _para2:HCOLORSPACE):WINBOOL; external External_library name 'SetColorSpace';
+
+  function DeleteColorSpace(_para1:HCOLORSPACE):WINBOOL; external External_library name 'DeleteColorSpace';
+
+  function GetDeviceGammaRamp(_para1:HDC; _para2:LPVOID):WINBOOL; external External_library name 'GetDeviceGammaRamp';
+
+  function SetDeviceGammaRamp(_para1:HDC; _para2:LPVOID):WINBOOL; external External_library name 'SetDeviceGammaRamp';
+
+  function ColorMatchToTarget(_para1:HDC; _para2:HDC; _para3:DWORD):WINBOOL; external External_library name 'ColorMatchToTarget';
+
+  function CreatePropertySheetPageA(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE; external External_library name 'CreatePropertySheetPageA';
+
+  function DestroyPropertySheetPage(hPSPage:HPROPSHEETPAGE):WINBOOL; external External_library name 'DestroyPropertySheetPage';
+
+  procedure InitCommonControls; external External_library name 'InitCommonControls';
+
+  { was #define dname(params) def_expr }
+  function ImageList_AddIcon(himl:HIMAGELIST; hicon:HICON):longint;
+    begin
+       ImageList_AddIcon:=ImageList_ReplaceIcon(himl,-(1),hicon);
+    end;
+
+  function ImageList_Create(cx:longint; cy:longint; flags:UINT; cInitial:longint; cGrow:longint):HIMAGELIST; external External_library name 'ImageList_Create';
+
+  function ImageList_Destroy(himl:HIMAGELIST):WINBOOL; external External_library name 'ImageList_Destroy';
+
+  function ImageList_GetImageCount(himl:HIMAGELIST):longint; external External_library name 'ImageList_GetImageCount';
+
+  function ImageList_Add(himl:HIMAGELIST; hbmImage:HBITMAP; hbmMask:HBITMAP):longint; external External_library name 'ImageList_Add';
+
+  function ImageList_ReplaceIcon(himl:HIMAGELIST; i:longint; hicon:HICON):longint; external External_library name 'ImageList_ReplaceIcon';
+
+  function ImageList_SetBkColor(himl:HIMAGELIST; clrBk:COLORREF):COLORREF; external External_library name 'ImageList_SetBkColor';
+
+  function ImageList_GetBkColor(himl:HIMAGELIST):COLORREF; external External_library name 'ImageList_GetBkColor';
+
+  function ImageList_SetOverlayImage(himl:HIMAGELIST; iImage:longint; iOverlay:longint):WINBOOL; external External_library name 'ImageList_SetOverlayImage';
+
+  function ImageList_Draw(himl:HIMAGELIST; i:longint; hdcDst:HDC; x:longint; y:longint; 
+             fStyle:UINT):WINBOOL; external External_library name 'ImageList_Draw';
+
+  function ImageList_Replace(himl:HIMAGELIST; i:longint; hbmImage:HBITMAP; hbmMask:HBITMAP):WINBOOL; external External_library name 'ImageList_Replace';
+
+  function ImageList_AddMasked(himl:HIMAGELIST; hbmImage:HBITMAP; crMask:COLORREF):longint; external External_library name 'ImageList_AddMasked';
+
+  function ImageList_DrawEx(himl:HIMAGELIST; i:longint; hdcDst:HDC; x:longint; y:longint; 
+             dx:longint; dy:longint; rgbBk:COLORREF; rgbFg:COLORREF; fStyle:UINT):WINBOOL; external External_library name 'ImageList_DrawEx';
+
+  function ImageList_Remove(himl:HIMAGELIST; i:longint):WINBOOL; external External_library name 'ImageList_Remove';
+
+  function ImageList_GetIcon(himl:HIMAGELIST; i:longint; flags:UINT):HICON; external External_library name 'ImageList_GetIcon';
+
+  function ImageList_BeginDrag(himlTrack:HIMAGELIST; iTrack:longint; dxHotspot:longint; dyHotspot:longint):WINBOOL; external External_library name 'ImageList_BeginDrag';
+
+  procedure ImageList_EndDrag; external External_library name 'ImageList_EndDrag';
+
+  function ImageList_DragEnter(hwndLock:HWND; x:longint; y:longint):WINBOOL; external External_library name 'ImageList_DragEnter';
+
+  function ImageList_DragLeave(hwndLock:HWND):WINBOOL; external External_library name 'ImageList_DragLeave';
+
+  function ImageList_DragMove(x:longint; y:longint):WINBOOL; external External_library name 'ImageList_DragMove';
+
+  function ImageList_SetDragCursorImage(himlDrag:HIMAGELIST; iDrag:longint; dxHotspot:longint; dyHotspot:longint):WINBOOL; external External_library name 'ImageList_SetDragCursorImage';
+
+  function ImageList_DragShowNolock(fShow:WINBOOL):WINBOOL; external External_library name 'ImageList_DragShowNolock';
+
+  function ImageList_GetDragImage(var ppt:POINT; var pptHotspot:POINT):HIMAGELIST; external External_library name 'ImageList_GetDragImage';
+
+  function ImageList_GetIconSize(himl:HIMAGELIST; var cx:longint; var cy:longint):WINBOOL; external External_library name 'ImageList_GetIconSize';
+
+  function ImageList_SetIconSize(himl:HIMAGELIST; cx:longint; cy:longint):WINBOOL; external External_library name 'ImageList_SetIconSize';
+
+  function ImageList_GetImageInfo(himl:HIMAGELIST; i:longint; var pImageInfo:IMAGEINFO):WINBOOL; external External_library name 'ImageList_GetImageInfo';
+
+  function ImageList_Merge(himl1:HIMAGELIST; i1:longint; himl2:HIMAGELIST; i2:longint; dx:longint; 
+             dy:longint):HIMAGELIST; external External_library name 'ImageList_Merge';
+
+  function CreateToolbarEx(hwnd:HWND; ws:DWORD; wID:UINT; nBitmaps:longint; hBMInst:HINSTANCE; 
+             wBMID:UINT; lpButtons:LPCTBBUTTON; iNumButtons:longint; dxButton:longint; dyButton:longint; 
+             dxBitmap:longint; dyBitmap:longint; uStructSize:UINT):HWND; external External_library name 'CreateToolbarEx';
+
+  function CreateMappedBitmap(hInstance:HINSTANCE; idBitmap:longint; wFlags:UINT; lpColorMap:LPCOLORMAP; iNumMaps:longint):HBITMAP; external External_library name 'CreateMappedBitmap';
+
+  procedure MenuHelp(uMsg:UINT; wParam:WPARAM; lParam:LPARAM; hMainMenu:HMENU; hInst:HINSTANCE; 
+              hwndStatus:HWND; var lpwIDs:UINT); external External_library name 'MenuHelp';
+
+  function ShowHideMenuCtl(hWnd:HWND; uFlags:UINT; lpInfo:LPINT):WINBOOL; external External_library name 'ShowHideMenuCtl';
+
+  procedure GetEffectiveClientRect(hWnd:HWND; lprc:LPRECT; lpInfo:LPINT); external External_library name 'GetEffectiveClientRect';
+
+  function MakeDragList(hLB:HWND):WINBOOL; external External_library name 'MakeDragList';
+
+  procedure DrawInsert(handParent:HWND; hLB:HWND; nItem:longint); external External_library name 'DrawInsert';
+
+  function LBItemFromPt(hLB:HWND; pt:POINT; bAutoScroll:WINBOOL):longint; external External_library name 'LBItemFromPt';
+
+  function CreateUpDownControl(dwStyle:DWORD; x:longint; y:longint; cx:longint; cy:longint; 
+             hParent:HWND; nID:longint; hInst:HINSTANCE; hBuddy:HWND; nUpper:longint; 
+             nLower:longint; nPos:longint):HWND; external External_library name 'CreateUpDownControl';
+
+  function CommDlgExtendedError:DWORD; external External_library name 'CommDlgExtendedError';
+
+  { was #define dname(params) def_expr }
+  function Animate_Create(hWndP:HWND; id:HMENU;dwStyle:DWORD;hInstance:HINSTANCE):HWND;
+    begin
+       Animate_Create:=CreateWindow(LPCSTR(@ANIMATE_CLASS),NULL,dwStyle,0,0,0,0,hwndP,id,hInstance,NULL);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }   
+  function Animate_Open(hwnd : HWND;szName : LPTSTR) : LRESULT;
+    { return type might be wrong }   
+    begin
+       Animate_Open:=SendMessage(hwnd,ACM_OPEN,0,LPARAM(szName));
+    end;
+
+  { was #define dname(params) def_expr }
+  function Animate_Play(hwnd : HWND;from,_to : longint;rep : UINT) : LRESULT;
+    begin
+       Animate_Play:=SendMessage(hwnd,ACM_PLAY,WPARAM(rep),LPARAM(MAKELONG(from,_to)));
+    end;
+
+  { was #define dname(params) def_expr }
+  function Animate_Stop(hwnd : HWND) : LRESULT;
+    begin
+       Animate_Stop:=SendMessage(hwnd,ACM_STOP,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function Animate_Close(hwnd : HWND) : LRESULT;
+    begin
+       Animate_Close:=Animate_Open(hwnd,NULL);
+    end;
+
+  { was #define dname(params) def_expr }
+  function Animate_Seek(hwnd : HWND;frame : longint) : LRESULT;
+    begin
+       Animate_Seek:=Animate_Play(hwnd,frame,frame,1);
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_AddPage(hPropSheetDlg : HWND;hpage : HPROPSHEETPAGE) : LRESULT;
+    begin
+       PropSheet_AddPage:=SendMessage(hPropSheetDlg,PSM_ADDPAGE,0,LPARAM(hpage));
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_Apply(hPropSheetDlg : HWND) : LRESULT;
+    begin
+       PropSheet_Apply:=SendMessage(hPropSheetDlg,PSM_APPLY,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_CancelToClose(hPropSheetDlg : HWND) : LRESULT;
+    begin
+       PropSheet_CancelToClose:=SendMessage(hPropSheetDlg,PSM_CANCELTOCLOSE,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_Changed(hPropSheetDlg,hwndPage : HWND) : LRESULT;
+    begin
+       PropSheet_Changed:=SendMessage(hPropSheetDlg,PSM_CHANGED,WPARAM(hwndPage),0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_GetCurrentPageHwnd(hDlg : HWND) : LRESULT;
+    begin
+       PropSheet_GetCurrentPageHwnd:=SendMessage(hDlg,PSM_GETCURRENTPAGEHWND,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_GetTabControl(hPropSheetDlg : HWND) : LRESULT;
+    begin
+       PropSheet_GetTabControl:=SendMessage(hPropSheetDlg,PSM_GETTABCONTROL,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_IsDialogMessage(hDlg : HWND;pMsg : longint) : LRESULT;
+    begin
+       PropSheet_IsDialogMessage:=SendMessage(hDlg,PSM_ISDIALOGMESSAGE,0,LPARAM(pMsg));
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_PressButton(hPropSheetDlg : HWND;iButton : longint) : LRESULT;
+    begin
+       PropSheet_PressButton:=SendMessage(hPropSheetDlg,PSM_PRESSBUTTON,WPARAM(longint(iButton)),0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_QuerySiblings(hPropSheetDlg : HWND;param1,param2 : longint) : LRESULT;
+    begin
+       PropSheet_QuerySiblings:=SendMessage(hPropSheetDlg,PSM_QUERYSIBLINGS,WPARAM(param1),LPARAM(param2));
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_RebootSystem(hPropSheetDlg : HWND) : LRESULT;
+    begin
+       PropSheet_RebootSystem:=SendMessage(hPropSheetDlg,PSM_REBOOTSYSTEM,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_RemovePage(hPropSheetDlg : HWND;hpage : HPROPSHEETPAGE; index : longint) : LRESULT;
+    { return type might be wrong }   
+    begin
+       PropSheet_RemovePage:=SendMessage(hPropSheetDlg,PSM_REMOVEPAGE,WPARAM(index),LPARAM(hpage));
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_RestartWindows(hPropSheetDlg : HWND) : LRESULT;
+    begin
+       PropSheet_RestartWindows:=SendMessage(hPropSheetDlg,PSM_RESTARTWINDOWS,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetCurSel(hPropSheetDlg : HWND;hpage : HPROPSHEETPAGE; index : longint) : LRESULT;
+    begin
+       PropSheet_SetCurSel:=SendMessage(hPropSheetDlg,PSM_SETCURSEL,WPARAM(index),LPARAM(hpage));
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetCurSelByID(hPropSheetDlg : HWND; id : longint) : LRESULT;
+    begin
+       PropSheet_SetCurSelByID:=SendMessage(hPropSheetDlg,PSM_SETCURSELID,0,LPARAM(id));
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetFinishText(hPropSheetDlg:HWND;lpszText : LPTSTR) : LRESULT;
+    begin
+       PropSheet_SetFinishText:=SendMessage(hPropSheetDlg,PSM_SETFINISHTEXT,0,LPARAM(lpszText));
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetTitle(hPropSheetDlg:HWND;dwStyle:DWORD;lpszText : LPCTSTR) : LRESULT;
+    begin
+       PropSheet_SetTitle:=SendMessage(hPropSheetDlg,PSM_SETTITLE,WPARAM(dwStyle),LPARAM(lpszText));
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_SetWizButtons(hPropSheetDlg:HWND;dwFlags : DWORD) : LRESULT;
+    begin
+       PropSheet_SetWizButtons:=SendMessage(hPropSheetDlg,PSM_SETWIZBUTTONS,0,LPARAM(dwFlags));
+    end;
+
+  { was #define dname(params) def_expr }
+  function PropSheet_UnChanged(hPropSheetDlg:HWND;hwndPage : HWND) : LRESULT;
+    begin
+       PropSheet_UnChanged:=SendMessage(hPropSheetDlg,PSM_UNCHANGED,WPARAM(hwndPage),0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function Header_DeleteItem(hwndHD:HWND;index : longint) : WINBOOL;
+    begin
+       Header_DeleteItem:=WINBOOL(SendMessage(hwndHD,HDM_DELETEITEM,WPARAM(index),0));
+    end;
+
+  { was #define dname(params) def_expr }
+  function Header_GetItem(hwndHD:HWND;index:longint;var hdi : HD_ITEM) : WINBOOL;
+    begin
+       Header_GetItem:=WINBOOL(SendMessage(hwndHD,HDM_GETITEM,WPARAM(index),LPARAM(@hdi)));
+    end;
+
+  { was #define dname(params) def_expr }
+  function Header_GetItemCount(hwndHD : HWND) : longint;
+    begin
+       Header_GetItemCount:=longint(SendMessage(hwndHD,HDM_GETITEMCOUNT,0,0));
+    end;
+
+  { was #define dname(params) def_expr }
+  function Header_InsertItem(hwndHD:HWND;index : longint;var hdi : HD_ITEM) : longint;
+    begin
+       Header_InsertItem:=longint(SendMessage(hwndHD,HDM_INSERTITEM,WPARAM(index),LPARAM(@hdi)));
+    end;
+
+  { was #define dname(params) def_expr }
+  function Header_Layout(hwndHD:HWND;var layout : HD_LAYOUT) : WINBOOL;
+    begin
+       Header_Layout:=WINBOOL(SendMessage(hwndHD,HDM_LAYOUT,0,LPARAM(@layout)));
+    end;
+
+  { was #define dname(params) def_expr }
+  function Header_SetItem(hwndHD:HWND;index : longint;var hdi : HD_ITEM) : WINBOOL;
+    begin
+       Header_SetItem:=WINBOOL(SendMessage(hwndHD,HDM_SETITEM,WPARAM(index),LPARAM(@hdi)));
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_Arrange(hwndLV:HWND;code : UINT) : LRESULT;
+    begin
+       ListView_Arrange:=SendMessage(hwndLV,LVM_ARRANGE,WPARAM(UINT(code)),0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_CreateDragImage(hwnd:HWND;i : longint;lpptUpLeft : LPPOINT) : LRESULT;
+    begin
+       ListView_CreateDragImage:=SendMessage(hwnd,LVM_CREATEDRAGIMAGE,WPARAM(i),LPARAM(lpptUpLeft));
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_DeleteAllItems(hwnd : HWND) : LRESULT;
+    begin
+       ListView_DeleteAllItems:=SendMessage(hwnd,LVM_DELETEALLITEMS,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_DeleteColumn(hwnd:HWND;iCol : longint) : LRESULT;
+    begin
+       ListView_DeleteColumn:=SendMessage(hwnd,LVM_DELETECOLUMN,WPARAM(iCol),0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_DeleteItem(hwnd:HWND;iItem : longint) : LRESULT;
+    begin
+       ListView_DeleteItem:=SendMessage(hwnd,LVM_DELETEITEM,WPARAM(iItem),0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_EditLabel(hwndLV:HWND;i : longint) : LRESULT;
+    begin
+       ListView_EditLabel:=SendMessage(hwndLV,LVM_EDITLABEL,WPARAM(longint(i)),0);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument fPartialOK unclear PM }
+  function ListView_EnsureVisible(hwndLV:HWND;i,fPartialOK : longint) : LRESULT;
+    begin
+       ListView_EnsureVisible:=SendMessage(hwndLV,LVM_ENSUREVISIBLE,WPARAM(i),MAKELPARAM(fPartialOK,0));
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_FindItem(hwnd:HWND;iStart : longint;var lvfi : LV_FINDINFO) : longint;
+    begin
+       ListView_FindItem:=SendMessage(hwnd,LVM_FINDITEM,WPARAM(iStart),LPARAM(@lvfi));
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetBkColor(hwnd : HWND) : LRESULT;
+    begin
+       ListView_GetBkColor:=SendMessage(hwnd,LVM_GETBKCOLOR,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetCallbackMask(hwnd : HWND) : LRESULT;
+    begin
+       ListView_GetCallbackMask:=SendMessage(hwnd,LVM_GETCALLBACKMASK,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetColumn(hwnd:HWND;iCol : longint;var col : LV_COLUMN) : LRESULT;
+    begin
+       ListView_GetColumn:=SendMessage(hwnd,LVM_GETCOLUMN,WPARAM(iCol),LPARAM(@col));
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetColumnWidth(hwnd:HWND;iCol : longint) : LRESULT;
+    begin
+       ListView_GetColumnWidth:=SendMessage(hwnd,LVM_GETCOLUMNWIDTH,WPARAM(iCol),0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetCountPerPage(hwndLV : HWND) : LRESULT;
+    begin
+       ListView_GetCountPerPage:=SendMessage(hwndLV,LVM_GETCOUNTPERPAGE,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetEditControl(hwndLV : HWND) : LRESULT;
+    begin
+       ListView_GetEditControl:=SendMessage(hwndLV,LVM_GETEDITCONTROL,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetImageList(hwnd:HWND;iImageList : INT) : LRESULT;
+    begin
+       ListView_GetImageList:=SendMessage(hwnd,LVM_GETIMAGELIST,WPARAM(iImageList),0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetISearchString(hwndLV:HWND;lpsz : LPTSTR) : LRESULT;
+    begin
+       ListView_GetISearchString:=SendMessage(hwndLV,LVM_GETISEARCHSTRING,0,LPARAM(lpsz));
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetItem(hwnd:HWND;var item : LV_ITEM) : LRESULT;
+    begin
+       ListView_GetItem:=SendMessage(hwnd,LVM_GETITEM,0,LPARAM(@item));
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetItemCount(hwnd : HWND) : LRESULT;
+    begin
+       ListView_GetItemCount:=SendMessage(hwnd,LVM_GETITEMCOUNT,0,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function ListView_GetItemPosition(hwndLV:HWND;i : longint;var pt : POINT) : longint;
+    begin
+       ListView_GetItemPosition:=SendMessage(hwndLV,LVM_GETITEMPOSITION,WPARAM(longint(i)),LPARAM(@pt));
+    end;
+
+    { was #define dname(params) def_expr }
+    { argument fSmall type unsure PM }
+    function ListView_GetItemSpacing(hwndLV:HWND;fSmall : longint) : LRESULT;
+      begin
+         ListView_GetItemSpacing:=SendMessage(hwndLV,LVM_GETITEMSPACING,fSmall,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetItemState(hwndLV:HWND;i,mask : longint) : LRESULT;
+      begin
+         ListView_GetItemState:=SendMessage(hwndLV,LVM_GETITEMSTATE,WPARAM(i),LPARAM(mask));
+      end;
+
+  {inserted manually PM }
+  function ListView_GetNextItem(hwnd:HWND; iStart, flags : longint) : LRESULT;
+    begin
+       ListView_GetNextItem:=SendMessage(hwnd, LVM_GETNEXTITEM, WPARAM(iStart), LPARAM(flags));
+    end;
+    
+    { was #define dname(params) def_expr }
+    function ListView_GetOrigin(hwndLV:HWND;var pt : POINT) : LRESULT;
+      begin
+         ListView_GetOrigin:=SendMessage(hwndLV,LVM_GETORIGIN,WPARAM(0),LPARAM(@pt));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetSelectedCount(hwndLV : HWND) : LRESULT;
+      begin
+         ListView_GetSelectedCount:=SendMessage(hwndLV,LVM_GETSELECTEDCOUNT,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetStringWidth(hwndLV:HWND;psz : LPCTSTR) : LRESULT;
+      begin
+         ListView_GetStringWidth:=SendMessage(hwndLV,LVM_GETSTRINGWIDTH,0,LPARAM(psz));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetTextBkColor(hwnd : HWND) : LRESULT;
+      begin
+         ListView_GetTextBkColor:=SendMessage(hwnd,LVM_GETTEXTBKCOLOR,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetTextColor(hwnd : HWND) : LRESULT;
+      begin
+         ListView_GetTextColor:=SendMessage(hwnd,LVM_GETTEXTCOLOR,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetTopIndex(hwndLV : HWND) : LRESULT;
+      begin
+         ListView_GetTopIndex:=SendMessage(hwndLV,LVM_GETTOPINDEX,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_GetViewRect(hwnd:HWND;var rc : RECT) : LRESULT;
+      begin
+         ListView_GetViewRect:=SendMessage(hwnd,LVM_GETVIEWRECT,0,LPARAM(@rc));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_HitTest(hwndLV:HWND;var info : LV_HITTESTINFO) : LRESULT;
+      begin
+         ListView_HitTest:=SendMessage(hwndLV,LVM_HITTEST,0,LPARAM(@info));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_InsertColumn(hwnd:HWND;iCol : longint;var col : LV_COLUMN) : LRESULT;
+      begin
+         ListView_InsertColumn:=SendMessage(hwnd,LVM_INSERTCOLUMN,WPARAM(iCol),LPARAM(@col));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_InsertItem(hwnd:HWND;var item : LV_ITEM) : LRESULT;
+      begin
+         ListView_InsertItem:=SendMessage(hwnd,LVM_INSERTITEM,0,LPARAM(@item));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_RedrawItems(hwndLV:HWND;iFirst,iLast : longint) : LRESULT;
+      begin
+         ListView_RedrawItems:=SendMessage(hwndLV,LVM_REDRAWITEMS,WPARAM(iFirst),LPARAM(iLast));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_Scroll(hwndLV:HWND;dx,dy : longint) : LRESULT;
+      begin
+         ListView_Scroll:=SendMessage(hwndLV,LVM_SCROLL,WPARAM(dx),LPARAM(dy));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetBkColor(hwnd:HWND;clrBk : COLORREF) : LRESULT;
+      begin
+         ListView_SetBkColor:=SendMessage(hwnd,LVM_SETBKCOLOR,0,LPARAM(clrBk));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetCallbackMask(hwnd:HWND;mask : UINT) : LRESULT;
+      begin
+         ListView_SetCallbackMask:=SendMessage(hwnd,LVM_SETCALLBACKMASK,WPARAM(mask),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetColumn(hwnd:HWND;iCol : longint; var col : LV_COLUMN) : LRESULT;
+      begin
+         ListView_SetColumn:=SendMessage(hwnd,LVM_SETCOLUMN,WPARAM(iCol),LPARAM(@col));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetColumnWidth(hwnd:HWND;iCol,cx : longint) : LRESULT;
+      begin
+         ListView_SetColumnWidth:=SendMessage(hwnd,LVM_SETCOLUMNWIDTH,WPARAM(iCol),MAKELPARAM(cx,0));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetImageList(hwnd:HWND;himl : longint;iImageList : HIMAGELIST) : LRESULT;
+      begin
+         ListView_SetImageList:=SendMessage(hwnd,LVM_SETIMAGELIST,WPARAM(iImageList),LPARAM(UINT(himl)));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetItem(hwnd:HWND;var item : LV_ITEM) : LRESULT;
+      begin
+         ListView_SetItem:=SendMessage(hwnd,LVM_SETITEM,0,LPARAM(@item));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetItemCount(hwndLV:HWND;cItems : longint) : LRESULT;
+      begin
+         ListView_SetItemCount:=SendMessage(hwndLV,LVM_SETITEMCOUNT,WPARAM(cItems),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    { argument types are unknown }
+    { return type might be wrong }   
+    function ListView_SetItemPosition(hwndLV:HWND;i,x,y : longint) : LRESULT;
+      { return type might be wrong }   
+      begin
+         ListView_SetItemPosition:=SendMessage(hwndLV,LVM_SETITEMPOSITION,WPARAM(i),MAKELPARAM(x,y));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetItemPosition32(hwndLV:HWND;i,x,y : longint) : LRESULT;
+      var ptNewPos : POINT;
+      begin
+         ptNewPos.x:=x;
+         ptNewPos.y:=y;
+         ListView_SetItemPosition32:=SendMessage(hwndLV, LVM_SETITEMPOSITION32, WPARAM(i),LPARAM(@ptNewPos));
+      end;
+    function ListView_SetItemState(hwndLV:HWND; i, data, mask:longint) : LRESULT;
+      var _gnu_lvi : LV_ITEM;
+      begin
+         _gnu_lvi.stateMask:=mask;
+         _gnu_lvi.state:=data;
+         ListView_SetItemState:=SendMessage(hwndLV, LVM_SETITEMSTATE, WPARAM(i),
+	      LPARAM(@_gnu_lvi));
+      end;
+
+(* error
+#define ListView_SetItemState(hwndLV, i, data, mask) \
+{ LV_ITEM _gnu_lvi;\
+  _gnu_lvi.stateMask = mask;\
+  _gnu_lvi.state = data;\
+  SendMessage((hwndLV), LVM_SETITEMSTATE, (WPARAM)i, \
+	      (LPARAM)(LV_ITEM * )&_gnu_lvi);\
+}
+in declaration at line 6817
+ error *)
+
+    function ListView_SetItemText(hwndLV:HWND; i, iSubItem_:longint;pszText_ : LPTSTR) : LRESULT;
+      var _gnu_lvi : LV_ITEM;
+      begin
+        _gnu_lvi.iSubItem:=iSubItem_;
+        _gnu_lvi.pszText:=pszText_;
+         ListView_SetItemText:=SendMessage(hwndLV, LVM_SETITEMTEXT, WPARAM(i),
+	      LPARAM(@_gnu_lvi));
+      end;
+(* error
+#define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_) \
+{ LV_ITEM _gnu_lvi;\
+  _gnu_lvi.iSubItem = iSubItem_;\
+  _gnu_lvi.pszText = pszText_;\
+  SendMessage((hwndLV), LVM_SETITEMTEXT, (WPARAM)i, \
+	      (LPARAM)(LV_ITEM * )&_gnu_lvi);\
+}
+in define line 6826 *)
+
+    { was #define dname(params) def_expr }
+    function ListView_SetTextBkColor(hwnd:HWND;clrTextBk : COLORREF) : LRESULT;
+      begin
+         ListView_SetTextBkColor:=SendMessage(hwnd,LVM_SETTEXTBKCOLOR,0,LPARAM(clrTextBk));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SetTextColor(hwnd:HWND;clrText : COLORREF) : LRESULT;
+      begin
+         ListView_SetTextColor:=SendMessage(hwnd,LVM_SETTEXTCOLOR,0,LPARAM(clrText));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_SortItems(hwndLV:HWND;_pfnCompare:PFNLVCOMPARE;_lPrm : LPARAM) : LRESULT;
+      begin
+         ListView_SortItems:=SendMessage(hwndLV,LVM_SORTITEMS,WPARAM(_lPrm),LPARAM(_pfnCompare));
+      end;
+
+    { was #define dname(params) def_expr }
+    function ListView_Update(hwndLV:HWND;i : longint) : LRESULT;
+      begin
+         ListView_Update:=SendMessage(hwndLV,LVM_UPDATE,WPARAM(i),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_InsertItem(hwnd:HWND;lpis : LPTV_INSERTSTRUCT) : LRESULT;
+      begin
+         TreeView_InsertItem:=SendMessage(hwnd,TVM_INSERTITEM,0,LPARAM(lpis));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_DeleteItem(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_DeleteItem:=SendMessage(hwnd,TVM_DELETEITEM,0,LPARAM(hitem));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_DeleteAllItems(hwnd : HWND) : LRESULT;
+      begin
+         TreeView_DeleteAllItems:=SendMessage(hwnd,TVM_DELETEITEM,0,LPARAM(TVI_ROOT));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_Expand(hwnd:HWND;hitem:HTREEITEM;code : longint) : LRESULT;
+      begin
+         TreeView_Expand:=SendMessage(hwnd,TVM_EXPAND,WPARAM(code),LPARAM(hitem));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetCount(hwnd : HWND) : LRESULT;
+      begin
+         TreeView_GetCount:=SendMessage(hwnd,TVM_GETCOUNT,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetIndent(hwnd : HWND) : LRESULT;
+      begin
+         TreeView_GetIndent:=SendMessage(hwnd,TVM_GETINDENT,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SetIndent(hwnd:HWND;indent : longint) : LRESULT;
+      begin
+         TreeView_SetIndent:=SendMessage(hwnd,TVM_SETINDENT,WPARAM(indent),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetImageList(hwnd:HWND;iImage : WPARAM) : LRESULT;
+      begin
+         TreeView_GetImageList:=SendMessage(hwnd,TVM_GETIMAGELIST,iImage,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SetImageList(hwnd:HWND;himl:HIMAGELIST;iImage : WPARAM) : LRESULT;
+      begin
+         TreeView_SetImageList:=SendMessage(hwnd,TVM_SETIMAGELIST,iImage,LPARAM(UINT(himl)));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetNextItem(hwnd:HWND;hitem:HTREEITEM;code : longint) : LRESULT;
+      begin
+         TreeView_GetNextItem:=SendMessage(hwnd,TVM_GETNEXTITEM,WPARAM(code),LPARAM(hitem));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetChild(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_GetChild:=TreeView_GetNextItem(hwnd,hitem,TVGN_CHILD);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetNextSibling(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_GetNextSibling:=TreeView_GetNextItem(hwnd,hitem,TVGN_NEXT);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetPrevSibling(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_GetPrevSibling:=TreeView_GetNextItem(hwnd,hitem,TVGN_PREVIOUS);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetParent(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_GetParent:=TreeView_GetNextItem(hwnd,hitem,TVGN_PARENT);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetFirstVisible(hwnd : HWND) : LRESULT;
+      begin
+         TreeView_GetFirstVisible:=TreeView_GetNextItem(hwnd,HTREEITEM(NULL),TVGN_FIRSTVISIBLE);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetNextVisible(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_GetNextVisible:=TreeView_GetNextItem(hwnd,hitem,TVGN_NEXTVISIBLE);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetPrevVisible(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_GetPrevVisible:=TreeView_GetNextItem(hwnd,hitem,TVGN_PREVIOUSVISIBLE);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetSelection(hwnd : HWND) : LRESULT;
+      begin
+         TreeView_GetSelection:=TreeView_GetNextItem(hwnd,HTREEITEM(NULL),TVGN_CARET);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetDropHilight(hwnd : HWND) : LRESULT;
+      begin
+         TreeView_GetDropHilight:=TreeView_GetNextItem(hwnd,HTREEITEM(NULL),TVGN_DROPHILITE);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetRoot(hwnd : HWND) : LRESULT;
+      begin
+         TreeView_GetRoot:=TreeView_GetNextItem(hwnd,HTREEITEM(NULL),TVGN_ROOT);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_Select(hwnd:HWND;hitem:HTREEITEM;code : longint) : LRESULT;
+      begin
+         TreeView_Select:=SendMessage(hwnd,TVM_SELECTITEM,WPARAM(code),LPARAM(hitem));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SelectItem(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_SelectItem:=TreeView_Select(hwnd,hitem,TVGN_CARET);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SelectDropTarget(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_SelectDropTarget:=TreeView_Select(hwnd,hitem,TVGN_DROPHILITE);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SelectSetFirstVisible(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_SelectSetFirstVisible:=TreeView_Select(hwnd,hitem,TVGN_FIRSTVISIBLE);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetItem(hwnd:HWND;var item : TV_ITEM) : LRESULT;
+      begin
+         TreeView_GetItem:=SendMessage(hwnd,TVM_GETITEM,0,LPARAM(@item));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SetItem(hwnd:HWND;var item : TV_ITEM) : LRESULT;
+      begin
+         TreeView_SetItem:=SendMessage(hwnd,TVM_SETITEM,0,LPARAM(@item));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_EditLabel(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_EditLabel:=SendMessage(hwnd,TVM_EDITLABEL,0,LPARAM(hitem));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetEditControl(hwnd : HWND) : LRESULT;
+      begin
+         TreeView_GetEditControl:=SendMessage(hwnd,TVM_GETEDITCONTROL,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetVisibleCount(hwnd : HWND) : LRESULT;
+      begin
+         TreeView_GetVisibleCount:=SendMessage(hwnd,TVM_GETVISIBLECOUNT,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_HitTest(hwnd:HWND;lpht : LPTV_HITTESTINFO) : LRESULT;
+      begin
+         TreeView_HitTest:=SendMessage(hwnd,TVM_HITTEST,0,LPARAM(lpht));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_CreateDragImage(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_CreateDragImage:=SendMessage(hwnd,TVM_CREATEDRAGIMAGE,0,LPARAM(hitem));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SortChildren(hwnd:HWND;hitem:HTREEITEM;recurse : longint) : LRESULT;
+      begin
+         TreeView_SortChildren:=SendMessage(hwnd,TVM_SORTCHILDREN,WPARAM(recurse),LPARAM(hitem));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_EnsureVisible(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
+      begin
+         TreeView_EnsureVisible:=SendMessage(hwnd,TVM_ENSUREVISIBLE,0,LPARAM(hitem));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_SortChildrenCB(hwnd:HWND;psort:LPTV_SORTCB;recurse : longint) : LRESULT;
+      begin
+         TreeView_SortChildrenCB:=SendMessage(hwnd,TVM_SORTCHILDRENCB,WPARAM(recurse),LPARAM(psort));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_EndEditLabelNow(hwnd:HWND;fCancel : longint) : LRESULT;
+      begin
+         TreeView_EndEditLabelNow:=SendMessage(hwnd,TVM_ENDEDITLABELNOW,WPARAM(fCancel),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TreeView_GetISearchString(hwndTV:HWND;lpsz : LPTSTR) : LRESULT;
+      begin
+         TreeView_GetISearchString:=SendMessage(hwndTV,TVM_GETISEARCHSTRING,0,LPARAM(lpsz));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetImageList(hwnd : HWND) : LRESULT;
+      begin
+         TabCtrl_GetImageList:=SendMessage(hwnd,TCM_GETIMAGELIST,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetImageList(hwnd:HWND;himl : HIMAGELIST) : LRESULT;
+      begin
+         TabCtrl_SetImageList:=SendMessage(hwnd,TCM_SETIMAGELIST,0,LPARAM(UINT(himl)));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetItemCount(hwnd : HWND) : LRESULT;
+      begin
+         TabCtrl_GetItemCount:=SendMessage(hwnd,TCM_GETITEMCOUNT,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetItem(hwnd:HWND;iItem : longint;var item : TC_ITEM) : LRESULT;
+      begin
+         TabCtrl_GetItem:=SendMessage(hwnd,TCM_GETITEM,WPARAM(iItem),LPARAM(@item));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetItem(hwnd:HWND;iItem : longint;var item : TC_ITEM) : LRESULT;
+      begin
+         TabCtrl_SetItem:=SendMessage(hwnd,TCM_SETITEM,WPARAM(iItem),LPARAM(@item));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_InsertItem(hwnd:HWND;iItem : longint;var item : TC_ITEM) : LRESULT;
+      begin
+         TabCtrl_InsertItem:=SendMessage(hwnd,TCM_INSERTITEM,WPARAM(iItem),LPARAM(@item));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_DeleteItem(hwnd:HWND;i : longint) : LRESULT;
+      begin
+         TabCtrl_DeleteItem:=SendMessage(hwnd,TCM_DELETEITEM,WPARAM(i),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_DeleteAllItems(hwnd : HWND) : LRESULT;
+      begin
+         TabCtrl_DeleteAllItems:=SendMessage(hwnd,TCM_DELETEALLITEMS,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetItemRect(hwnd:HWND;i : longint;var rc : RECT) : LRESULT;
+      begin
+         TabCtrl_GetItemRect:=SendMessage(hwnd,TCM_GETITEMRECT,WPARAM(longint(i)),LPARAM(@rc));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetCurSel(hwnd : HWND) : LRESULT;
+      begin
+         TabCtrl_GetCurSel:=SendMessage(hwnd,TCM_GETCURSEL,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetCurSel(hwnd:HWND;i : longint) : LRESULT;
+      begin
+         TabCtrl_SetCurSel:=SendMessage(hwnd,TCM_SETCURSEL,WPARAM(i),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_HitTest(hwndTC:HWND;var info : TC_HITTESTINFO) : LRESULT;
+      begin
+         TabCtrl_HitTest:=SendMessage(hwndTC,TCM_HITTEST,0,LPARAM(@info));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetItemExtra(hwndTC:HWND;cb : longint) : LRESULT;
+      begin
+         TabCtrl_SetItemExtra:=SendMessage(hwndTC,TCM_SETITEMEXTRA,WPARAM(cb),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_AdjustRect(hwnd:HWND;bLarger:WINBOOL;var rc : RECT) : LRESULT;
+      begin
+         TabCtrl_AdjustRect:=SendMessage(hwnd,TCM_ADJUSTRECT,WPARAM(bLarger),LPARAM(@rc));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetItemSize(hwnd:HWND;x,y : longint) : LRESULT;
+      begin
+         TabCtrl_SetItemSize:=SendMessage(hwnd,TCM_SETITEMSIZE,0,MAKELPARAM(x,y));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_RemoveImage(hwnd:HWND;i : WPARAM) : LRESULT;
+      begin
+         TabCtrl_RemoveImage:=SendMessage(hwnd,TCM_REMOVEIMAGE,i,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetPadding(hwnd:HWND;cx,cy : longint) : LRESULT;
+      begin
+         TabCtrl_SetPadding:=SendMessage(hwnd,TCM_SETPADDING,0,MAKELPARAM(cx,cy));
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetRowCount(hwnd : HWND) : LRESULT;
+      begin
+         TabCtrl_GetRowCount:=SendMessage(hwnd,TCM_GETROWCOUNT,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetToolTips(hwnd : HWND) : LRESULT;
+      begin
+         TabCtrl_GetToolTips:=SendMessage(hwnd,TCM_GETTOOLTIPS,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetToolTips(hwnd:HWND;hwndTT : longint) : LRESULT;
+      begin
+         TabCtrl_SetToolTips:=SendMessage(hwnd,TCM_SETTOOLTIPS,WPARAM(hwndTT),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_GetCurFocus(hwnd : HWND) : LRESULT;
+      begin
+         TabCtrl_GetCurFocus:=SendMessage(hwnd,TCM_GETCURFOCUS,0,0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function TabCtrl_SetCurFocus(hwnd:HWND;i : longint) : LRESULT;
+      begin
+         TabCtrl_SetCurFocus:=SendMessage(hwnd,TCM_SETCURFOCUS,i,0);
+      end;
+
+      { added by hand not found in C headers PM }
+  function SNDMSG(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+    begin
+       SNDMSG:=SendMessage(hWnd,Msg,wParam,lParam);
+    end;
+    
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetSpecA(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetSpecA:=SNDMSG(_hdlg,CDM_GETSPEC,WPARAM(_cbmax),LPARAM(_psz));
+      end;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetSpecW(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetSpecW:=SNDMSG(_hdlg,CDM_GETSPEC,WPARAM(_cbmax),LPARAM(_psz));
+      end;
+
+{$ifndef Unicode}
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetSpec(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetSpec:=SNDMSG(_hdlg,CDM_GETSPEC,WPARAM(_cbmax),LPARAM(_psz));
+      end;
+{$else Unicode}
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetSpec(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetSpec:=SNDMSG(_hdlg,CDM_GETSPEC,WPARAM(_cbmax),LPARAM(_psz));
+      end;
+{$endif Unicode}
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFilePathA(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetFilePathA:=SNDMSG(_hdlg,CDM_GETFILEPATH,WPARAM(_cbmax),LPARAM(_psz));
+      end;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFilePathW(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetFilePathW:=SNDMSG(_hdlg,CDM_GETFILEPATH,WPARAM(_cbmax),LPARAM(LPWSTR(_psz)));
+      end;
+
+{$ifndef Unicode}
+    function CommDlg_OpenSave_GetFilePath(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetFilePath:=SNDMSG(_hdlg,CDM_GETFILEPATH,WPARAM(_cbmax),LPARAM(_psz));
+      end;
+{$else Unicode}
+    function CommDlg_OpenSave_GetFilePath(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetFilePath:=SNDMSG(_hdlg,CDM_GETFILEPATH,WPARAM(_cbmax),LPARAM(_psz));
+      end;
+{$endif Unicode}
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFolderPathA(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetFolderPathA:=SNDMSG(_hdlg,CDM_GETFOLDERPATH,WPARAM(_cbmax),LPARAM(LPSTR(_psz)));
+      end;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFolderPathW(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetFolderPathW:=SNDMSG(_hdlg,CDM_GETFOLDERPATH,WPARAM(_cbmax),LPARAM(LPWSTR(_psz)));
+      end;
+
+{$ifndef Unicode}
+    function CommDlg_OpenSave_GetFolderPath(_hdlg:HWND;_psz:LPSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetFolderPath:=SNDMSG(_hdlg,CDM_GETFOLDERPATH,WPARAM(_cbmax),LPARAM(LPSTR(_psz)));
+      end;
+{$else Unicode}
+    function CommDlg_OpenSave_GetFolderPath(_hdlg:HWND;_psz:LPWSTR;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetFolderPath:=SNDMSG(_hdlg,CDM_GETFOLDERPATH,WPARAM(_cbmax),LPARAM(LPWSTR(_psz)));
+      end;
+{$endif Unicode}
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_GetFolderIDList(_hdlg:HWND;_pidl:LPVOID;_cbmax : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_GetFolderIDList:=SNDMSG(_hdlg,CDM_GETFOLDERIDLIST,WPARAM(_cbmax),LPARAM(_pidl));
+      end;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_SetControlText(_hdlg:HWND;_id : longint;_text : LPSTR) : LRESULT;
+      begin
+         CommDlg_OpenSave_SetControlText:=SNDMSG(_hdlg,CDM_SETCONTROLTEXT,WPARAM(_id),LPARAM(_text));
+      end;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_HideControl(_hdlg:HWND;_id : longint) : LRESULT;
+      begin
+         CommDlg_OpenSave_HideControl:=SNDMSG(_hdlg,CDM_HIDECONTROL,WPARAM(_id),0);
+      end;
+
+    { was #define dname(params) def_expr }
+    function CommDlg_OpenSave_SetDefExt(_hdlg:HWND;_pszext : LPSTR) : LRESULT;
+      begin
+         CommDlg_OpenSave_SetDefExt:=SNDMSG(_hdlg,CDM_SETDEFEXT,0,LPARAM(_pszext));
+      end;
+
+    function RegCloseKey(hKey:HKEY):LONG; external External_library name 'RegCloseKey';
+
+    function RegSetKeySecurity(hKey:HKEY; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):LONG; external External_library name 'RegSetKeySecurity';
+
+    function RegFlushKey(hKey:HKEY):LONG; external External_library name 'RegFlushKey';
+
+    function RegGetKeySecurity(hKey:HKEY; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; lpcbSecurityDescriptor:LPDWORD):LONG; external External_library name 'RegGetKeySecurity';
+
+    function RegNotifyChangeKeyValue(hKey:HKEY; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD; hEvent:HANDLE; fAsynchronus:WINBOOL):LONG; external External_library name 'RegNotifyChangeKeyValue';
+
+    function IsValidCodePage(CodePage:UINT):WINBOOL; external External_library name 'IsValidCodePage';
+
+    function GetACP:UINT; external External_library name 'GetACP';
+
+    function GetOEMCP:UINT; external External_library name 'GetOEMCP';
+
+    function GetCPInfo(_para1:UINT; _para2:LPCPINFO):WINBOOL; external External_library name 'GetCPInfo';
+
+    function IsDBCSLeadByte(TestChar:BYTE):WINBOOL; external External_library name 'IsDBCSLeadByte';
+
+    function IsDBCSLeadByteEx(CodePage:UINT; TestChar:BYTE):WINBOOL; external External_library name 'IsDBCSLeadByteEx';
+
+    function MultiByteToWideChar(CodePage:UINT; dwFlags:DWORD; lpMultiByteStr:LPCSTR; cchMultiByte:longint; lpWideCharStr:LPWSTR; 
+               cchWideChar:longint):longint; external External_library name 'MultiByteToWideChar';
+
+    function WideCharToMultiByte(CodePage:UINT; dwFlags:DWORD; lpWideCharStr:LPCWSTR; cchWideChar:longint; lpMultiByteStr:LPSTR; 
+               cchMultiByte:longint; lpDefaultChar:LPCSTR; lpUsedDefaultChar:LPBOOL):longint; external External_library name 'WideCharToMultiByte';
+
+    function IsValidLocale(Locale:LCID; dwFlags:DWORD):WINBOOL; external External_library name 'IsValidLocale';
+
+    function ConvertDefaultLocale(Locale:LCID):LCID; external External_library name 'ConvertDefaultLocale';
+
+    function GetThreadLocale:LCID; external External_library name 'GetThreadLocale';
+
+    function SetThreadLocale(Locale:LCID):WINBOOL; external External_library name 'SetThreadLocale';
+
+    function GetSystemDefaultLangID:LANGID; external External_library name 'GetSystemDefaultLangID';
+
+    function GetUserDefaultLangID:LANGID; external External_library name 'GetUserDefaultLangID';
+
+    function GetSystemDefaultLCID:LCID; external External_library name 'GetSystemDefaultLCID';
+
+    function GetUserDefaultLCID:LCID; external External_library name 'GetUserDefaultLCID';
+
+    function ReadConsoleOutputAttribute(hConsoleOutput:HANDLE; lpAttribute:LPWORD; nLength:DWORD; dwReadCoord:COORD; lpNumberOfAttrsRead:LPDWORD):WINBOOL; external External_library name 'ReadConsoleOutputAttribute';
+
+    function WriteConsoleOutputAttribute(hConsoleOutput:HANDLE; var lpAttribute:WORD; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfAttrsWritten:LPDWORD):WINBOOL; external External_library name 'WriteConsoleOutputAttribute';
+
+    function FillConsoleOutputAttribute(hConsoleOutput:HANDLE; wAttribute:WORD; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfAttrsWritten:LPDWORD):WINBOOL; external External_library name 'FillConsoleOutputAttribute';
+
+    function GetConsoleMode(hConsoleHandle:HANDLE; lpMode:LPDWORD):WINBOOL; external External_library name 'GetConsoleMode';
+
+    function GetNumberOfConsoleInputEvents(hConsoleInput:HANDLE; lpNumberOfEvents:LPDWORD):WINBOOL; external External_library name 'GetNumberOfConsoleInputEvents';
+
+    function GetConsoleScreenBufferInfo(hConsoleOutput:HANDLE; lpConsoleScreenBufferInfo:PCONSOLE_SCREEN_BUFFER_INFO):WINBOOL; external External_library name 'GetConsoleScreenBufferInfo';
+
+    function GetLargestConsoleWindowSize(hConsoleOutput:HANDLE):COORD; external External_library name 'GetLargestConsoleWindowSize';
+
+    function GetConsoleCursorInfo(hConsoleOutput:HANDLE; lpConsoleCursorInfo:PCONSOLE_CURSOR_INFO):WINBOOL; external External_library name 'GetConsoleCursorInfo';
+
+    function GetNumberOfConsoleMouseButtons(lpNumberOfMouseButtons:LPDWORD):WINBOOL; external External_library name 'GetNumberOfConsoleMouseButtons';
+
+    function SetConsoleMode(hConsoleHandle:HANDLE; dwMode:DWORD):WINBOOL; external External_library name 'SetConsoleMode';
+
+    function SetConsoleActiveScreenBuffer(hConsoleOutput:HANDLE):WINBOOL; external External_library name 'SetConsoleActiveScreenBuffer';
+
+    function FlushConsoleInputBuffer(hConsoleInput:HANDLE):WINBOOL; external External_library name 'FlushConsoleInputBuffer';
+
+    function SetConsoleScreenBufferSize(hConsoleOutput:HANDLE; dwSize:COORD):WINBOOL; external External_library name 'SetConsoleScreenBufferSize';
+
+    function SetConsoleCursorPosition(hConsoleOutput:HANDLE; dwCursorPosition:COORD):WINBOOL; external External_library name 'SetConsoleCursorPosition';
+
+    function SetConsoleCursorInfo(hConsoleOutput:HANDLE; var lpConsoleCursorInfo:CONSOLE_CURSOR_INFO):WINBOOL; external External_library name 'SetConsoleCursorInfo';
+
+    function SetConsoleWindowInfo(hConsoleOutput:HANDLE; bAbsolute:WINBOOL; var lpConsoleWindow:SMALL_RECT):WINBOOL; external External_library name 'SetConsoleWindowInfo';
+
+    function SetConsoleTextAttribute(hConsoleOutput:HANDLE; wAttributes:WORD):WINBOOL; external External_library name 'SetConsoleTextAttribute';
+
+    function SetConsoleCtrlHandler(HandlerRoutine:PHANDLER_ROUTINE; Add:WINBOOL):WINBOOL; external External_library name 'SetConsoleCtrlHandler';
+
+    function GenerateConsoleCtrlEvent(dwCtrlEvent:DWORD; dwProcessGroupId:DWORD):WINBOOL; external External_library name 'GenerateConsoleCtrlEvent';
+
+    function AllocConsole:WINBOOL; external External_library name 'AllocConsole';
+
+    function FreeConsole:WINBOOL; external External_library name 'FreeConsole';
+
+    function CreateConsoleScreenBuffer(dwDesiredAccess:DWORD; dwShareMode:DWORD; var lpSecurityAttributes:SECURITY_ATTRIBUTES; dwFlags:DWORD; lpScreenBufferData:LPVOID):HANDLE; external External_library name 'CreateConsoleScreenBuffer';
+
+    function GetConsoleCP:UINT; external External_library name 'GetConsoleCP';
+
+    function SetConsoleCP(wCodePageID:UINT):WINBOOL; external External_library name 'SetConsoleCP';
+
+    function GetConsoleOutputCP:UINT; external External_library name 'GetConsoleOutputCP';
+
+    function SetConsoleOutputCP(wCodePageID:UINT):WINBOOL; external External_library name 'SetConsoleOutputCP';
+
+    function WNetConnectionDialog(hwnd:HWND; dwType:DWORD):DWORD; external External_library name 'WNetConnectionDialog';
+
+    function WNetDisconnectDialog(hwnd:HWND; dwType:DWORD):DWORD; external External_library name 'WNetDisconnectDialog';
+
+    function WNetCloseEnum(hEnum:HANDLE):DWORD; external External_library name 'WNetCloseEnum';
+
+    function CloseServiceHandle(hSCObject:SC_HANDLE):WINBOOL; external External_library name 'CloseServiceHandle';
+
+    function ControlService(hService:SC_HANDLE; dwControl:DWORD; lpServiceStatus:LPSERVICE_STATUS):WINBOOL; external External_library name 'ControlService';
+
+    function DeleteService(hService:SC_HANDLE):WINBOOL; external External_library name 'DeleteService';
+
+    function LockServiceDatabase(hSCManager:SC_HANDLE):SC_LOCK; external External_library name 'LockServiceDatabase';
+
+    function NotifyBootConfigStatus(BootAcceptable:WINBOOL):WINBOOL; external External_library name 'NotifyBootConfigStatus';
+
+    function QueryServiceObjectSecurity(hService:SC_HANDLE; dwSecurityInformation:SECURITY_INFORMATION; lpSecurityDescriptor:PSECURITY_DESCRIPTOR; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+               external External_library name 'QueryServiceObjectSecurity';
+
+    function QueryServiceStatus(hService:SC_HANDLE; lpServiceStatus:LPSERVICE_STATUS):WINBOOL; external External_library name 'QueryServiceStatus';
+
+    function SetServiceObjectSecurity(hService:SC_HANDLE; dwSecurityInformation:SECURITY_INFORMATION; lpSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL;
+               external External_library name 'SetServiceObjectSecurity';
+
+    function SetServiceStatus(hServiceStatus:SERVICE_STATUS_HANDLE; lpServiceStatus:LPSERVICE_STATUS):WINBOOL; external External_library name 'SetServiceStatus';
+
+    function UnlockServiceDatabase(ScLock:SC_LOCK):WINBOOL; external External_library name 'UnlockServiceDatabase';
+
+    function ChoosePixelFormat(_para1:HDC; var _para2:PIXELFORMATDESCRIPTOR):longint; external External_library name 'ChoosePixelFormat';
+
+    function DescribePixelFormat(_para1:HDC; _para2:longint; _para3:UINT; _para4:LPPIXELFORMATDESCRIPTOR):longint; external External_library name 'DescribePixelFormat';
+
+    function GetEnhMetaFilePixelFormat(_para1:HENHMETAFILE; _para2:DWORD; var _para3:PIXELFORMATDESCRIPTOR):UINT; external External_library name 'GetEnhMetaFilePixelFormat';
+
+{    function GetPixelFormat(_para1:HDC):longint; external External_library name 'GetPixelFormat'; }
+
+    function SetPixelFormat(_para1:HDC; _para2:longint; var _para3:PIXELFORMATDESCRIPTOR):WINBOOL; external External_library name 'SetPixelFormat';
+
+    function SwapBuffers(_para1:HDC):WINBOOL; external External_library name 'SwapBuffers';
+
+    function wglCreateContext(_para1:HDC):HGLRC; external External_library name 'wglCreateContext';
+
+    function wglCreateLayerContext(_para1:HDC; _para2:longint):HGLRC; external External_library name 'wglCreateLayerContext';
+
+    function wglCopyContext(_para1:HGLRC; _para2:HGLRC; _para3:UINT):WINBOOL; external External_library name 'wglCopyContext';
+
+    function wglDeleteContext(_para1:HGLRC):WINBOOL; external External_library name 'wglDeleteContext';
+
+    function wglDescribeLayerPlane(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; _para5:LPLAYERPLANEDESCRIPTOR):WINBOOL; external External_library name 'wglDescribeLayerPlane';
+
+    function wglGetCurrentContext:HGLRC; external External_library name 'wglGetCurrentContext';
+
+    function wglGetCurrentDC:HDC; external External_library name 'wglGetCurrentDC';
+
+    function wglGetLayerPaletteEntries(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; var _para5:COLORREF):longint; external External_library name 'wglGetLayerPaletteEntries';
+
+    function wglGetProcAddress(_para1:LPCSTR):PROC; external External_library name 'wglGetProcAddress';
+
+    function wglMakeCurrent(_para1:HDC; _para2:HGLRC):WINBOOL; external External_library name 'wglMakeCurrent';
+
+    function wglRealizeLayerPalette(_para1:HDC; _para2:longint; _para3:WINBOOL):WINBOOL; external External_library name 'wglRealizeLayerPalette';
+
+    function wglSetLayerPaletteEntries(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; var _para5:COLORREF):longint; external External_library name 'wglSetLayerPaletteEntries';
+
+    function wglShareLists(_para1:HGLRC; _para2:HGLRC):WINBOOL; external External_library name 'wglShareLists';
+
+    function wglSwapLayerBuffers(_para1:HDC; _para2:UINT):WINBOOL; external External_library name 'wglSwapLayerBuffers';
+
+    function DragQueryPoint(_para1:HDROP; _para2:LPPOINT):WINBOOL; external External_library name 'DragQueryPoint';
+
+    procedure DragFinish(_para1:HDROP); external External_library name 'DragFinish';
+
+    procedure DragAcceptFiles(_para1:HWND; _para2:WINBOOL); external External_library name 'DragAcceptFiles';
+
+    function DuplicateIcon(_para1:HINSTANCE; _para2:HICON):HICON; external External_library name 'DuplicateIcon';
+
+    function DdeConnect(_para1:DWORD; _para2:HSZ; _para3:HSZ; var _para4:CONVCONTEXT):HCONV; external External_library name 'DdeConnect';
+
+    function DdeDisconnect(_para1:HCONV):WINBOOL; external External_library name 'DdeDisconnect';
+
+    function DdeFreeDataHandle(_para1:HDDEDATA):WINBOOL; external External_library name 'DdeFreeDataHandle';
+
+    function DdeGetData(_para1:HDDEDATA; var _para2:BYTE; _para3:DWORD; _para4:DWORD):DWORD; external External_library name 'DdeGetData';
+
+    function DdeGetLastError(_para1:DWORD):UINT; external External_library name 'DdeGetLastError';
+
+    function DdeNameService(_para1:DWORD; _para2:HSZ; _para3:HSZ; _para4:UINT):HDDEDATA; external External_library name 'DdeNameService';
+
+    function DdePostAdvise(_para1:DWORD; _para2:HSZ; _para3:HSZ):WINBOOL; external External_library name 'DdePostAdvise';
+
+    function DdeReconnect(_para1:HCONV):HCONV; external External_library name 'DdeReconnect';
+
+    function DdeUninitialize(_para1:DWORD):WINBOOL; external External_library name 'DdeUninitialize';
+
+    function DdeCmpStringHandles(_para1:HSZ; _para2:HSZ):longint; external External_library name 'DdeCmpStringHandles';
+
+    function DdeCreateDataHandle(_para1:DWORD; _para2:LPBYTE; _para3:DWORD; _para4:DWORD; _para5:HSZ; 
+               _para6:UINT; _para7:UINT):HDDEDATA; external External_library name 'DdeCreateDataHandle';
+
+    function NetUserEnum(_para1:LPWSTR; _para2:DWORD; _para3:DWORD; var _para4:LPBYTE; _para5:DWORD; 
+               _para6:LPDWORD; _para7:LPDWORD; _para8:LPDWORD):DWORD; external External_library name 'NetUserEnum';
+
+    function NetApiBufferFree(_para1:LPVOID):DWORD; external External_library name 'NetApiBufferFree';
+
+    function NetUserGetInfo(_para1:LPWSTR; _para2:LPWSTR; _para3:DWORD; _para4:LPBYTE):DWORD; external External_library name 'NetUserGetInfo';
+
+    function NetGetDCName(_para1:LPWSTR; _para2:LPWSTR; var _para3:LPBYTE):DWORD; external External_library name 'NetGetDCName';
+
+    function NetGroupEnum(_para1:LPWSTR; _para2:DWORD; var _para3:LPBYTE; _para4:DWORD; _para5:LPDWORD; 
+               _para6:LPDWORD; _para7:LPDWORD):DWORD; external External_library name 'NetGroupEnum';
+
+    function NetLocalGroupEnum(_para1:LPWSTR; _para2:DWORD; var _para3:LPBYTE; _para4:DWORD; _para5:LPDWORD; 
+               _para6:LPDWORD; _para7:LPDWORD):DWORD; external External_library name 'NetLocalGroupEnum';
+
+    procedure SHAddToRecentDocs(_para1:UINT; _para2:LPCVOID); external External_library name 'SHAddToRecentDocs';
+
+    function SHBrowseForFolder(_para1:LPBROWSEINFO):LPITEMIDLIST; external External_library name 'SHBrowseForFolder';
+
+    procedure SHChangeNotify(_para1:LONG; _para2:UINT; _para3:LPCVOID; _para4:LPCVOID); external External_library name 'SHChangeNotify';
+
+    function SHFileOperation(_para1:LPSHFILEOPSTRUCT):longint; external External_library name 'SHFileOperation';
+
+    procedure SHFreeNameMappings(_para1:HANDLE); external External_library name 'SHFreeNameMappings';
+
+    function SHGetFileInfo(_para1:LPCTSTR; _para2:DWORD; var _para3:SHFILEINFO; _para4:UINT; _para5:UINT):DWORD; external External_library name 'SHGetFileInfo';
+
+    function SHGetPathFromIDList(_para1:LPCITEMIDLIST; _para2:LPTSTR):WINBOOL; external External_library name 'SHGetPathFromIDList';
+
+    function SHGetSpecialFolderLocation(_para1:HWND; _para2:longint; var _para3:LPITEMIDLIST):HRESULT; external External_library name 'SHGetSpecialFolderLocation';
+
+{$endif read_implementation}
+
+{$ifndef windows_include_files}
+end.
+{$endif not windows_include_files}
+{
+  $Log$
+  Revision 1.1  1998-08-31 11:53:56  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+}

+ 17 - 2
rtl/win32/makefile

@@ -124,7 +124,13 @@ SHAREDLIBEXT=.dll
 SYSTEMPPU=syswin32$(PPUEXT)
 OBJECTS=strings objpas \
 	dos \
-	base messages defines
+        windows
+#	base messages defines
+
+# Files used by windows.pp
+WINDOWS_FILES=base.pp errors.pp defines.pp \
+	struct.pp ascfun.pp ascdef.pp \
+	unifun.pp unidef.pp func.pp
 
 # Add Prefix and Suffixes
 PPUOBJECTS=$(addsuffix $(PPUEXT), $(OBJECTS))
@@ -181,6 +187,9 @@ messages$(PPUEXT) : messages.pp $(SYSTEMPPU)
 defines$(PPUEXT) : defines.pp $(SYSTEMPPU)
 	$(PP) $(OPT) defines.pp $(REDIR)
 
+windows$(PPUEXT) : windows.pp $(WINDOWS_INCLUDE) $(SYSTEMPPU)
+	$(PP) $(OPT) windows.pp $(REDIR)
+
 #
 # TP7 Compatible RTL Units
 #
@@ -236,7 +245,13 @@ include $(CFG)/makefile.def
 
 #
 # $Log$
-# Revision 1.7  1998-08-21 15:17:01  peter
+# Revision 1.8  1998-08-31 11:53:57  pierre
+#   * compilable windows.pp file
+#     still to do :
+#      - findout problems
+#      - findout the correct DLL for each call !!
+#
+# Revision 1.7  1998/08/21 15:17:01  peter
 #   * win32 compiles a bit better, no growheap crash
 #
 #

+ 1162 - 1008
rtl/win32/messages.pp

@@ -13,1044 +13,1198 @@
 
  **********************************************************************}
 
-{
-    This file is generated using h2pas written by Florian Klaempfl,
-    but some modifications are done.
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
 
-    The C header file was messages.h of the
-    GNU Windows32 API Library Version 0.1.2
 
- ****************************************************************************
+{$ifndef windows_include_files}
 
-  FK     Florian Klaempfl
-  +      added
-  -      removed
-  *      modified
+unit messages;
 
-  History (started with version 0.1.0):
-      18th november 1997 version:
-         + started (FK)
+{  Automatically converted by H2PAS.EXE from messages.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
 
-  Unimplemented:
 
- ****************************************************************************}
+  interface
 
-unit messages;
+{$endif not windows_include_files}
 
-  interface
+{$ifdef read_interface}
+
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     Messages.h
+  
+     Windows32 API message definitions
+  
+     Copyright (C) 1996 Free Software Foundation, Inc.
+  
+     Author: Scott Christley <[email protected]>
+  
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+  { WARNING:  This file is automatically generated.  }
+{$ifndef _GNU_H_WINDOWS32_MESSAGES}
+{$define _GNU_H_WINDOWS32_MESSAGES}
+{ C++ extern C conditionnal removed }
+  { __cplusplus  }
+  { Application bar  }
+  { Application bar notifications  }
+  { Animation Control  }
 
-    const
-       ACM_OPENW = 1127;
-       ACM_OPENA = 1124;
+  const
+     ACM_OPENW = 1127;
+     ACM_OPENA = 1124;
 {$ifdef UNICODE}
-       ACM_OPEN = ACM_OPENW;
-{$else UNICODE}
-       ACM_OPEN = ACM_OPENA;
-{$endif UNICODE}
-       ACM_PLAY = 1125;
-       ACM_STOP = 1126;
-       ACN_START = 1;
-       { Buttons }
-       ACN_STOP = 2;
-       BM_CLICK = 245;
-       BM_GETCHECK = 240;
-       BM_GETIMAGE = 246;
-       BM_GETSTATE = 242;
-       BM_SETCHECK = 241;
-       BM_SETIMAGE = 247;
-       BM_SETSTATE = 243;
-       BM_SETSTYLE = 244;
-       BN_CLICKED = 0;
-       BN_DBLCLK = 5;
-       BN_DISABLE = 4;
-       BN_DOUBLECLICKED = 5;
-       BN_HILITE = 2;
-       BN_KILLFOCUS = 7;
-       BN_PAINT = 1;
-       BN_PUSHED = 2;
-       BN_SETFOCUS = 6;
-       BN_UNHILITE = 3;
-    { Combo Box }
-       BN_UNPUSHED = 3;
-       CB_ADDSTRING = 323;
-       CB_DELETESTRING = 324;
-       CB_DIR = 325;
-       CB_FINDSTRING = 332;
-       CB_FINDSTRINGEXACT = 344;
-       CB_GETCOUNT = 326;
-       CB_GETCURSEL = 327;
-       CB_GETDROPPEDCONTROLRECT = 338;
-       CB_GETDROPPEDSTATE = 343;
-       CB_GETDROPPEDWIDTH = 351;
-       CB_GETEDITSEL = 320;
-       CB_GETEXTENDEDUI = 342;
-       CB_GETHORIZONTALEXTENT = 349;
-       CB_GETITEMDATA = 336;
-       CB_GETITEMHEIGHT = 340;
-       CB_GETLBTEXT = 328;
-       CB_GETLBTEXTLEN = 329;
-       CB_GETLOCALE = 346;
-       CB_GETTOPINDEX = 347;
-       CB_INITSTORAGE = 353;
-       CB_INSERTSTRING = 330;
-       CB_LIMITTEXT = 321;
-       CB_RESETCONTENT = 331;
-       CB_SELECTSTRING = 333;
-       CB_SETCURSEL = 334;
-       CB_SETDROPPEDWIDTH = 352;
-       CB_SETEDITSEL = 322;
-       CB_SETEXTENDEDUI = 341;
-       CB_SETHORIZONTALEXTENT = 350;
-       CB_SETITEMDATA = 337;
-       CB_SETITEMHEIGHT = 339;
-       CB_SETLOCALE = 345;
-       CB_SETTOPINDEX = 348;
-    { Combo Box notifications }
-       CB_SHOWDROPDOWN = 335;
-       CBN_CLOSEUP = 8;
-       CBN_DBLCLK = 2;
-       CBN_DROPDOWN = 7;
-       CBN_EDITCHANGE = 5;
-       CBN_EDITUPDATE = 6;
-       CBN_ERRSPACE = -1;
-       CBN_KILLFOCUS = 4;
-       CBN_SELCHANGE = 1;
-       CBN_SELENDCANCEL = 10;
-       CBN_SELENDOK = 9;
-    { Control Panel }
-    { Device messages }
-    { Drag list box }
-       CBN_SETFOCUS = 3;
-       DL_BEGINDRAG = 1157;
-       DL_CANCELDRAG = 1160;
-       DL_DRAGGING = 1158;
-    { Default push button }
-       DL_DROPPED = 1159;
-       DM_GETDEFID = 1024;
-       DM_REPOSITION = 1026;
-    { RTF control }
-       DM_SETDEFID = 1025;
-       EM_CANPASTE = 1074;
-       EM_CANUNDO = 198;
-       EM_CHARFROMPOS = 215;
-       EM_DISPLAYBAND = 1075;
-       EM_EMPTYUNDOBUFFER = 205;
-       EM_EXGETSEL = 1076;
-       EM_EXLIMITTEXT = 1077;
-       EM_EXLINEFROMCHAR = 1078;
-       EM_EXSETSEL = 1079;
-       EM_FINDTEXT = 1080;
-       EM_FINDTEXTEX = 1103;
-       EM_FINDWORDBREAK = 1100;
-       EM_FMTLINES = 200;
-       EM_FORMATRANGE = 1081;
-       EM_GETCHARFORMAT = 1082;
-       EM_GETEVENTMASK = 1083;
-       EM_GETFIRSTVISIBLELINE = 206;
-       EM_GETHANDLE = 189;
-       EM_GETLIMITTEXT = 213;
-       EM_GETLINE = 196;
-       EM_GETLINECOUNT = 186;
-       EM_GETMARGINS = 212;
-       EM_GETMODIFY = 184;
-       EM_GETIMECOLOR = 1129;
-       EM_GETIMEOPTIONS = 1131;
-       EM_GETOPTIONS = 1102;
-       EM_GETOLEINTERFACE = 1084;
-       EM_GETPARAFORMAT = 1085;
-       EM_GETPASSWORDCHAR = 210;
-       EM_GETPUNCTUATION = 1125;
-       EM_GETRECT = 178;
-       EM_GETSEL = 176;
-       EM_GETSELTEXT = 1086;
-       EM_GETTEXTRANGE = 1099;
-       EM_GETTHUMB = 190;
-       EM_GETWORDBREAKPROC = 209;
-       EM_GETWORDBREAKPROCEX = 1104;
-       EM_GETWORDWRAPMODE = 1127;
-       EM_HIDESELECTION = 1087;
-       EM_LIMITTEXT = 197;
-       EM_LINEFROMCHAR = 201;
-       EM_LINEINDEX = 187;
-       EM_LINELENGTH = 193;
-       EM_LINESCROLL = 182;
-       EM_PASTESPECIAL = 1088;
-       EM_POSFROMCHAR = 214;
-       EM_REPLACESEL = 194;
-       EM_REQUESTRESIZE = 1089;
-       EM_SCROLL = 181;
-       EM_SCROLLCARET = 183;
-       EM_SELECTIONTYPE = 1090;
-       EM_SETBKGNDCOLOR = 1091;
-       EM_SETCHARFORMAT = 1092;
-       EM_SETEVENTMASK = 1093;
-       EM_SETHANDLE = 188;
-       EM_SETIMECOLOR = 1128;
-       EM_SETIMEOPTIONS = 1130;
-       EM_SETLIMITTEXT = 197;
-       EM_SETMARGINS = 211;
-       EM_SETMODIFY = 185;
-       EM_SETOLECALLBACK = 1094;
-       EM_SETOPTIONS = 1101;
-       EM_SETPARAFORMAT = 1095;
-       EM_SETPASSWORDCHAR = 204;
-       EM_SETPUNCTUATION = 1124;
-       EM_SETREADONLY = 207;
-       EM_SETRECT = 179;
-       EM_SETRECTNP = 180;
-       EM_SETSEL = 177;
-       EM_SETTABSTOPS = 203;
-       EM_SETTARGETDEVICE = 1096;
-       EM_SETWORDBREAKPROC = 208;
-       EM_SETWORDBREAKPROCEX = 1105;
-       EM_SETWORDWRAPMODE = 1126;
-       EM_STREAMIN = 1097;
-       EM_STREAMOUT = 1098;
-    { Edit control }
-       EM_UNDO = 199;
-       EN_CHANGE = 768;
-       EN_CORRECTTEXT = 1797;
-       EN_DROPFILES = 1795;
-       EN_ERRSPACE = 1280;
-       EN_HSCROLL = 1537;
-       EN_IMECHANGE = 1799;
-       EN_KILLFOCUS = 512;
-       EN_MAXTEXT = 1281;
-       EN_MSGFILTER = 1792;
-       EN_OLEOPFAILED = 1801;
-       EN_PROTECTED = 1796;
-       EN_REQUESTRESIZE = 1793;
-       EN_SAVECLIPBOARD = 1800;
-       EN_SELCHANGE = 1794;
-       EN_SETFOCUS = 256;
-       EN_STOPNOUNDO = 1798;
-       EN_UPDATE = 1024;
-    { File Manager extensions }
-    { File Manager extensions DLL events }
-    { Header control }
-       EN_VSCROLL = 1538;
-       HDM_DELETEITEM = 4610;
-       HDM_GETITEMW = 4619;
-       HDM_INSERTITEMW = 4618;
-       HDM_SETITEMW = 4620;
-       HDM_GETITEMA = 4611;
-       HDM_INSERTITEMA = 4609;
-       HDM_SETITEMA = 4612;
+
+  const
+     ACM_OPEN = ACM_OPENW;
+{$else}
+
+  const
+     ACM_OPEN = ACM_OPENA;
+{$endif}
+  { UNICODE  }
+
+  const
+     ACM_PLAY = 1125;
+     ACM_STOP = 1126;
+     ACN_START = 1;
+     ACN_STOP = 2;
+  { Buttons  }
+     BM_CLICK = 245;
+     BM_GETCHECK = 240;
+     BM_GETIMAGE = 246;
+     BM_GETSTATE = 242;
+     BM_SETCHECK = 241;
+     BM_SETIMAGE = 247;
+     BM_SETSTATE = 243;
+     BM_SETSTYLE = 244;
+     BN_CLICKED = 0;
+     BN_DBLCLK = 5;
+     BN_DISABLE = 4;
+     BN_DOUBLECLICKED = 5;
+     BN_HILITE = 2;
+     BN_KILLFOCUS = 7;
+     BN_PAINT = 1;
+     BN_PUSHED = 2;
+     BN_SETFOCUS = 6;
+     BN_UNHILITE = 3;
+     BN_UNPUSHED = 3;
+  { Combo Box  }
+     CB_ADDSTRING = 323;
+     CB_DELETESTRING = 324;
+     CB_DIR = 325;
+     CB_FINDSTRING = 332;
+     CB_FINDSTRINGEXACT = 344;
+     CB_GETCOUNT = 326;
+     CB_GETCURSEL = 327;
+     CB_GETDROPPEDCONTROLRECT = 338;
+     CB_GETDROPPEDSTATE = 343;
+     CB_GETDROPPEDWIDTH = 351;
+     CB_GETEDITSEL = 320;
+     CB_GETEXTENDEDUI = 342;
+     CB_GETHORIZONTALEXTENT = 349;
+     CB_GETITEMDATA = 336;
+     CB_GETITEMHEIGHT = 340;
+     CB_GETLBTEXT = 328;
+     CB_GETLBTEXTLEN = 329;
+     CB_GETLOCALE = 346;
+     CB_GETTOPINDEX = 347;
+     CB_INITSTORAGE = 353;
+     CB_INSERTSTRING = 330;
+     CB_LIMITTEXT = 321;
+     CB_RESETCONTENT = 331;
+     CB_SELECTSTRING = 333;
+     CB_SETCURSEL = 334;
+     CB_SETDROPPEDWIDTH = 352;
+     CB_SETEDITSEL = 322;
+     CB_SETEXTENDEDUI = 341;
+     CB_SETHORIZONTALEXTENT = 350;
+     CB_SETITEMDATA = 337;
+     CB_SETITEMHEIGHT = 339;
+     CB_SETLOCALE = 345;
+     CB_SETTOPINDEX = 348;
+     CB_SHOWDROPDOWN = 335;
+  { Combo Box notifications  }
+     CBN_CLOSEUP = 8;
+     CBN_DBLCLK = 2;
+     CBN_DROPDOWN = 7;
+     CBN_EDITCHANGE = 5;
+     CBN_EDITUPDATE = 6;
+     CBN_ERRSPACE = -(1);
+     CBN_KILLFOCUS = 4;
+     CBN_SELCHANGE = 1;
+     CBN_SELENDCANCEL = 10;
+     CBN_SELENDOK = 9;
+     CBN_SETFOCUS = 3;
+  { Control Panel  }
+  { Device messages  }
+  { Drag list box  }
+     DL_BEGINDRAG = 1157;
+     DL_CANCELDRAG = 1160;
+     DL_DRAGGING = 1158;
+     DL_DROPPED = 1159;
+  { Default push button  }
+     DM_GETDEFID = 1024;
+     DM_REPOSITION = 1026;
+     DM_SETDEFID = 1025;
+  { RTF control  }
+     EM_CANPASTE = 1074;
+     EM_CANUNDO = 198;
+     EM_CHARFROMPOS = 215;
+     EM_DISPLAYBAND = 1075;
+     EM_EMPTYUNDOBUFFER = 205;
+     EM_EXGETSEL = 1076;
+     EM_EXLIMITTEXT = 1077;
+     EM_EXLINEFROMCHAR = 1078;
+     EM_EXSETSEL = 1079;
+     EM_FINDTEXT = 1080;
+     EM_FINDTEXTEX = 1103;
+     EM_FINDWORDBREAK = 1100;
+     EM_FMTLINES = 200;
+     EM_FORMATRANGE = 1081;
+     EM_GETCHARFORMAT = 1082;
+     EM_GETEVENTMASK = 1083;
+     EM_GETFIRSTVISIBLELINE = 206;
+     EM_GETHANDLE = 189;
+     EM_GETLIMITTEXT = 213;
+     EM_GETLINE = 196;
+     EM_GETLINECOUNT = 186;
+     EM_GETMARGINS = 212;
+     EM_GETMODIFY = 184;
+     EM_GETIMECOLOR = 1129;
+     EM_GETIMEOPTIONS = 1131;
+     EM_GETOPTIONS = 1102;
+     EM_GETOLEINTERFACE = 1084;
+     EM_GETPARAFORMAT = 1085;
+     EM_GETPASSWORDCHAR = 210;
+     EM_GETPUNCTUATION = 1125;
+     EM_GETRECT = 178;
+     EM_GETSEL = 176;
+     EM_GETSELTEXT = 1086;
+     EM_GETTEXTRANGE = 1099;
+     EM_GETTHUMB = 190;
+     EM_GETWORDBREAKPROC = 209;
+     EM_GETWORDBREAKPROCEX = 1104;
+     EM_GETWORDWRAPMODE = 1127;
+     EM_HIDESELECTION = 1087;
+     EM_LIMITTEXT = 197;
+     EM_LINEFROMCHAR = 201;
+     EM_LINEINDEX = 187;
+     EM_LINELENGTH = 193;
+     EM_LINESCROLL = 182;
+     EM_PASTESPECIAL = 1088;
+     EM_POSFROMCHAR = 214;
+     EM_REPLACESEL = 194;
+     EM_REQUESTRESIZE = 1089;
+     EM_SCROLL = 181;
+     EM_SCROLLCARET = 183;
+     EM_SELECTIONTYPE = 1090;
+     EM_SETBKGNDCOLOR = 1091;
+     EM_SETCHARFORMAT = 1092;
+     EM_SETEVENTMASK = 1093;
+     EM_SETHANDLE = 188;
+     EM_SETIMECOLOR = 1128;
+     EM_SETIMEOPTIONS = 1130;
+     EM_SETLIMITTEXT = 197;
+     EM_SETMARGINS = 211;
+     EM_SETMODIFY = 185;
+     EM_SETOLECALLBACK = 1094;
+     EM_SETOPTIONS = 1101;
+     EM_SETPARAFORMAT = 1095;
+     EM_SETPASSWORDCHAR = 204;
+     EM_SETPUNCTUATION = 1124;
+     EM_SETREADONLY = 207;
+     EM_SETRECT = 179;
+     EM_SETRECTNP = 180;
+     EM_SETSEL = 177;
+     EM_SETTABSTOPS = 203;
+     EM_SETTARGETDEVICE = 1096;
+     EM_SETWORDBREAKPROC = 208;
+     EM_SETWORDBREAKPROCEX = 1105;
+     EM_SETWORDWRAPMODE = 1126;
+     EM_STREAMIN = 1097;
+     EM_STREAMOUT = 1098;
+     EM_UNDO = 199;
+  { Edit control  }
+     EN_CHANGE = 768;
+     EN_CORRECTTEXT = 1797;
+     EN_DROPFILES = 1795;
+     EN_ERRSPACE = 1280;
+     EN_HSCROLL = 1537;
+     EN_IMECHANGE = 1799;
+     EN_KILLFOCUS = 512;
+     EN_MAXTEXT = 1281;
+     EN_MSGFILTER = 1792;
+     EN_OLEOPFAILED = 1801;
+     EN_PROTECTED = 1796;
+     EN_REQUESTRESIZE = 1793;
+     EN_SAVECLIPBOARD = 1800;
+     EN_SELCHANGE = 1794;
+     EN_SETFOCUS = 256;
+     EN_STOPNOUNDO = 1798;
+     EN_UPDATE = 1024;
+     EN_VSCROLL = 1538;
+  { File Manager extensions  }
+  { File Manager extensions DLL events  }
+  { Header control  }
+     HDM_DELETEITEM = 4610;
+     HDM_GETITEMW = 4619;
+     HDM_INSERTITEMW = 4618;
+     HDM_SETITEMW = 4620;
+     HDM_GETITEMA = 4611;
+     HDM_INSERTITEMA = 4609;
+     HDM_SETITEMA = 4612;
 {$ifdef UNICODE}
-       HDM_GETITEM = HDM_GETITEMW;
-       HDM_INSERTITEM = HDM_INSERTITEMW;
-       HDM_SETITEM = HDM_SETITEMW;
-{$else UNICODE}
-       HDM_GETITEM = HDM_GETITEMA;
-       HDM_INSERTITEM = HDM_INSERTITEMA;
-       HDM_SETITEM = HDM_SETITEMA;
-{$endif UNICODE}
-       HDM_GETITEMCOUNT = 4608;
-       HDM_HITTEST = 4614;
-    { Header control notifications }
-       HDM_LAYOUT = 4613;
-       HDN_BEGINTRACKW = -326;
-       HDN_DIVIDERDBLCLICKW = -325;
-       HDN_ENDTRACKW = -327;
-       HDN_ITEMCHANGEDW = -321;
-       HDN_ITEMCHANGINGW = -320;
-       HDN_ITEMCLICKW = -322;
-       HDN_ITEMDBLCLICKW = -323;
-       HDN_TRACKW = -328;
-       HDN_BEGINTRACKA = -306;
-       HDN_DIVIDERDBLCLICKA = -305;
-       HDN_ENDTRACKA = -307;
-       HDN_ITEMCHANGEDA = -301;
-       HDN_ITEMCHANGINGA = -300;
-       HDN_ITEMCLICKA = -302;
-       HDN_ITEMDBLCLICKA = -303;
-       HDN_TRACKA = -308;
+
+  const
+     HDM_GETITEM = HDM_GETITEMW;
+     HDM_INSERTITEM = HDM_INSERTITEMW;
+     HDM_SETITEM = HDM_SETITEMW;
+{$else}
+
+  const
+     HDM_GETITEM = HDM_GETITEMA;
+     HDM_INSERTITEM = HDM_INSERTITEMA;
+     HDM_SETITEM = HDM_SETITEMA;
+{$endif}
+  { UNICODE  }
+
+  const
+     HDM_GETITEMCOUNT = 4608;
+     HDM_HITTEST = 4614;
+     HDM_LAYOUT = 4613;
+  { Header control notifications  }
+     HDN_BEGINTRACKW = -(326);
+     HDN_DIVIDERDBLCLICKW = -(325);
+     HDN_ENDTRACKW = -(327);
+     HDN_ITEMCHANGEDW = -(321);
+     HDN_ITEMCHANGINGW = -(320);
+     HDN_ITEMCLICKW = -(322);
+     HDN_ITEMDBLCLICKW = -(323);
+     HDN_TRACKW = -(328);
+     HDN_BEGINTRACKA = -(306);
+     HDN_DIVIDERDBLCLICKA = -(305);
+     HDN_ENDTRACKA = -(307);
+     HDN_ITEMCHANGEDA = -(301);
+     HDN_ITEMCHANGINGA = -(300);
+     HDN_ITEMCLICKA = -(302);
+     HDN_ITEMDBLCLICKA = -(303);
+     HDN_TRACKA = -(308);
 {$ifdef UNICODE}
-       HDN_BEGINTRACK = HDN_BEGINTRACKW;
-       HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKW;
-       HDN_ENDTRACK = HDN_ENDTRACKW;
-       HDN_ITEMCHANGED = HDN_ITEMCHANGEDW;
-       HDN_ITEMCHANGING = HDN_ITEMCHANGINGW;
-       HDN_ITEMCLICK = HDN_ITEMCLICKW;
-       HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKW;
-       HDN_TRACK = HDN_TRACKW;
-{$else UNICODE}
-       HDN_BEGINTRACK = HDN_BEGINTRACKA;
-       HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKA;
-       HDN_ENDTRACK = HDN_ENDTRACKA;
-       HDN_ITEMCHANGED = HDN_ITEMCHANGEDA;
-       HDN_ITEMCHANGING = HDN_ITEMCHANGINGA;
-       HDN_ITEMCLICK = HDN_ITEMCLICKA;
-       HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKA;
-       HDN_TRACK = HDN_TRACKA;
-{$endif UNICODE}
-    { Hot key control }
-       HKM_GETHOTKEY = 1026;
-       HKM_SETHOTKEY = 1025;
-       HKM_SETRULES = 1027;
-    { List box }
-       LB_ADDFILE = 406;
-       LB_ADDSTRING = 384;
-       LB_DELETESTRING = 386;
-       LB_DIR = 397;
-       LB_FINDSTRING = 399;
-       LB_FINDSTRINGEXACT = 418;
-       LB_GETANCHORINDEX = 413;
-       LB_GETCARETINDEX = 415;
-       LB_GETCOUNT = 395;
-       LB_GETCURSEL = 392;
-       LB_GETHORIZONTALEXTENT = 403;
-       LB_GETITEMDATA = 409;
-       LB_GETITEMHEIGHT = 417;
-       LB_GETITEMRECT = 408;
-       LB_GETLOCALE = 422;
-       LB_GETSEL = 391;
-       LB_GETSELCOUNT = 400;
-       LB_GETSELITEMS = 401;
-       LB_GETTEXT = 393;
-       LB_GETTEXTLEN = 394;
-       LB_GETTOPINDEX = 398;
-       LB_INITSTORAGE = 424;
-       LB_INSERTSTRING = 385;
-       LB_ITEMFROMPOINT = 425;
-       LB_RESETCONTENT = 388;
-       LB_SELECTSTRING = 396;
-       LB_SELITEMRANGE = 411;
-       LB_SELITEMRANGEEX = 387;
-       LB_SETANCHORINDEX = 412;
-       LB_SETCARETINDEX = 414;
-       LB_SETCOLUMNWIDTH = 405;
-       LB_SETCOUNT = 423;
-       LB_SETCURSEL = 390;
-       LB_SETHORIZONTALEXTENT = 404;
-       LB_SETITEMDATA = 410;
-       LB_SETITEMHEIGHT = 416;
-       LB_SETLOCALE = 421;
-       LB_SETSEL = 389;
-       LB_SETTABSTOPS = 402;
-    { List box notifications }
-       LB_SETTOPINDEX = 407;
-       LBN_DBLCLK = 2;
-       LBN_ERRSPACE = -2;
-       LBN_KILLFOCUS = 5;
-       LBN_SELCANCEL = 3;
-       LBN_SELCHANGE = 1;
-    { List view control }
-       LBN_SETFOCUS = 4;
-       LVM_ARRANGE = 4118;
-       LVM_CREATEDRAGIMAGE = 4129;
-       LVM_DELETEALLITEMS = 4105;
-       LVM_DELETECOLUMN = 4124;
-       LVM_DELETEITEM = 4104;
-       LVM_ENSUREVISIBLE = 4115;
-       LVM_GETBKCOLOR = 4096;
-       LVM_GETCALLBACKMASK = 4106;
-       LVM_GETCOLUMNWIDTH = 4125;
-       LVM_GETCOUNTPERPAGE = 4136;
-       LVM_GETEDITCONTROL = 4120;
-       LVM_GETIMAGELIST = 4098;
-       LVM_EDITLABELW = 4214;
-       LVM_FINDITEMW = 4179;
-       LVM_GETCOLUMNW = 4191;
-       LVM_GETISEARCHSTRINGW = 4213;
-       LVM_GETITEMW = 4171;
-       LVM_GETITEMTEXTW = 4211;
-       LVM_GETSTRINGWIDTHW = 4183;
-       LVM_INSERTCOLUMNW = 4193;
-       LVM_INSERTITEMW = 4173;
-       LVM_SETCOLUMNW = 4192;
-       LVM_SETITEMW = 4172;
-       LVM_SETITEMTEXTW = 4212;
-       LVM_EDITLABELA = 4119;
-       LVM_FINDITEMA = 4109;
-       LVM_GETCOLUMNA = 4121;
-       LVM_GETISEARCHSTRINGA = 4148;
-       LVM_GETITEMA = 4101;
-       LVM_GETITEMTEXTA = 4141;
-       LVM_GETSTRINGWIDTHA = 4113;
-       LVM_INSERTCOLUMNA = 4123;
-       LVM_INSERTITEMA = 4103;
-       LVM_SETCOLUMNA = 4122;
-       LVM_SETITEMA = 4102;
-       LVM_SETITEMTEXTA = 4242;
+
+  const
+     HDN_BEGINTRACK = HDN_BEGINTRACKW;
+     HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKW;
+     HDN_ENDTRACK = HDN_ENDTRACKW;
+     HDN_ITEMCHANGED = HDN_ITEMCHANGEDW;
+     HDN_ITEMCHANGING = HDN_ITEMCHANGINGW;
+     HDN_ITEMCLICK = HDN_ITEMCLICKW;
+     HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKW;
+     HDN_TRACK = HDN_TRACKW;
+{$else}
+
+  const
+     HDN_BEGINTRACK = HDN_BEGINTRACKA;
+     HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKA;
+     HDN_ENDTRACK = HDN_ENDTRACKA;
+     HDN_ITEMCHANGED = HDN_ITEMCHANGEDA;
+     HDN_ITEMCHANGING = HDN_ITEMCHANGINGA;
+     HDN_ITEMCLICK = HDN_ITEMCLICKA;
+     HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKA;
+     HDN_TRACK = HDN_TRACKA;
+{$endif}
+  { UNICODE  }
+  { Hot key control  }
+
+  const
+     HKM_GETHOTKEY = 1026;
+     HKM_SETHOTKEY = 1025;
+     HKM_SETRULES = 1027;
+  { List box  }
+     LB_ADDFILE = 406;
+     LB_ADDSTRING = 384;
+     LB_DELETESTRING = 386;
+     LB_DIR = 397;
+     LB_FINDSTRING = 399;
+     LB_FINDSTRINGEXACT = 418;
+     LB_GETANCHORINDEX = 413;
+     LB_GETCARETINDEX = 415;
+     LB_GETCOUNT = 395;
+     LB_GETCURSEL = 392;
+     LB_GETHORIZONTALEXTENT = 403;
+     LB_GETITEMDATA = 409;
+     LB_GETITEMHEIGHT = 417;
+     LB_GETITEMRECT = 408;
+     LB_GETLOCALE = 422;
+     LB_GETSEL = 391;
+     LB_GETSELCOUNT = 400;
+     LB_GETSELITEMS = 401;
+     LB_GETTEXT = 393;
+     LB_GETTEXTLEN = 394;
+     LB_GETTOPINDEX = 398;
+     LB_INITSTORAGE = 424;
+     LB_INSERTSTRING = 385;
+     LB_ITEMFROMPOINT = 425;
+     LB_RESETCONTENT = 388;
+     LB_SELECTSTRING = 396;
+     LB_SELITEMRANGE = 411;
+     LB_SELITEMRANGEEX = 387;
+     LB_SETANCHORINDEX = 412;
+     LB_SETCARETINDEX = 414;
+     LB_SETCOLUMNWIDTH = 405;
+     LB_SETCOUNT = 423;
+     LB_SETCURSEL = 390;
+     LB_SETHORIZONTALEXTENT = 404;
+     LB_SETITEMDATA = 410;
+     LB_SETITEMHEIGHT = 416;
+     LB_SETLOCALE = 421;
+     LB_SETSEL = 389;
+     LB_SETTABSTOPS = 402;
+     LB_SETTOPINDEX = 407;
+  { List box notifications  }
+     LBN_DBLCLK = 2;
+     LBN_ERRSPACE = -(2);
+     LBN_KILLFOCUS = 5;
+     LBN_SELCANCEL = 3;
+     LBN_SELCHANGE = 1;
+     LBN_SETFOCUS = 4;
+  { List view control  }
+     LVM_ARRANGE = 4118;
+     LVM_CREATEDRAGIMAGE = 4129;
+     LVM_DELETEALLITEMS = 4105;
+     LVM_DELETECOLUMN = 4124;
+     LVM_DELETEITEM = 4104;
+     LVM_ENSUREVISIBLE = 4115;
+     LVM_GETBKCOLOR = 4096;
+     LVM_GETCALLBACKMASK = 4106;
+     LVM_GETCOLUMNWIDTH = 4125;
+     LVM_GETCOUNTPERPAGE = 4136;
+     LVM_GETEDITCONTROL = 4120;
+     LVM_GETIMAGELIST = 4098;
+     LVM_EDITLABELW = 4214;
+     LVM_FINDITEMW = 4179;
+     LVM_GETCOLUMNW = 4191;
+     LVM_GETISEARCHSTRINGW = 4213;
+     LVM_GETITEMW = 4171;
+     LVM_GETITEMTEXTW = 4211;
+     LVM_GETSTRINGWIDTHW = 4183;
+     LVM_INSERTCOLUMNW = 4193;
+     LVM_INSERTITEMW = 4173;
+     LVM_SETCOLUMNW = 4192;
+     LVM_SETITEMW = 4172;
+     LVM_SETITEMTEXTW = 4212;
+     LVM_EDITLABELA = 4119;
+     LVM_FINDITEMA = 4109;
+     LVM_GETCOLUMNA = 4121;
+     LVM_GETISEARCHSTRINGA = 4148;
+     LVM_GETITEMA = 4101;
+     LVM_GETITEMTEXTA = 4141;
+     LVM_GETSTRINGWIDTHA = 4113;
+     LVM_INSERTCOLUMNA = 4123;
+     LVM_INSERTITEMA = 4103;
+     LVM_SETCOLUMNA = 4122;
+     LVM_SETITEMA = 4102;
+     LVM_SETITEMTEXTA = 4142;
 {$ifdef UNICODE}
-       LVM_SETITEMA = 4102;
-       LVM_SETITEMTEXTA = 4142;
-       LVM_EDITLABEL = LVM_EDITLABELW;
-       LVM_FINDITEM = LVM_FINDITEMW;
-       LVM_GETCOLUMN = LVM_GETCOLUMNW;
-       LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGW;
-       LVM_GETITEM = LVM_GETITEMW;
-       LVM_GETITEMTEXT = LVM_GETITEMTEXTW;
-       LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHW;
-       LVM_INSERTCOLUMN = LVM_INSERTCOLUMNW;
-       LVM_INSERTITEM = LVM_INSERTITEMW;
-       LVM_SETCOLUMN = LVM_SETCOLUMNW;
-       LVM_SETITEM = LVM_SETITEMW;
-       LVM_SETITEMTEXT = LVM_SETITEMTEXTW;
-{$else UNICODE}
-       LVM_EDITLABEL = LVM_EDITLABELA;
-       LVM_FINDITEM = LVM_FINDITEMA;
-       LVM_GETCOLUMN = LVM_GETCOLUMNA;
-       LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGA;
-       LVM_GETITEM = LVM_GETITEMA;
-       LVM_GETITEMTEXT = LVM_GETITEMTEXTA;
-       LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA;
-       LVM_INSERTCOLUMN = LVM_INSERTCOLUMNA;
-       LVM_INSERTITEM = LVM_INSERTITEMA;
-       LVM_SETCOLUMN = LVM_SETCOLUMNA;
-       LVM_SETITEM = LVM_SETITEMA;
-       LVM_SETITEMTEXT = LVM_SETITEMTEXTA;
-{$endif UNICODE}
-       LVM_GETITEMCOUNT = 4100;
-       LVM_GETITEMPOSITION = 4112;
-       LVM_GETITEMRECT = 4110;
-       LVM_GETITEMSPACING = 4147;
-       LVM_GETITEMSTATE = 4140;
-       LVM_GETNEXTITEM = 4108;
-       LVM_GETORIGIN = 4137;
-       LVM_GETSELECTEDCOUNT = 4146;
-       LVM_GETTEXTBKCOLOR = 4133;
-       LVM_GETTEXTCOLOR = 4131;
-       LVM_GETTOPINDEX = 4135;
-       LVM_GETVIEWRECT = 4130;
-       LVM_HITTEST = 4114;
-       LVM_REDRAWITEMS = 4117;
-       LVM_SCROLL = 4116;
-       LVM_SETBKCOLOR = 4097;
-       LVM_SETCALLBACKMASK = 4107;
-       LVM_SETCOLUMNWIDTH = 4126;
-       LVM_SETIMAGELIST = 4099;
-       LVM_SETITEMCOUNT = 4143;
-       LVM_SETITEMPOSITION = 4111;
-       LVM_SETITEMPOSITION32 = 4145;
-       LVM_SETITEMSTATE = 4139;
-       LVM_SETTEXTBKCOLOR = 4134;
-       LVM_SETTEXTCOLOR = 4132;
-       LVM_SORTITEMS = 4144;
-    { List view control notifications }
-       LVM_UPDATE = 4138;
-       LVN_BEGINDRAG = -109;
-       LVN_BEGINRDRAG = -111;
-       LVN_COLUMNCLICK = -108;
-       LVN_DELETEALLITEMS = -104;
-       LVN_DELETEITEM = -103;
-       LVN_BEGINLABELEDITW = -175;
-       LVN_ENDLABELEDITW = -176;
-       LVN_GETDISPINFOW = -177;
-       LVN_SETDISPINFOW = -178;
-       LVN_BEGINLABELEDITA = -105;
-       LVN_ENDLABELEDITA = -106;
-       LVN_GETDISPINFOA = -150;
-       LVN_SETDISPINFOA = -151;
+
+  const
+     LVM_EDITLABEL = LVM_EDITLABELW;
+     LVM_FINDITEM = LVM_FINDITEMW;
+     LVM_GETCOLUMN = LVM_GETCOLUMNW;
+     LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGW;
+     LVM_GETITEM = LVM_GETITEMW;
+     LVM_GETITEMTEXT = LVM_GETITEMTEXTW;
+     LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHW;
+     LVM_INSERTCOLUMN = LVM_INSERTCOLUMNW;
+     LVM_INSERTITEM = LVM_INSERTITEMW;
+     LVM_SETCOLUMN = LVM_SETCOLUMNW;
+     LVM_SETITEM = LVM_SETITEMW;
+     LVM_SETITEMTEXT = LVM_SETITEMTEXTW;
+{$else}
+
+  const
+     LVM_EDITLABEL = LVM_EDITLABELA;
+     LVM_FINDITEM = LVM_FINDITEMA;
+     LVM_GETCOLUMN = LVM_GETCOLUMNA;
+     LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGA;
+     LVM_GETITEM = LVM_GETITEMA;
+     LVM_GETITEMTEXT = LVM_GETITEMTEXTA;
+     LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA;
+     LVM_INSERTCOLUMN = LVM_INSERTCOLUMNA;
+     LVM_INSERTITEM = LVM_INSERTITEMA;
+     LVM_SETCOLUMN = LVM_SETCOLUMNA;
+     LVM_SETITEM = LVM_SETITEMA;
+     LVM_SETITEMTEXT = LVM_SETITEMTEXTA;
+{$endif}
+  { UNICODE  }
+
+  const
+     LVM_GETITEMCOUNT = 4100;
+     LVM_GETITEMPOSITION = 4112;
+     LVM_GETITEMRECT = 4110;
+     LVM_GETITEMSPACING = 4147;
+     LVM_GETITEMSTATE = 4140;
+     LVM_GETNEXTITEM = 4108;
+     LVM_GETORIGIN = 4137;
+     LVM_GETSELECTEDCOUNT = 4146;
+     LVM_GETTEXTBKCOLOR = 4133;
+     LVM_GETTEXTCOLOR = 4131;
+     LVM_GETTOPINDEX = 4135;
+     LVM_GETVIEWRECT = 4130;
+     LVM_HITTEST = 4114;
+     LVM_REDRAWITEMS = 4117;
+     LVM_SCROLL = 4116;
+     LVM_SETBKCOLOR = 4097;
+     LVM_SETCALLBACKMASK = 4107;
+     LVM_SETCOLUMNWIDTH = 4126;
+     LVM_SETIMAGELIST = 4099;
+     LVM_SETITEMCOUNT = 4143;
+     LVM_SETITEMPOSITION = 4111;
+     LVM_SETITEMPOSITION32 = 4145;
+     LVM_SETITEMSTATE = 4139;
+     LVM_SETTEXTBKCOLOR = 4134;
+     LVM_SETTEXTCOLOR = 4132;
+     LVM_SORTITEMS = 4144;
+     LVM_UPDATE = 4138;
+  { List view control notifications  }
+     LVN_BEGINDRAG = -(109);
+     LVN_BEGINRDRAG = -(111);
+     LVN_COLUMNCLICK = -(108);
+     LVN_DELETEALLITEMS = -(104);
+     LVN_DELETEITEM = -(103);
+     LVN_BEGINLABELEDITW = -(175);
+     LVN_ENDLABELEDITW = -(176);
+     LVN_GETDISPINFOW = -(177);
+     LVN_SETDISPINFOW = -(178);
+     LVN_BEGINLABELEDITA = -(105);
+     LVN_ENDLABELEDITA = -(106);
+     LVN_GETDISPINFOA = -(150);
+     LVN_SETDISPINFOA = -(151);
 {$ifdef UNICODE}
-       LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITW;
-       LVN_ENDLABELEDIT = LVN_ENDLABELEDITW;
-       LVN_GETDISPINFO = LVN_GETDISPINFOW;
-       LVN_SETDISPINFO = LVN_SETDISPINFOW;
-{$else UNICODE}
-       LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITA;
-       LVN_ENDLABELEDIT = LVN_ENDLABELEDITA;
-       LVN_GETDISPINFO = LVN_GETDISPINFOA;
-       LVN_SETDISPINFO = LVN_SETDISPINFOA;
-{$endif UNICODE}
-       LVN_INSERTITEM = -102;
-       LVN_ITEMCHANGED = -101;
-       LVN_ITEMCHANGING = -100;
-    { Control notification }
-       LVN_KEYDOWN = -155;
-       NM_CLICK = -2;
-       NM_DBLCLK = -3;
-       NM_KILLFOCUS = -8;
-       NM_OUTOFMEMORY = -1;
-       NM_RCLICK = -5;
-       NM_RDBLCLK = -6;
-       NM_RETURN = -4;
-    { Power status }
-    { Progress bar control }
-       NM_SETFOCUS = -7;
-       PBM_DELTAPOS = 1027;
-       PBM_SETPOS = 1026;
-       PBM_SETRANGE = 1025;
-       PBM_SETSTEP = 1028;
-       PBM_STEPIT = 1029;
-    { Property sheets }
-       PSM_ADDPAGE = 1127;
-       PSM_APPLY = 1134;
-       PSM_CANCELTOCLOSE = 1131;
-       PSM_CHANGED = 1128;
-       PSM_GETTABCONTROL = 1140;
-       PSM_GETCURRENTPAGEHWND = 1142;
-       PSM_ISDIALOGMESSAGE = 1141;
-       PSM_PRESSBUTTON = 1137;
-       PSM_QUERYSIBLINGS = 1132;
-       PSM_REBOOTSYSTEM = 1130;
-       PSM_REMOVEPAGE = 1126;
-       PSM_RESTARTWINDOWS = 1129;
-       PSM_SETCURSEL = 1125;
-       PSM_SETCURSELID = 1138;
-       PSM_SETFINISHTEXTW = 1145;
-       PSM_SETTITLEW = 1144;
-       PSM_SETFINISHTEXTA = 1139;
-       PSM_SETTITLEA = 1135;
+
+  const
+     LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITW;
+     LVN_ENDLABELEDIT = LVN_ENDLABELEDITW;
+     LVN_GETDISPINFO = LVN_GETDISPINFOW;
+     LVN_SETDISPINFO = LVN_SETDISPINFOW;
+{$else}
+
+  const
+     LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITA;
+     LVN_ENDLABELEDIT = LVN_ENDLABELEDITA;
+     LVN_GETDISPINFO = LVN_GETDISPINFOA;
+     LVN_SETDISPINFO = LVN_SETDISPINFOA;
+{$endif}
+  { UNICODE  }
+
+  const
+     LVN_INSERTITEM = -(102);
+     LVN_ITEMCHANGED = -(101);
+     LVN_ITEMCHANGING = -(100);
+     LVN_KEYDOWN = -(155);
+  { Control notification  }
+     NM_CLICK = -(2);
+     NM_DBLCLK = -(3);
+     NM_KILLFOCUS = -(8);
+     NM_OUTOFMEMORY = -(1);
+     NM_RCLICK = -(5);
+     NM_RDBLCLK = -(6);
+     NM_RETURN = -(4);
+     NM_SETFOCUS = -(7);
+  { Power status  }
+  { Progress bar control  }
+     PBM_DELTAPOS = 1027;
+     PBM_SETPOS = 1026;
+     PBM_SETRANGE = 1025;
+     PBM_SETSTEP = 1028;
+     PBM_STEPIT = 1029;
+  { Property sheets  }
+     PSM_ADDPAGE = 1127;
+     PSM_APPLY = 1134;
+     PSM_CANCELTOCLOSE = 1131;
+     PSM_CHANGED = 1128;
+     PSM_GETTABCONTROL = 1140;
+     PSM_GETCURRENTPAGEHWND = 1142;
+     PSM_ISDIALOGMESSAGE = 1141;
+     PSM_PRESSBUTTON = 1137;
+     PSM_QUERYSIBLINGS = 1132;
+     PSM_REBOOTSYSTEM = 1130;
+     PSM_REMOVEPAGE = 1126;
+     PSM_RESTARTWINDOWS = 1129;
+     PSM_SETCURSEL = 1125;
+     PSM_SETCURSELID = 1138;
+     PSM_SETFINISHTEXTW = 1145;
+     PSM_SETTITLEW = 1144;
+     PSM_SETFINISHTEXTA = 1139;
+     PSM_SETTITLEA = 1135;
 {$ifdef UNICODE}
-       PSM_SETFINISHTEXT = PSM_SETFINISHTEXTW;
-       PSM_SETTITLE = PSM_SETTITLEW;
-{$else UNICODE}
-       PSM_SETFINISHTEXT = PSM_SETFINISHTEXTA;
-       PSM_SETTITLE = PSM_SETTITLEA;
-{$endif UNICODE}
-    { Property sheet notifications }
-       PSM_SETWIZBUTTONS = 1136;
-       PSM_UNCHANGED = 1133;
-       PSN_APPLY = -202;
-       PSN_HELP = -205;
-       PSN_KILLACTIVE = -201;
-       PSN_QUERYCANCEL = -209;
-       PSN_RESET = -203;
-       PSN_SETACTIVE = -200;
-       PSN_WIZBACK = -206;
-       PSN_WIZFINISH = -208;
-       PSN_WIZNEXT = -207;
-    { Status window }
-       SB_GETBORDERS = 1031;
-       SB_GETPARTS = 1030;
-       SB_GETRECT = 1034;
-       SB_GETTEXTW = 1037;
-       SB_GETTEXTLENGTHW = 1036;
-       SB_SETTEXTW = 1035;
-       SB_GETTEXTA = 1026;
-       SB_GETTEXTLENGTHA = 1027;
-       SB_SETTEXTA = 1025;
+
+  const
+     PSM_SETFINISHTEXT = PSM_SETFINISHTEXTW;
+     PSM_SETTITLE = PSM_SETTITLEW;
+{$else}
+
+  const
+     PSM_SETFINISHTEXT = PSM_SETFINISHTEXTA;
+     PSM_SETTITLE = PSM_SETTITLEA;
+{$endif}
+  { UNICODE  }
+
+  const
+     PSM_SETWIZBUTTONS = 1136;
+     PSM_UNCHANGED = 1133;
+  { Property sheet notifications  }
+     PSN_APPLY = -(202);
+     PSN_HELP = -(205);
+     PSN_KILLACTIVE = -(201);
+     PSN_QUERYCANCEL = -(209);
+     PSN_RESET = -(203);
+     PSN_SETACTIVE = -(200);
+     PSN_WIZBACK = -(206);
+     PSN_WIZFINISH = -(208);
+     PSN_WIZNEXT = -(207);
+  { Status window  }
+     SB_GETBORDERS = 1031;
+     SB_GETPARTS = 1030;
+     SB_GETRECT = 1034;
+     SB_GETTEXTW = 1037;
+     SB_GETTEXTLENGTHW = 1036;
+     SB_SETTEXTW = 1035;
+     SB_GETTEXTA = 1026;
+     SB_GETTEXTLENGTHA = 1027;
+     SB_SETTEXTA = 1025;
 {$ifdef UNICODE}
-       SB_GETTEXT = SB_GETTEXTW;
-       SB_GETTEXTLENGTH = SB_GETTEXTLENGTHW;
-       SB_SETTEXT = SB_SETTEXTW;
-{$else UNICODE}
-       SB_GETTEXT = SB_GETTEXTA;
-       SB_GETTEXTLENGTH = SB_GETTEXTLENGTHA;
-       SB_SETTEXT = SB_SETTEXTA;
-{$endif UNICODE}
-       SB_SETMINHEIGHT = 1032;
-       SB_SETPARTS = 1028;
-       SB_SIMPLE = 1033;
-    { Scroll bar control }
-       SBM_ENABLE_ARROWS = 228;
-       SBM_GETPOS = 225;
-       SBM_GETRANGE = 227;
-       SBM_GETSCROLLINFO = 234;
-       SBM_SETPOS = 224;
-       SBM_SETRANGE = 226;
-       SBM_SETRANGEREDRAW = 230;
-    { Static control }
-       SBM_SETSCROLLINFO = 233;
-       STM_GETICON = 369;
-       STM_GETIMAGE = 371;
-       STM_SETICON = 368;
-    { Static control notifications }
-       STM_SETIMAGE = 370;
-       STN_CLICKED = 0;
-       STN_DBLCLK = 1;
-       STN_DISABLE = 3;
-    { Toolbar control }
-       STN_ENABLE = 2;
-       TB_ADDBITMAP = 1043;
-       TB_ADDBUTTONS = 1044;
-       TB_AUTOSIZE = 1057;
-       TB_BUTTONCOUNT = 1048;
-       TB_BUTTONSTRUCTSIZE = 1054;
-       TB_CHANGEBITMAP = 1067;
-       TB_CHECKBUTTON = 1026;
-       TB_COMMANDTOINDEX = 1049;
-       TB_CUSTOMIZE = 1051;
-       TB_DELETEBUTTON = 1046;
-       TB_ENABLEBUTTON = 1025;
-       TB_GETBITMAP = 1068;
-       TB_GETBITMAPFLAGS = 1065;
-       TB_GETBUTTON = 1047;
-       TB_ADDSTRINGW = 1101;
-       TB_GETBUTTONTEXTW = 1099;
-       TB_SAVERESTOREW = 1100;
-       TB_ADDSTRINGA = 1052;
-       TB_GETBUTTONTEXTA = 1069;
-       TB_SAVERESTOREA = 1050;
+
+  const
+     SB_GETTEXT = SB_GETTEXTW;
+     SB_GETTEXTLENGTH = SB_GETTEXTLENGTHW;
+     SB_SETTEXT = SB_SETTEXTW;
+{$else}
+
+  const
+     SB_GETTEXT = SB_GETTEXTA;
+     SB_GETTEXTLENGTH = SB_GETTEXTLENGTHA;
+     SB_SETTEXT = SB_SETTEXTA;
+{$endif}
+  { UNICODE  }
+
+  const
+     SB_SETMINHEIGHT = 1032;
+     SB_SETPARTS = 1028;
+     SB_SIMPLE = 1033;
+  { Scroll bar control  }
+     SBM_ENABLE_ARROWS = 228;
+     SBM_GETPOS = 225;
+     SBM_GETRANGE = 227;
+     SBM_GETSCROLLINFO = 234;
+     SBM_SETPOS = 224;
+     SBM_SETRANGE = 226;
+     SBM_SETRANGEREDRAW = 230;
+     SBM_SETSCROLLINFO = 233;
+  { Static control  }
+     STM_GETICON = 369;
+     STM_GETIMAGE = 371;
+     STM_SETICON = 368;
+     STM_SETIMAGE = 370;
+  { Static control notifications  }
+     STN_CLICKED = 0;
+     STN_DBLCLK = 1;
+     STN_DISABLE = 3;
+     STN_ENABLE = 2;
+  { Toolbar control  }
+     TB_ADDBITMAP = 1043;
+     TB_ADDBUTTONS = 1044;
+     TB_AUTOSIZE = 1057;
+     TB_BUTTONCOUNT = 1048;
+     TB_BUTTONSTRUCTSIZE = 1054;
+     TB_CHANGEBITMAP = 1067;
+     TB_CHECKBUTTON = 1026;
+     TB_COMMANDTOINDEX = 1049;
+     TB_CUSTOMIZE = 1051;
+     TB_DELETEBUTTON = 1046;
+     TB_ENABLEBUTTON = 1025;
+     TB_GETBITMAP = 1068;
+     TB_GETBITMAPFLAGS = 1065;
+     TB_GETBUTTON = 1047;
+     TB_ADDSTRINGW = 1101;
+     TB_GETBUTTONTEXTW = 1099;
+     TB_SAVERESTOREW = 1100;
+     TB_ADDSTRINGA = 1052;
+     TB_GETBUTTONTEXTA = 1069;
+     TB_SAVERESTOREA = 1050;
 {$ifdef UNICODE}
-       TB_ADDSTRING = TB_ADDSTRINGW;
-       TB_GETBUTTONTEXT = TB_GETBUTTONTEXTW;
-       TB_SAVERESTORE = TB_SAVERESTOREW;
-{$else UNICODE}
-       TB_ADDSTRING = TB_ADDSTRINGA;
-       TB_GETBUTTONTEXT = TB_GETBUTTONTEXTA;
-       TB_SAVERESTORE = TB_SAVERESTOREA;
-{$endif UNICODE}
-       TB_GETITEMRECT = 1053;
-       TB_GETROWS = 1064;
-       TB_GETSTATE = 1042;
-       TB_GETTOOLTIPS = 1059;
-       TB_HIDEBUTTON = 1028;
-       TB_INDETERMINATE = 1029;
-       TB_INSERTBUTTON = 1045;
-       TB_ISBUTTONCHECKED = 1034;
-       TB_ISBUTTONENABLED = 1033;
-       TB_ISBUTTONHIDDEN = 1036;
-       TB_ISBUTTONINDETERMINATE = 1037;
-       TB_ISBUTTONPRESSED = 1035;
-       TB_PRESSBUTTON = 1027;
-       TB_SETBITMAPSIZE = 1056;
-       TB_SETBUTTONSIZE = 1055;
-       TB_SETCMDID = 1066;
-       TB_SETPARENT = 1061;
-       TB_SETROWS = 1063;
-       TB_SETSTATE = 1041;
-    { Track bar control }
-       TB_SETTOOLTIPS = 1060;
-       TBM_CLEARSEL = 1043;
-       TBM_CLEARTICS = 1033;
-       TBM_GETCHANNELRECT = 1050;
-       TBM_GETLINESIZE = 1048;
-       TBM_GETNUMTICS = 1040;
-       TBM_GETPAGESIZE = 1046;
-       TBM_GETPOS = 1024;
-       TBM_GETPTICS = 1038;
-       TBM_GETRANGEMAX = 1026;
-       TBM_GETRANGEMIN = 1025;
-       TBM_GETSELEND = 1042;
-       TBM_GETSELSTART = 1041;
-       TBM_GETTHUMBLENGTH = 1052;
-       TBM_GETTHUMBRECT = 1049;
-       TBM_GETTIC = 1027;
-       TBM_GETTICPOS = 1039;
-       TBM_SETLINESIZE = 1047;
-       TBM_SETPAGESIZE = 1045;
-       TBM_SETPOS = 1029;
-       TBM_SETRANGE = 1030;
-       TBM_SETRANGEMAX = 1032;
-       TBM_SETRANGEMIN = 1031;
-       TBM_SETSEL = 1034;
-       TBM_SETSELEND = 1036;
-       TBM_SETSELSTART = 1035;
-       TBM_SETTHUMBLENGTH = 1051;
-       TBM_SETTIC = 1028;
-    { Tool bar control notifications }
-       TBM_SETTICFREQ = 1044;
-       TBN_BEGINADJUST = -703;
-       TBN_BEGINDRAG = -701;
-       TBN_CUSTHELP = -709;
-       TBN_ENDADJUST = -704;
-       TBN_ENDDRAG = -702;
-       TBN_GETBUTTONINFOW = -720;
-       TBN_GETBUTTONINFOA = -700;
+
+  const
+     TB_ADDSTRING = TB_ADDSTRINGW;
+     TB_GETBUTTONTEXT = TB_GETBUTTONTEXTW;
+     TB_SAVERESTORE = TB_SAVERESTOREW;
+{$else}
+
+  const
+     TB_ADDSTRING = TB_ADDSTRINGA;
+     TB_GETBUTTONTEXT = TB_GETBUTTONTEXTA;
+     TB_SAVERESTORE = TB_SAVERESTOREA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TB_GETITEMRECT = 1053;
+     TB_GETROWS = 1064;
+     TB_GETSTATE = 1042;
+     TB_GETTOOLTIPS = 1059;
+     TB_HIDEBUTTON = 1028;
+     TB_INDETERMINATE = 1029;
+     TB_INSERTBUTTON = 1045;
+     TB_ISBUTTONCHECKED = 1034;
+     TB_ISBUTTONENABLED = 1033;
+     TB_ISBUTTONHIDDEN = 1036;
+     TB_ISBUTTONINDETERMINATE = 1037;
+     TB_ISBUTTONPRESSED = 1035;
+     TB_PRESSBUTTON = 1027;
+     TB_SETBITMAPSIZE = 1056;
+     TB_SETBUTTONSIZE = 1055;
+     TB_SETCMDID = 1066;
+     TB_SETPARENT = 1061;
+     TB_SETROWS = 1063;
+     TB_SETSTATE = 1041;
+     TB_SETTOOLTIPS = 1060;
+  { Track bar control  }
+     TBM_CLEARSEL = 1043;
+     TBM_CLEARTICS = 1033;
+     TBM_GETCHANNELRECT = 1050;
+     TBM_GETLINESIZE = 1048;
+     TBM_GETNUMTICS = 1040;
+     TBM_GETPAGESIZE = 1046;
+     TBM_GETPOS = 1024;
+     TBM_GETPTICS = 1038;
+     TBM_GETRANGEMAX = 1026;
+     TBM_GETRANGEMIN = 1025;
+     TBM_GETSELEND = 1042;
+     TBM_GETSELSTART = 1041;
+     TBM_GETTHUMBLENGTH = 1052;
+     TBM_GETTHUMBRECT = 1049;
+     TBM_GETTIC = 1027;
+     TBM_GETTICPOS = 1039;
+     TBM_SETLINESIZE = 1047;
+     TBM_SETPAGESIZE = 1045;
+     TBM_SETPOS = 1029;
+     TBM_SETRANGE = 1030;
+     TBM_SETRANGEMAX = 1032;
+     TBM_SETRANGEMIN = 1031;
+     TBM_SETSEL = 1034;
+     TBM_SETSELEND = 1036;
+     TBM_SETSELSTART = 1035;
+     TBM_SETTHUMBLENGTH = 1051;
+     TBM_SETTIC = 1028;
+     TBM_SETTICFREQ = 1044;
+  { Tool bar control notifications  }
+     TBN_BEGINADJUST = -(703);
+     TBN_BEGINDRAG = -(701);
+     TBN_CUSTHELP = -(709);
+     TBN_ENDADJUST = -(704);
+     TBN_ENDDRAG = -(702);
+     TBN_GETBUTTONINFOW = -(720);
+     TBN_GETBUTTONINFOA = -(700);
 {$ifdef UNICODE}
-       TBN_GETBUTTONINFO = TBN_GETBUTTONINFOW;
-{$else UNICODE}
-       TBN_GETBUTTONINFO = TBN_GETBUTTONINFOA;
-{$endif UNICODE}
-       TBN_QUERYDELETE = -707;
-       TBN_QUERYINSERT = -706;
-       TBN_RESET = -705;
-       TBN_TOOLBARCHANGE = -708;
-    { Tab control }
-       TCM_ADJUSTRECT = 4904;
-       TCM_DELETEALLITEMS = 4873;
-       TCM_DELETEITEM = 4872;
-       TCM_GETCURFOCUS = 4911;
-       TCM_GETCURSEL = 4875;
-       TCM_GETIMAGELIST = 4866;
-       TCM_GETITEMW = 4924;
-       TCM_INSERTITEMW = 4926;
-       TCM_SETITEMW = 4925;
-       TCM_GETITEMA = 4869;
-       TCM_INSERTITEMA = 4871;
-       TCM_SETITEMA = 4870;
+
+  const
+     TBN_GETBUTTONINFO = TBN_GETBUTTONINFOW;
+{$else}
+
+  const
+     TBN_GETBUTTONINFO = TBN_GETBUTTONINFOA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TBN_QUERYDELETE = -(707);
+     TBN_QUERYINSERT = -(706);
+     TBN_RESET = -(705);
+     TBN_TOOLBARCHANGE = -(708);
+  { Tab control  }
+     TCM_ADJUSTRECT = 4904;
+     TCM_DELETEALLITEMS = 4873;
+     TCM_DELETEITEM = 4872;
+     TCM_GETCURFOCUS = 4911;
+     TCM_GETCURSEL = 4875;
+     TCM_GETIMAGELIST = 4866;
+     TCM_GETITEMW = 4924;
+     TCM_INSERTITEMW = 4926;
+     TCM_SETITEMW = 4925;
+     TCM_GETITEMA = 4869;
+     TCM_INSERTITEMA = 4871;
+     TCM_SETITEMA = 4870;
 {$ifdef UNICODE}
-       TCM_GETITEM = TCM_GETITEMW;
-       TCM_INSERTITEM = TCM_INSERTITEMW;
-       TCM_SETITEM = TCM_SETITEMW;
-{$else UNICODE}
-       TCM_GETITEM = TCM_GETITEMA;
-       TCM_INSERTITEM = TCM_INSERTITEMA;
-       TCM_SETITEM = TCM_SETITEMA;
-{$endif UNICODE}
-       TCM_GETITEMCOUNT = 4868;
-       TCM_GETITEMRECT = 4874;
-       TCM_GETROWCOUNT = 4908;
-       TCM_GETTOOLTIPS = 4909;
-       TCM_HITTEST = 4877;
-       TCM_REMOVEIMAGE = 4906;
-       TCM_SETCURFOCUS = 4912;
-       TCM_SETCURSEL = 4876;
-       TCM_SETIMAGELIST = 4867;
-       TCM_SETITEMEXTRA = 4878;
-       TCM_SETITEMSIZE = 4905;
-       TCM_SETPADDING = 4907;
-    { Tab control notifications }
-       TCM_SETTOOLTIPS = 4910;
-       TCN_KEYDOWN = -550;
-       TCN_SELCHANGE = -551;
-    { Tool tip control }
-       TCN_SELCHANGING = -552;
-       TTM_ACTIVATE = 1025;
-       TTM_ADDTOOLW = 1074;
-       TTM_DELTOOLW = 1075;
-       TTM_ENUMTOOLSW = 1082;
-       TTM_GETCURRENTTOOLW = 1083;
-       TTM_GETTEXTW = 1080;
-       TTM_GETTOOLINFOW = 1077;
-       TTM_HITTESTW = 1079;
-       TTM_NEWTOOLRECTW = 1076;
-       TTM_SETTOOLINFOW = 1078;
-       TTM_UPDATETIPTEXTW = 1081;
-       TTM_ADDTOOLA = 1028;
-       TTM_DELTOOLA = 1029;
-       TTM_ENUMTOOLSA = 1038;
-       TTM_GETCURRENTTOOLA = 1039;
-       TTM_GETTEXTA = 1035;
-       TTM_GETTOOLINFOA = 1032;
-       TTM_HITTESTA = 1034;
-       TTM_NEWTOOLRECTA = 1030;
-       TTM_SETTOOLINFOA = 1033;
-       TTM_UPDATETIPTEXTA = 1036;
+
+  const
+     TCM_GETITEM = TCM_GETITEM;
+     TCM_INSERTITEM = TCM_INSERTITEMW;
+     TCM_SETITEM = TCM_SETITEMW;
+{$else}
+
+  const
+     TCM_GETITEM = TCM_GETITEMA;
+     TCM_INSERTITEM = TCM_INSERTITEMA;
+     TCM_SETITEM = TCM_SETITEMA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TCM_GETITEMCOUNT = 4868;
+     TCM_GETITEMRECT = 4874;
+     TCM_GETROWCOUNT = 4908;
+     TCM_GETTOOLTIPS = 4909;
+     TCM_HITTEST = 4877;
+     TCM_REMOVEIMAGE = 4906;
+     TCM_SETCURFOCUS = 4912;
+     TCM_SETCURSEL = 4876;
+     TCM_SETIMAGELIST = 4867;
+     TCM_SETITEMEXTRA = 4878;
+     TCM_SETITEMSIZE = 4905;
+     TCM_SETPADDING = 4907;
+     TCM_SETTOOLTIPS = 4910;
+  { Tab control notifications  }
+     TCN_KEYDOWN = -(550);
+     TCN_SELCHANGE = -(551);
+     TCN_SELCHANGING = -(552);
+  { Tool tip control  }
+     TTM_ACTIVATE = 1025;
+     TTM_ADDTOOLW = 1074;
+     TTM_DELTOOLW = 1075;
+     TTM_ENUMTOOLSW = 1082;
+     TTM_GETCURRENTTOOLW = 1083;
+     TTM_GETTEXTW = 1080;
+     TTM_GETTOOLINFOW = 1077;
+     TTM_HITTESTW = 1079;
+     TTM_NEWTOOLRECTW = 1076;
+     TTM_SETTOOLINFOW = 1078;
+     TTM_UPDATETIPTEXTW = 1081;
+     TTM_ADDTOOLA = 1028;
+     TTM_DELTOOLA = 1029;
+     TTM_ENUMTOOLSA = 1038;
+     TTM_GETCURRENTTOOLA = 1039;
+     TTM_GETTEXTA = 1035;
+     TTM_GETTOOLINFOA = 1032;
+     TTM_HITTESTA = 1034;
+     TTM_NEWTOOLRECTA = 1030;
+     TTM_SETTOOLINFOA = 1033;
+     TTM_UPDATETIPTEXTA = 1036;
 {$ifdef UNICODE}
-       TTM_ADDTOOL = TTM_ADDTOOLW;
-       TTM_DELTOOL = TTM_DELTOOLW;
-       TTM_ENUMTOOLS = TTM_ENUMTOOLSW;
-       TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLW;
-       TTM_GETTEXT = TTM_GETTEXTW;
-       TTM_GETTOOLINFO = TTM_GETTOOLINFOW;
-       TTM_HITTEST = TTM_HITTESTW;
-       TTM_NEWTOOLRECT = TTM_NEWTOOLRECTW;
-       TTM_SETTOOLINFO = TTM_SETTOOLINFOW;
-       TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTW;
-{$else UNICODE}
-       TTM_ADDTOOL = TTM_ADDTOOLA;
-       TTM_DELTOOL = TTM_DELTOOLA;
-       TTM_ENUMTOOLS = TTM_ENUMTOOLSA;
-       TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLA;
-       TTM_GETTEXT = TTM_GETTEXTA;
-       TTM_GETTOOLINFO = TTM_GETTOOLINFOA;
-       TTM_HITTEST = TTM_HITTESTA;
-       TTM_NEWTOOLRECT = TTM_NEWTOOLRECTA;
-       TTM_SETTOOLINFO = TTM_SETTOOLINFOA;
-       TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTA;
-{$endif UNICODE}
-       TTM_GETTOOLCOUNT = 1037;
-       TTM_RELAYEVENT = 1031;
-       TTM_SETDELAYTIME = 1027;
-       TTM_WINDOWFROMPOINT = 1040;
-    { Tool tip control notification }
-       TTN_NEEDTEXTW = -530;
-       TTN_NEEDTEXTA = -520;
+
+  const
+     TTM_ADDTOOL = TTM_ADDTOOLW;
+     TTM_DELTOOL = TTM_DELTOOLW;
+     TTM_ENUMTOOLS = TTM_ENUMTOOLSW;
+     TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLW;
+     TTM_GETTEXT = TTM_GETTEXTW;
+     TTM_GETTOOLINFO = TTM_GETTOOLINFOW;
+     TTM_HITTEST = TTM_HITTESTW;
+     TTM_NEWTOOLRECT = TTM_NEWTOOLRECTW;
+     TTM_SETTOOLINFO = TTM_SETTOOLINFOW;
+     TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTW;
+{$else}
+
+  const
+     TTM_ADDTOOL = TTM_ADDTOOLA;
+     TTM_DELTOOL = TTM_DELTOOLA;
+     TTM_ENUMTOOLS = TTM_ENUMTOOLSA;
+     TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLA;
+     TTM_GETTEXT = TTM_GETTEXTA;
+     TTM_GETTOOLINFO = TTM_GETTOOLINFOA;
+     TTM_HITTEST = TTM_HITTESTA;
+     TTM_NEWTOOLRECT = TTM_NEWTOOLRECTA;
+     TTM_SETTOOLINFO = TTM_SETTOOLINFOA;
+     TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TTM_GETTOOLCOUNT = 1037;
+     TTM_RELAYEVENT = 1031;
+     TTM_SETDELAYTIME = 1027;
+     TTM_WINDOWFROMPOINT = 1040;
+  { Tool tip control notification  }
+     TTN_NEEDTEXTW = -(530);
+     TTN_NEEDTEXTA = -(520);
 {$ifdef UNICODE}
-       TTN_NEEDTEXT = TTN_NEEDTEXTW;
-{$else UNICODE}
-       TTN_NEEDTEXT = TTN_NEEDTEXTA;
-{$endif UNICODE}
-       TTN_POP = -522;
-       TTN_SHOW = -521;
-    { Tree view control }
-       TVM_CREATEDRAGIMAGE = 4370;
-       TVM_DELETEITEM = 4353;
-       TVM_ENDEDITLABELNOW = 4374;
-       TVM_ENSUREVISIBLE = 4372;
-       TVM_EXPAND = 4354;
-       TVM_GETCOUNT = 4357;
-       TVM_GETEDITCONTROL = 4367;
-       TVM_GETIMAGELIST = 4360;
-       TVM_GETINDENT = 4358;
-       TVM_GETITEMRECT = 4356;
-       TVM_GETNEXTITEM = 4362;
-       TVM_GETVISIBLECOUNT = 4368;
-       TVM_HITTEST = 4369;
-       TVM_EDITLABELW = 4417;
-       TVM_GETISEARCHSTRINGW = 4416;
-       TVM_GETITEMW = 4414;
-       TVM_INSERTITEMW = 4402;
-       TVM_SETITEMW = 4415;
-       TVM_EDITLABELA = 4366;
-       TVM_GETISEARCHSTRINGA = 4375;
-       TVM_GETITEMA = 4364;
-       TVM_INSERTITEMA = 4352;
-       TVM_SETITEMA = 4365;
+
+  const
+     TTN_NEEDTEXT = TTN_NEEDTEXTW;
+{$else}
+
+  const
+     TTN_NEEDTEXT = TTN_NEEDTEXTA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TTN_POP = -(522);
+     TTN_SHOW = -(521);
+  { Tree view control  }
+     TVM_CREATEDRAGIMAGE = 4370;
+     TVM_DELETEITEM = 4353;
+     TVM_ENDEDITLABELNOW = 4374;
+     TVM_ENSUREVISIBLE = 4372;
+     TVM_EXPAND = 4354;
+     TVM_GETCOUNT = 4357;
+     TVM_GETEDITCONTROL = 4367;
+     TVM_GETIMAGELIST = 4360;
+     TVM_GETINDENT = 4358;
+     TVM_GETITEMRECT = 4356;
+     TVM_GETNEXTITEM = 4362;
+     TVM_GETVISIBLECOUNT = 4368;
+     TVM_HITTEST = 4369;
+     TVM_EDITLABELW = 4417;
+     TVM_GETISEARCHSTRINGW = 4416;
+     TVM_GETITEMW = 4414;
+     TVM_INSERTITEMW = 4402;
+     TVM_SETITEMW = 4415;
+     TVM_EDITLABELA = 4366;
+     TVM_GETISEARCHSTRINGA = 4375;
+     TVM_GETITEMA = 4364;
+     TVM_INSERTITEMA = 4352;
+     TVM_SETITEMA = 4365;
 {$ifdef UNICODE}
-       TVM_EDITLABEL = TVM_EDITLABELW;
-       TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGW;
-       TVM_GETITEM = TVM_GETITEMW;
-       TVM_INSERTITEM = TVM_INSERTITEMW;
-       TVM_SETITEM = TVM_SETITEMW;
-{$else UNICODE}
-       TVM_EDITLABEL = TVM_EDITLABELA;
-       TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGA;
-       TVM_GETITEM = TVM_GETITEMA;
-       TVM_INSERTITEM = TVM_INSERTITEMA;
-       TVM_SETITEM = TVM_SETITEMA;
-{$endif UNICODE}
-       TVM_SELECTITEM = 4363;
-       TVM_SETIMAGELIST = 4361;
-       TVM_SETINDENT = 4359;
-       TVM_SORTCHILDREN = 4371;
-       TVM_SORTCHILDRENCB = 4373;
-    { Tree view control notification }
-       TVN_KEYDOWN = -412;
-       TVN_BEGINDRAGW = -456;
-       TVN_BEGINLABELEDITW = -459;
-       TVN_BEGINRDRAGW = -457;
-       TVN_DELETEITEMW = -458;
-       TVN_ENDLABELEDITW = -460;
-       TVN_GETDISPINFOW = -452;
-       TVN_ITEMEXPANDEDW = -455;
-       TVN_ITEMEXPANDINGW = -454;
-       TVN_SELCHANGEDW = -451;
-       TVN_SELCHANGINGW = -450;
-       TVN_SETDISPINFOW = -453;
-       TVN_BEGINDRAGA = -407;
-       TVN_BEGINLABELEDITA = -410;
-       TVN_BEGINRDRAGA = -408;
-       TVN_DELETEITEMA = -409;
-       TVN_ENDLABELEDITA = -411;
-       TVN_GETDISPINFOA = -403;
-       TVN_ITEMEXPANDEDA = -406;
-       TVN_ITEMEXPANDINGA = -405;
-       TVN_SELCHANGEDA = -402;
-       TVN_SELCHANGINGA = -401;
-       TVN_SETDISPINFOA = -404;
+
+  const
+     TVM_EDITLABEL = TVM_EDITLABELW;
+     TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGW;
+     TVM_GETITEM = TVM_GETITEMW;
+     TVM_INSERTITEM = TVM_INSERTITEMW;
+     TVM_SETITEM = TVM_SETITEMW;
+{$else}
+
+  const
+     TVM_EDITLABEL = TVM_EDITLABELA;
+     TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGA;
+     TVM_GETITEM = TVM_GETITEMA;
+     TVM_INSERTITEM = TVM_INSERTITEMA;
+     TVM_SETITEM = TVM_SETITEMA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TVM_SELECTITEM = 4363;
+     TVM_SETIMAGELIST = 4361;
+     TVM_SETINDENT = 4359;
+     TVM_SORTCHILDREN = 4371;
+     TVM_SORTCHILDRENCB = 4373;
+  { Tree view control notification  }
+     TVN_KEYDOWN = -(412);
+     TVN_BEGINDRAGW = -(456);
+     TVN_BEGINLABELEDITW = -(459);
+     TVN_BEGINRDRAGW = -(457);
+     TVN_DELETEITEMW = -(458);
+     TVN_ENDLABELEDITW = -(460);
+     TVN_GETDISPINFOW = -(452);
+     TVN_ITEMEXPANDEDW = -(455);
+     TVN_ITEMEXPANDINGW = -(454);
+     TVN_SELCHANGEDW = -(451);
+     TVN_SELCHANGINGW = -(450);
+     TVN_SETDISPINFOW = -(453);
+     TVN_BEGINDRAGA = -(407);
+     TVN_BEGINLABELEDITA = -(410);
+     TVN_BEGINRDRAGA = -(408);
+     TVN_DELETEITEMA = -(409);
+     TVN_ENDLABELEDITA = -(411);
+     TVN_GETDISPINFOA = -(403);
+     TVN_ITEMEXPANDEDA = -(406);
+     TVN_ITEMEXPANDINGA = -(405);
+     TVN_SELCHANGEDA = -(402);
+     TVN_SELCHANGINGA = -(401);
+     TVN_SETDISPINFOA = -(404);
 {$ifdef UNICODE}
-       TVN_BEGINDRAG = TVN_BEGINDRAGW;
-       TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITW;
-       TVN_BEGINRDRAG = TVN_BEGINRDRAGW;
-       TVN_DELETEITEM = TVN_DELETEITEMW;
-       TVN_ENDLABELEDIT = TVN_ENDLABELEDITW;
-       TVN_GETDISPINFO = TVN_GETDISPINFOW;
-       TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDW;
-       TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGW;
-       TVN_SELCHANGED = TVN_SELCHANGEDW;
-       TVN_SELCHANGING = TVN_SELCHANGINGW;
-       TVN_SETDISPINFO = TVN_SETDISPINFOW;
-{$else UNICODE}
-       TVN_BEGINDRAG = TVN_BEGINDRAGA;
-       TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITA;
-       TVN_BEGINRDRAG = TVN_BEGINRDRAGA;
-       TVN_DELETEITEM = TVN_DELETEITEMA;
-       TVN_ENDLABELEDIT = TVN_ENDLABELEDITA;
-       TVN_GETDISPINFO = TVN_GETDISPINFOA;
-       TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDA;
-       TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGA;
-       TVN_SELCHANGED = TVN_SELCHANGEDA;
-       TVN_SELCHANGING = TVN_SELCHANGINGA;
-       TVN_SETDISPINFO = TVN_SETDISPINFOA;
-{$endif UNICODE}
-    { Up/down control }
-       UDM_GETACCEL = 1132;
-       UDM_GETBASE = 1134;
-       UDM_GETBUDDY = 1130;
-       UDM_GETPOS = 1128;
-       UDM_GETRANGE = 1126;
-       UDM_SETACCEL = 1131;
-       UDM_SETBASE = 1133;
-       UDM_SETBUDDY = 1129;
-       UDM_SETPOS = 1127;
-    { Up/down control notification }
-       UDM_SETRANGE = 1125;
-    { Window messages }
-       UDN_DELTAPOS = -722;
-       WM_ACTIVATE = 6;
-       WM_ACTIVATEAPP = 28;
-       WM_ASKCBFORMATNAME = 780;
-       WM_CANCELJOURNAL = 75;
-       WM_CANCELMODE = 31;
-       WM_CAPTURECHANGED = 533;
-       WM_CHANGECBCHAIN = 781;
-       WM_CHAR = 258;
-       WM_CHARTOITEM = 47;
-       WM_CHILDACTIVATE = 34;
-       WM_CHOOSEFONT_GETLOGFONT = 1025;
-       WM_CHOOSEFONT_SETLOGFONT = 1125;
-       WM_CHOOSEFONT_SETFLAGS = 1126;
-       WM_CLEAR = 771;
-       WM_CLOSE = 16;
-       WM_COMMAND = 273;
-       WM_COMPACTING = 65;
-       WM_COMPAREITEM = 57;
-       WM_CONTEXTMENU = 123;
-       WM_COPY = 769;
-       WM_COPYDATA = 74;
-       WM_CREATE = 1;
-       WM_CTLCOLORBTN = 309;
-       WM_CTLCOLORDLG = 310;
-       WM_CTLCOLOREDIT = 307;
-       WM_CTLCOLORLISTBOX = 308;
-       WM_CTLCOLORMSGBOX = 306;
-       WM_CTLCOLORSCROLLBAR = 311;
-       WM_CTLCOLORSTATIC = 312;
-       WM_CUT = 768;
-       WM_DEADCHAR = 259;
-       WM_DELETEITEM = 45;
-       WM_DESTROY = 2;
-       WM_DESTROYCLIPBOARD = 775;
-       WM_DEVICECHANGE = 537;
-       WM_DEVMODECHANGE = 27;
-       WM_DISPLAYCHANGE = 126;
-       WM_DRAWCLIPBOARD = 776;
-       WM_DRAWITEM = 43;
-       WM_DROPFILES = 563;
-       WM_ENABLE = 10;
-       WM_ENDSESSION = 22;
-       WM_ENTERIDLE = 289;
-       WM_ENTERMENULOOP = 529;
-       WM_ENTERSIZEMOVE = 561;
-       WM_ERASEBKGND = 20;
-       WM_EXITMENULOOP = 530;
-       WM_EXITSIZEMOVE = 562;
-       WM_FONTCHANGE = 29;
-       WM_GETDLGCODE = 135;
-       WM_GETFONT = 49;
-       WM_GETHOTKEY = 51;
-       WM_GETICON = 127;
-       WM_GETMINMAXINFO = 36;
-       WM_GETTEXT = 13;
-       WM_GETTEXTLENGTH = 14;
-       WM_HELP = 83;
-       WM_HOTKEY = 786;
-       WM_HSCROLL = 276;
-       WM_HSCROLLCLIPBOARD = 782;
-       WM_ICONERASEBKGND = 39;
-       WM_IME_CHAR = 646;
-       WM_IME_COMPOSITION = 271;
-       WM_IME_COMPOSITIONFULL = 644;
-       WM_IME_CONTROL = 643;
-       WM_IME_ENDCOMPOSITION = 270;
-       WM_IME_KEYDOWN = 656;
-       WM_IME_KEYUP = 657;
-       WM_IME_NOTIFY = 642;
-       WM_IME_SELECT = 645;
-       WM_IME_SETCONTEXT = 641;
-       WM_IME_STARTCOMPOSITION = 269;
-       WM_INITDIALOG = 272;
-       WM_INITMENU = 278;
-       WM_INITMENUPOPUP = 279;
-       WM_INPUTLANGCHANGE = 81;
-       WM_INPUTLANGCHANGEREQUEST = 80;
-       WM_KEYDOWN = 256;
-       WM_KEYUP = 257;
-       WM_KILLFOCUS = 8;
-       WM_LBUTTONDBLCLK = 515;
-       WM_LBUTTONDOWN = 513;
-       WM_LBUTTONUP = 514;
-       WM_MBUTTONDBLCLK = 521;
-       WM_MBUTTONDOWN = 519;
-       WM_MBUTTONUP = 520;
-       WM_MDIACTIVATE = 546;
-       WM_MDICASCADE = 551;
-       WM_MDICREATE = 544;
-       WM_MDIDESTROY = 545;
-       WM_MDIGETACTIVE = 553;
-       WM_MDIICONARRANGE = 552;
-       WM_MDIMAXIMIZE = 549;
-       WM_MDINEXT = 548;
-       WM_MDIREFRESHMENU = 564;
-       WM_MDIRESTORE = 547;
-       WM_MDISETMENU = 560;
-       WM_MDITILE = 550;
-       WM_MEASUREITEM = 44;
-       WM_MENUCHAR = 288;
-       WM_MENUSELECT = 287;
-       WM_MOUSEACTIVATE = 33;
-       WM_MOUSEMOVE = 512;
-       WM_MOVE = 3;
-       WM_MOVING = 534;
-       WM_NCACTIVATE = 134;
-       WM_NCCALCSIZE = 131;
-       WM_NCCREATE = 129;
-       WM_NCDESTROY = 130;
-       WM_NCHITTEST = 132;
-       WM_NCLBUTTONDBLCLK = 163;
-       WM_NCLBUTTONDOWN = 161;
-       WM_NCLBUTTONUP = 162;
-       WM_NCMBUTTONDBLCLK = 169;
-       WM_NCMBUTTONDOWN = 167;
-       WM_NCMBUTTONUP = 168;
-       WM_NCMOUSEMOVE = 160;
-       WM_NCPAINT = 133;
-       WM_NCRBUTTONDBLCLK = 166;
-       WM_NCRBUTTONDOWN = 164;
-       WM_NCRBUTTONUP = 165;
-       WM_NEXTDLGCTL = 40;
-       WM_NOTIFY = 78;
-       WM_NOTIFYFORMAT = 85;
-       WM_PAINT = 15;
-       WM_PAINTCLIPBOARD = 777;
-       WM_PAINTICON = 38;
-       WM_PALETTECHANGED = 785;
-       WM_PALETTEISCHANGING = 784;
-       WM_PARENTNOTIFY = 528;
-       WM_PASTE = 770;
-       WM_POWER = 72;
-       WM_POWERBROADCAST = 536;
-       WM_PRINT = 791;
-       WM_PRINTCLIENT = 792;
-       WM_PSD_ENVSTAMPRECT = 1029;
-       WM_PSD_FULLPAGERECT = 1025;
-       WM_PSD_GREEKTEXTRECT = 1028;
-       WM_PSD_MARGINRECT = 1027;
-       WM_PSD_MINMARGINRECT = 1026;
-       WM_PSD_PAGESETUPDLG = 1024;
-       WM_PSD_YAFULLPAGERECT = 1030;
-       WM_QUERYDRAGICON = 55;
-       WM_QUERYENDSESSION = 17;
-       WM_QUERYNEWPALETTE = 783;
-       WM_QUERYOPEN = 19;
-       WM_QUEUESYNC = 35;
-       WM_QUIT = 18;
-       WM_RBUTTONDBLCLK = 518;
-       WM_RBUTTONDOWN = 516;
-       WM_RBUTTONUP = 517;
-       WM_RENDERALLFORMATS = 774;
-       WM_RENDERFORMAT = 773;
-       WM_SETCURSOR = 32;
-       WM_SETFOCUS = 7;
-       WM_SETFONT = 48;
-       WM_SETHOTKEY = 50;
-       WM_SETICON = 128;
-       WM_SETREDRAW = 11;
-       WM_SETTEXT = 12;
-       WM_SETTINGCHANGE = 26;
-       WM_SHOWWINDOW = 24;
-       WM_SIZE = 5;
-       WM_SIZECLIPBOARD = 779;
-       WM_SIZING = 532;
-       WM_SPOOLERSTATUS = 42;
-       WM_STYLECHANGED = 125;
-       WM_STYLECHANGING = 124;
-       WM_SYSCHAR = 262;
-       WM_SYSCOLORCHANGE = 21;
-       WM_SYSCOMMAND = 274;
-       WM_SYSDEADCHAR = 263;
-       WM_SYSKEYDOWN = 260;
-       WM_SYSKEYUP = 261;
-       WM_TCARD = 82;
-       WM_TIMECHANGE = 30;
-       WM_TIMER = 275;
-       WM_UNDO = 772;
-       WM_USER = 1024;
-       WM_USERCHANGED = 84;
-       WM_VKEYTOITEM = 46;
-       WM_VSCROLL = 277;
-       WM_VSCROLLCLIPBOARD = 778;
-       WM_WINDOWPOSCHANGED = 71;
-       WM_WINDOWPOSCHANGING = 70;
-    { Window message ranges }
-       WM_WININICHANGE = 26;
-       WM_KEYFIRST = 256;
-       WM_KEYLAST = 264;
-       WM_MOUSEFIRST = 512;
-       WM_MOUSELAST = 521;
 
+  const
+     TVN_BEGINDRAG = TVN_BEGINDRAGW;
+     TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITW;
+     TVN_BEGINRDRAG = TVN_BEGINRDRAGW;
+     TVN_DELETEITEM = TVN_DELETEITEMW;
+     TVN_ENDLABELEDIT = TVN_ENDLABELEDITW;
+     TVN_GETDISPINFO = TVN_GETDISPINFOW;
+     TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDW;
+     TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGW;
+     TVN_SELCHANGED = TVN_SELCHANGEDW;
+     TVN_SELCHANGING = TVN_SELCHANGINGW;
+     TVN_SETDISPINFO = TVN_SETDISPINFOW;
+{$else}
+
+  const
+     TVN_BEGINDRAG = TVN_BEGINDRAGA;
+     TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITA;
+     TVN_BEGINRDRAG = TVN_BEGINRDRAGA;
+     TVN_DELETEITEM = TVN_DELETEITEMA;
+     TVN_ENDLABELEDIT = TVN_ENDLABELEDITA;
+     TVN_GETDISPINFO = TVN_GETDISPINFOA;
+     TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDA;
+     TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGA;
+     TVN_SELCHANGED = TVN_SELCHANGEDA;
+     TVN_SELCHANGING = TVN_SELCHANGINGA;
+     TVN_SETDISPINFO = TVN_SETDISPINFOA;
+{$endif}
+  { UNICODE  }
+  { Up/down control  }
+
+  const
+     UDM_GETACCEL = 1132;
+     UDM_GETBASE = 1134;
+     UDM_GETBUDDY = 1130;
+     UDM_GETPOS = 1128;
+     UDM_GETRANGE = 1126;
+     UDM_SETACCEL = 1131;
+     UDM_SETBASE = 1133;
+     UDM_SETBUDDY = 1129;
+     UDM_SETPOS = 1127;
+     UDM_SETRANGE = 1125;
+  { Up/down control notification  }
+     UDN_DELTAPOS = -(722);
+  { Window messages  }
+     WM_ACTIVATE = 6;
+     WM_ACTIVATEAPP = 28;
+     WM_ASKCBFORMATNAME = 780;
+     WM_CANCELJOURNAL = 75;
+     WM_CANCELMODE = 31;
+     WM_CAPTURECHANGED = 533;
+     WM_CHANGECBCHAIN = 781;
+     WM_CHAR = 258;
+     WM_CHARTOITEM = 47;
+     WM_CHILDACTIVATE = 34;
+     WM_CHOOSEFONT_GETLOGFONT = 1025;
+     WM_CHOOSEFONT_SETLOGFONT = 1125;
+     WM_CHOOSEFONT_SETFLAGS = 1126;
+     WM_CLEAR = 771;
+     WM_CLOSE = 16;
+     WM_COMMAND = 273;
+     WM_COMPACTING = 65;
+     WM_COMPAREITEM = 57;
+     WM_CONTEXTMENU = 123;
+     WM_COPY = 769;
+     WM_COPYDATA = 74;
+     WM_CREATE = 1;
+     WM_CTLCOLORBTN = 309;
+     WM_CTLCOLORDLG = 310;
+     WM_CTLCOLOREDIT = 307;
+     WM_CTLCOLORLISTBOX = 308;
+     WM_CTLCOLORMSGBOX = 306;
+     WM_CTLCOLORSCROLLBAR = 311;
+     WM_CTLCOLORSTATIC = 312;
+     WM_CUT = 768;
+     WM_DEADCHAR = 259;
+     WM_DELETEITEM = 45;
+     WM_DESTROY = 2;
+     WM_DESTROYCLIPBOARD = 775;
+     WM_DEVICECHANGE = 537;
+     WM_DEVMODECHANGE = 27;
+     WM_DISPLAYCHANGE = 126;
+     WM_DRAWCLIPBOARD = 776;
+     WM_DRAWITEM = 43;
+     WM_DROPFILES = 563;
+     WM_ENABLE = 10;
+     WM_ENDSESSION = 22;
+     WM_ENTERIDLE = 289;
+     WM_ENTERMENULOOP = 529;
+     WM_ENTERSIZEMOVE = 561;
+     WM_ERASEBKGND = 20;
+     WM_EXITMENULOOP = 530;
+     WM_EXITSIZEMOVE = 562;
+     WM_FONTCHANGE = 29;
+     WM_GETDLGCODE = 135;
+     WM_GETFONT = 49;
+     WM_GETHOTKEY = 51;
+     WM_GETICON = 127;
+     WM_GETMINMAXINFO = 36;
+     WM_GETTEXT = 13;
+     WM_GETTEXTLENGTH = 14;
+     WM_HELP = 83;
+     WM_HOTKEY = 786;
+     WM_HSCROLL = 276;
+     WM_HSCROLLCLIPBOARD = 782;
+     WM_ICONERASEBKGND = 39;
+     WM_IME_CHAR = 646;
+     WM_IME_COMPOSITION = 271;
+     WM_IME_COMPOSITIONFULL = 644;
+     WM_IME_CONTROL = 643;
+     WM_IME_ENDCOMPOSITION = 270;
+     WM_IME_KEYDOWN = 656;
+     WM_IME_KEYUP = 657;
+     WM_IME_NOTIFY = 642;
+     WM_IME_SELECT = 645;
+     WM_IME_SETCONTEXT = 641;
+     WM_IME_STARTCOMPOSITION = 269;
+     WM_INITDIALOG = 272;
+     WM_INITMENU = 278;
+     WM_INITMENUPOPUP = 279;
+     WM_INPUTLANGCHANGE = 81;
+     WM_INPUTLANGCHANGEREQUEST = 80;
+     WM_KEYDOWN = 256;
+     WM_KEYUP = 257;
+     WM_KILLFOCUS = 8;
+     WM_LBUTTONDBLCLK = 515;
+     WM_LBUTTONDOWN = 513;
+     WM_LBUTTONUP = 514;
+     WM_MBUTTONDBLCLK = 521;
+     WM_MBUTTONDOWN = 519;
+     WM_MBUTTONUP = 520;
+     WM_MDIACTIVATE = 546;
+     WM_MDICASCADE = 551;
+     WM_MDICREATE = 544;
+     WM_MDIDESTROY = 545;
+     WM_MDIGETACTIVE = 553;
+     WM_MDIICONARRANGE = 552;
+     WM_MDIMAXIMIZE = 549;
+     WM_MDINEXT = 548;
+     WM_MDIREFRESHMENU = 564;
+     WM_MDIRESTORE = 547;
+     WM_MDISETMENU = 560;
+     WM_MDITILE = 550;
+     WM_MEASUREITEM = 44;
+     WM_MENUCHAR = 288;
+     WM_MENUSELECT = 287;
+     WM_MOUSEACTIVATE = 33;
+     WM_MOUSEMOVE = 512;
+     WM_MOVE = 3;
+     WM_MOVING = 534;
+     WM_NCACTIVATE = 134;
+     WM_NCCALCSIZE = 131;
+     WM_NCCREATE = 129;
+     WM_NCDESTROY = 130;
+     WM_NCHITTEST = 132;
+     WM_NCLBUTTONDBLCLK = 163;
+     WM_NCLBUTTONDOWN = 161;
+     WM_NCLBUTTONUP = 162;
+     WM_NCMBUTTONDBLCLK = 169;
+     WM_NCMBUTTONDOWN = 167;
+     WM_NCMBUTTONUP = 168;
+     WM_NCMOUSEMOVE = 160;
+     WM_NCPAINT = 133;
+     WM_NCRBUTTONDBLCLK = 166;
+     WM_NCRBUTTONDOWN = 164;
+     WM_NCRBUTTONUP = 165;
+     WM_NEXTDLGCTL = 40;
+     WM_NOTIFY = 78;
+     WM_NOTIFYFORMAT = 85;
+     WM_NULL = 0;
+     WM_PAINT = 15;
+     WM_PAINTCLIPBOARD = 777;
+     WM_PAINTICON = 38;
+     WM_PALETTECHANGED = 785;
+     WM_PALETTEISCHANGING = 784;
+     WM_PARENTNOTIFY = 528;
+     WM_PASTE = 770;
+     WM_PENWINFIRST = 896;
+     WM_PENWINLAST = 911;
+     WM_POWER = 72;
+     WM_POWERBROADCAST = 536;
+     WM_PRINT = 791;
+     WM_PRINTCLIENT = 792;
+     WM_PSD_ENVSTAMPRECT = 1029;
+     WM_PSD_FULLPAGERECT = 1025;
+     WM_PSD_GREEKTEXTRECT = 1028;
+     WM_PSD_MARGINRECT = 1027;
+     WM_PSD_MINMARGINRECT = 1026;
+     WM_PSD_PAGESETUPDLG = 1024;
+     WM_PSD_YAFULLPAGERECT = 1030;
+     WM_QUERYDRAGICON = 55;
+     WM_QUERYENDSESSION = 17;
+     WM_QUERYNEWPALETTE = 783;
+     WM_QUERYOPEN = 19;
+     WM_QUEUESYNC = 35;
+     WM_QUIT = 18;
+     WM_RBUTTONDBLCLK = 518;
+     WM_RBUTTONDOWN = 516;
+     WM_RBUTTONUP = 517;
+     WM_RENDERALLFORMATS = 774;
+     WM_RENDERFORMAT = 773;
+     WM_SETCURSOR = 32;
+     WM_SETFOCUS = 7;
+     WM_SETFONT = 48;
+     WM_SETHOTKEY = 50;
+     WM_SETICON = 128;
+     WM_SETREDRAW = 11;
+     WM_SETTEXT = 12;
+     WM_SETTINGCHANGE = 26;
+     WM_SHOWWINDOW = 24;
+     WM_SIZE = 5;
+     WM_SIZECLIPBOARD = 779;
+     WM_SIZING = 532;
+     WM_SPOOLERSTATUS = 42;
+     WM_STYLECHANGED = 125;
+     WM_STYLECHANGING = 124;
+     WM_SYSCHAR = 262;
+     WM_SYSCOLORCHANGE = 21;
+     WM_SYSCOMMAND = 274;
+     WM_SYSDEADCHAR = 263;
+     WM_SYSKEYDOWN = 260;
+     WM_SYSKEYUP = 261;
+     WM_TCARD = 82;
+     WM_TIMECHANGE = 30;
+     WM_TIMER = 275;
+     WM_UNDO = 772;
+     WM_USER = 1024;
+     WM_USERCHANGED = 84;
+     WM_VKEYTOITEM = 46;
+     WM_VSCROLL = 277;
+     WM_VSCROLLCLIPBOARD = 778;
+     WM_WINDOWPOSCHANGED = 71;
+     WM_WINDOWPOSCHANGING = 70;
+     WM_WININICHANGE = 26;
+  { Window message ranges  }
+     WM_KEYFIRST = 256;
+     WM_KEYLAST = 264;
+     WM_MOUSEFIRST = 512;
+     WM_MOUSELAST = 521;
+{ C++ end of extern C conditionnal removed }
+  { __cplusplus  }
+{$endif}
+  { _GNU_H_WINDOWS32_MESSAGES  }
+
+{$endif read_interface}
+
+{$ifndef windows_include_files}
   implementation
 
+{ const External_library='kernel32'; not needed }
+
+
 end.
 
+{$endif windows_include_files}
 {
   $Log$
-  Revision 1.3  1998-06-10 10:39:15  peter
+  Revision 1.4  1998-08-31 11:53:58  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+  Revision 1.3  1998/06/10 10:39:15  peter
     * working w32 rtl
 
 }

+ 6797 - 4527
rtl/win32/struct.pp

@@ -14,4542 +14,6812 @@
 
  **********************************************************************}
 
-{
-    This file is generated using h2pas written by Florian Klaempfl,
-    but some modifications are done.
-
-    The C header file was structure.h of the
-    GNU Windows32 API Library Version 0.1.2
-
- ****************************************************************************
-
-  Possible defines:
-      UNICODE    makes an unicode version
-      I386       makes a version for Intel processors
-
-  FK     Florian Klaempfl
-  +      added
-  -      removed
-  *      modified
-
-  History (started with version 0.1.0):
-      19th november 1997 version:
-         + started (FK)
-
-  ToDo:
-
-  Not recommended to use:
-
-  Unimplemented:
-      typedef struct _DCB {
-        DWORD DCBlength;
-        DWORD BaudRate;
-        DWORD fBinary: 1;
-        DWORD fParity: 1;
-        DWORD fOutxCtsFlow:1;
-        DWORD fOutxDsrFlow:1;
-        DWORD fDtrControl:2;
-        DWORD fDsrSensitivity:1;
-        DWORD fTXContinueOnXoff:1;
-        DWORD fOutX: 1;
-        DWORD fInX: 1;
-        DWORD fErrorChar: 1;
-        DWORD fNull: 1;
-        DWORD fRtsControl:2;
-        DWORD fAbortOnError:1;
-        DWORD fDummy2:17;
-        WORD wReserved;
-        WORD XonLim;
-        WORD XoffLim;
-        BYTE ByteSize;
-        BYTE Parity;
-        BYTE StopBits;
-        char XonChar;
-        char XoffChar;
-        char ErrorChar;
-        char EofChar;
-        char EvtChar;
-        WORD wReserved1;
-      } DCB, *LPDCB;
-
-      typedef struct _COMSTAT {
-        DWORD fCtsHold : 1;
-        DWORD fDsrHold : 1;
-        DWORD fRlsdHold : 1;
-        DWORD fXoffHold : 1;
-        DWORD fXoffSent : 1;
-        DWORD fEof : 1;
-        DWORD fTxim : 1;
-        DWORD fReserved : 25;
-        DWORD cbInQue;
-        DWORD cbOutQue;
-      } COMSTAT, *LPCOMSTAT;
-
-      typedef struct {
-        unsigned short bAppReturnCode:8,
-          reserved:6,
-          fBusy:1,
-          fAck:1;
-      } DDEACK;
-
-      typedef struct {
-        unsigned short reserved:14,
-          fDeferUpd:1,
-          fAckReq:1;
-        short cfFormat;
-      } DDEADVISE;
-
-      typedef struct {
-        unsigned short unused:12,
-          fResponse:1,
-          fRelease:1,
-          reserved:1,
-          fAckReq:1;
-        short cfFormat;
-        BYTE  Value[1];
-      } DDEDATA;
-
-      typedef struct {
-        unsigned short unused:13,
-          fRelease:1,
-          fDeferUpd:1,
-          fAckReq:1;
-        short cfFormat;
-      } DDELN;
-
-      typedef struct {
-        unsigned short unused:13,
-          fRelease:1,
-          fReserved:2;
-        short cfFormat;
-        BYTE  Value[1];
-      } DDEPOKE;
-
-      typedef struct {
-        unsigned short unused:12,
-          fAck:1,
-          fRelease:1,
-          fReserved:1,
-          fAckReq:1;
-        short cfFormat;
-        BYTE rgb[1];
-      } DDEUP;
-
-      typedef struct _LDT_ENTRY {
-        WORD LimitLow;
-        WORD BaseLow;
-        union {
-          struct {
-            BYTE BaseMid;
-            BYTE Flags1;
-            BYTE Flags2;
-            BYTE BaseHi;
-          } Bytes;
-          struct {
-            DWORD BaseMid : 8;
-            DWORD Type : 5;
-            DWORD Dpl : 2;
-            DWORD Pres : 1;
-            DWORD LimitHi : 4;
-            DWORD Sys : 1;
-            DWORD Reserved_0 : 1;
-            DWORD Default_Big : 1;
-            DWORD Granularity : 1;
-            DWORD BaseHi : 8;
-          } Bits;
-        } HighWord;
-      } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
-
-      typedef enum tagSHCONTF {
-        SHCONTF_FOLDERS = 32,
-        SHCONTF_NONFOLDERS = 64,
-        SHCONTF_INCLUDEHIDDEN = 128,
-      } SHCONTF;
-      typedef enum tagSHGDN {
-        SHGDN_NORMAL = 0,
-        SHGDN_INFOLDER = 1,
-        SHGDN_FORPARSING = 0x8000,
-      } SHGNO;
-
- ****************************************************************************}
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
+
+
+{$ifndef windows_include_files}
+
+unit struct;
+
+{  Automatically converted by H2PAS.EXE from structures.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
+
+
+  interface
+
+   uses
+      base,defines;
+
+{$endif not windows_include_files}
+
+{$ifdef read_interface}
+
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     Structures.h
+  
+     Declarations for all the Windows32 API Structures
+  
+     Copyright (C) 1996 Free Software Foundation, Inc.
+  
+     Author:  Scott Christley <[email protected]>
+     Date: 1996
+     
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+{$ifndef _GNU_H_WINDOWS32_STRUCTURES}
+{$define _GNU_H_WINDOWS32_STRUCTURES}
+{ C++ extern C conditionnal removed }
+  { __cplusplus  }
+
+  type
+
+      { WARNING
+      the variable argument list
+      is not implemented for FPC
+      va_list is just a dummy record }
+      va_list = record
+                end;
+     ABC = record
+          abcA : longint;
+          abcB : UINT;
+          abcC : longint;
+       end;
+
+     LPABC = ^ABC;
+
+     _ABC = ABC;
+
+     ABCFLOAT = record
+          abcfA : FLOAT;
+          abcfB : FLOAT;
+          abcfC : FLOAT;
+       end;
+
+     LPABCFLOAT = ^ABCFLOAT;
+
+     _ABCFLOAT = ABCFLOAT;
+
+     ACCEL = record
+          fVirt : BYTE;
+          key : WORD;
+          cmd : WORD;
+       end;
+
+     LPACCEL = ^ACCEL;
+
+     tagACCEL = ACCEL;
+
+     ACE_HEADER = record
+          AceType : BYTE;
+          AceFlags : BYTE;
+          AceSize : WORD;
+       end;
+
+     _ACE_HEADER = ACE_HEADER;
+
+     ACCESS_MASK = DWORD;
+
+     REGSAM = ACCESS_MASK;
+
+     ACCESS_ALLOWED_ACE = record
+          Header : ACE_HEADER;
+          Mask : ACCESS_MASK;
+          SidStart : DWORD;
+       end;
+
+     _ACCESS_ALLOWED_ACE = ACCESS_ALLOWED_ACE;
+
+     ACCESS_DENIED_ACE = record
+          Header : ACE_HEADER;
+          Mask : ACCESS_MASK;
+          SidStart : DWORD;
+       end;
+
+     _ACCESS_DENIED_ACE = ACCESS_DENIED_ACE;
+
+     ACCESSTIMEOUT = record
+          cbSize : UINT;
+          dwFlags : DWORD;
+          iTimeOutMSec : DWORD;
+       end;
+
+     tagACCESSTIMEOUT = ACCESSTIMEOUT;
+
+     ACL = record
+          AclRevision : BYTE;
+          Sbz1 : BYTE;
+          AclSize : WORD;
+          AceCount : WORD;
+          Sbz2 : WORD;
+       end;
+
+     PACL = ^ACL;
+
+     _ACL = ACL;
+
+     ACL_REVISION_INFORMATION = record
+          AclRevision : DWORD;
+       end;
+
+     _ACL_REVISION_INFORMATION = ACL_REVISION_INFORMATION;
+
+     ACL_SIZE_INFORMATION = record
+          AceCount : DWORD;
+          AclBytesInUse : DWORD;
+          AclBytesFree : DWORD;
+       end;
+
+     _ACL_SIZE_INFORMATION = ACL_SIZE_INFORMATION;
+
+     ACTION_HEADER = record
+          transport_id : ULONG;
+          action_code : USHORT;
+          reserved : USHORT;
+       end;
+
+     _ACTION_HEADER = ACTION_HEADER;
+
+     ADAPTER_STATUS = record
+          adapter_address : array[0..5] of UCHAR;
+          rev_major : UCHAR;
+          reserved0 : UCHAR;
+          adapter_type : UCHAR;
+          rev_minor : UCHAR;
+          duration : WORD;
+          frmr_recv : WORD;
+          frmr_xmit : WORD;
+          iframe_recv_err : WORD;
+          xmit_aborts : WORD;
+          xmit_success : DWORD;
+          recv_success : DWORD;
+          iframe_xmit_err : WORD;
+          recv_buff_unavail : WORD;
+          t1_timeouts : WORD;
+          ti_timeouts : WORD;
+          reserved1 : DWORD;
+          free_ncbs : WORD;
+          max_cfg_ncbs : WORD;
+          max_ncbs : WORD;
+          xmit_buf_unavail : WORD;
+          max_dgram_size : WORD;
+          pending_sess : WORD;
+          max_cfg_sess : WORD;
+          max_sess : WORD;
+          max_sess_pkt_size : WORD;
+          name_count : WORD;
+       end;
+
+     _ADAPTER_STATUS = ADAPTER_STATUS;
+
+     ADDJOB_INFO_1 = record
+          Path : LPTSTR;
+          JobId : DWORD;
+       end;
+
+     _ADDJOB_INFO_1 = ADDJOB_INFO_1;
+
+     ANIMATIONINFO = record
+          cbSize : UINT;
+          iMinAnimate : longint;
+       end;
+
+     LPANIMATIONINFO = ^ANIMATIONINFO;
+
+     tagANIMATIONINFO = ANIMATIONINFO;
+
+     RECT = record
+          left : LONG;
+          top : LONG;
+          right : LONG;
+          bottom : LONG;
+       end;
+
+     LPRECT = ^RECT;
+
+     PRECT = ^RECT;
+
+     _RECT = RECT;
+
+     RECTL = record
+          left : LONG;
+          top : LONG;
+          right : LONG;
+          bottom : LONG;
+       end;
+
+     _RECTL = RECTL;
+
+     APPBARDATA = record
+          cbSize : DWORD;
+          hWnd : HWND;
+          uCallbackMessage : UINT;
+          uEdge : UINT;
+          rc : RECT;
+          lParam : LPARAM;
+       end;
+
+     PAPPBARDATA = ^APPBARDATA;
+
+     _AppBarData = APPBARDATA;
+
+     BITMAP = record
+          bmType : LONG;
+          bmWidth : LONG;
+          bmHeight : LONG;
+          bmWidthBytes : LONG;
+          bmPlanes : WORD;
+          bmBitsPixel : WORD;
+          bmBits : LPVOID;
+       end;
+
+     PBITMAP = ^BITMAP;
+
+     NPBITMAP = ^BITMAP;
+
+     LPBITMAP = ^BITMAP;
+
+     tagBITMAP = BITMAP;
+
+     BITMAPCOREHEADER = record
+          bcSize : DWORD;
+          bcWidth : WORD;
+          bcHeight : WORD;
+          bcPlanes : WORD;
+          bcBitCount : WORD;
+       end;
+
+     tagBITMAPCOREHEADER = BITMAPCOREHEADER;
+
+     RGBTRIPLE = record
+          rgbtBlue : BYTE;
+          rgbtGreen : BYTE;
+          rgbtRed : BYTE;
+       end;
+
+     tagRGBTRIPLE = RGBTRIPLE;
+
+     BITMAPCOREINFO = record
+          bmciHeader : BITMAPCOREHEADER;
+          bmciColors : array[0..0] of RGBTRIPLE;
+       end;
+
+     PBITMAPCOREINFO = ^BITMAPCOREINFO;
+
+     LPBITMAPCOREINFO = ^BITMAPCOREINFO;
+
+     _BITMAPCOREINFO = BITMAPCOREINFO;
+(* error 
+  WORD    bfReserved1; 
+  WORD    bfReserved2; 
+ in declarator_list *)
+
+     BITMAPINFOHEADER = record
+          biSize : DWORD;
+          biWidth : LONG;
+          biHeight : LONG;
+          biPlanes : WORD;
+          biBitCount : WORD;
+          biCompression : DWORD;
+          biSizeImage : DWORD;
+          biXPelsPerMeter : LONG;
+          biYPelsPerMeter : LONG;
+          biClrUsed : DWORD;
+          biClrImportant : DWORD;
+       end;
+
+     LPBITMAPINFOHEADER = ^BITMAPINFOHEADER;
+
+     PBITMAPINFO = ^BITMAPINFOHEADER;
+
+     tagBITMAPINFOHEADER = BITMAPINFOHEADER;
+
+     RGBQUAD = record
+          rgbBlue : BYTE;
+          rgbGreen : BYTE;
+          rgbRed : BYTE;
+          rgbReserved : BYTE;
+       end;
+
+     tagRGBQUAD = RGBQUAD;
+
+     BITMAPINFO = record
+          bmiHeader : BITMAPINFOHEADER;
+          bmiColors : array[0..0] of RGBQUAD;
+       end;
+
+     LPBITMAPINFO = ^BITMAPINFO;
+
+     tagBITMAPINFO = BITMAPINFO;
+
+     FXPT2DOT30 = longint;
+
+     LPFXPT2DOT30 = ^FXPT2DOT30;
+
+     CIEXYZ = record
+          ciexyzX : FXPT2DOT30;
+          ciexyzY : FXPT2DOT30;
+          ciexyzZ : FXPT2DOT30;
+       end;
+
+     tagCIEXYZ = CIEXYZ;
+
+     LPCIEXYZ = ^CIEXYZ;
+
+     CIEXYZTRIPLE = record
+          ciexyzRed : CIEXYZ;
+          ciexyzGreen : CIEXYZ;
+          ciexyzBlue : CIEXYZ;
+       end;
+
+     tagCIEXYZTRIPLE = CIEXYZTRIPLE;
+
+     LPCIEXYZTRIPLE = ^CIEXYZTRIPLE;
+
+     BITMAPV4HEADER = record
+          bV4Size : DWORD;
+          bV4Width : LONG;
+          bV4Height : LONG;
+          bV4Planes : WORD;
+          bV4BitCount : WORD;
+          bV4V4Compression : DWORD;
+          bV4SizeImage : DWORD;
+          bV4XPelsPerMeter : LONG;
+          bV4YPelsPerMeter : LONG;
+          bV4ClrUsed : DWORD;
+          bV4ClrImportant : DWORD;
+          bV4RedMask : DWORD;
+          bV4GreenMask : DWORD;
+          bV4BlueMask : DWORD;
+          bV4AlphaMask : DWORD;
+          bV4CSType : DWORD;
+          bV4Endpoints : CIEXYZTRIPLE;
+          bV4GammaRed : DWORD;
+          bV4GammaGreen : DWORD;
+          bV4GammaBlue : DWORD;
+       end;
+
+     LPBITMAPV4HEADER = ^BITMAPV4HEADER;
+
+     PBITMAPV4HEADER = ^BITMAPV4HEADER;
+
+     BLOB = record
+          cbSize : ULONG;
+          pBlobData : ^BYTE;
+       end;
+
+     _BLOB = BLOB;
+
+     SHITEMID = record
+          cb : USHORT;
+          abID : array[0..0] of BYTE;
+       end;
+
+     LPSHITEMID = ^SHITEMID;
+
+     _SHITEMID = SHITEMID;
+(* Const before type ignored *)
+
+     LPCSHITEMID = ^SHITEMID;
+
+     ITEMIDLIST = record
+          mkid : SHITEMID;
+       end;
+
+     LPITEMIDLIST = ^ITEMIDLIST;
+
+     _ITEMIDLIST = ITEMIDLIST;
+(* Const before type ignored *)
+
+     LPCITEMIDLIST = ^ITEMIDLIST;
+
+     BROWSEINFO = record
+          hwndOwner : HWND;
+          pidlRoot : LPCITEMIDLIST;
+          pszDisplayName : LPSTR;
+          lpszTitle : LPCSTR;
+          ulFlags : UINT;
+          lpfn : BFFCALLBACK;
+          lParam : LPARAM;
+          iImage : longint;
+       end;
+
+     PBROWSEINFO = ^BROWSEINFO;
+
+     LPBROWSEINFO = ^BROWSEINFO;
+
+     _browseinfo = BROWSEINFO;
+
+     FILETIME = record
+          dwLowDateTime : DWORD;
+          dwHighDateTime : DWORD;
+       end;
+
+     LPFILETIME = ^FILETIME;
+
+     PFILETIME = ^FILETIME;
+
+     _FILETIME = FILETIME;
+
+     BY_HANDLE_FILE_INFORMATION = record
+          dwFileAttributes : DWORD;
+          ftCreationTime : FILETIME;
+          ftLastAccessTime : FILETIME;
+          ftLastWriteTime : FILETIME;
+          dwVolumeSerialNumber : DWORD;
+          nFileSizeHigh : DWORD;
+          nFileSizeLow : DWORD;
+          nNumberOfLinks : DWORD;
+          nFileIndexHigh : DWORD;
+          nFileIndexLow : DWORD;
+       end;
+
+     LPBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
+
+     _BY_HANDLE_FILE_INFORMATION = BY_HANDLE_FILE_INFORMATION;
+
+     FIXED = record
+          fract : WORD;
+          value : integer;
+       end;
+
+     _FIXED = FIXED;
+
+     POINT = record
+          x : LONG;
+          y : LONG;
+       end;
+
+     LPPOINT = ^POINT;
+
+     PPOINT = ^POINT;
+
+     tagPOINT = POINT;
+
+     POINTFX = record
+          x : FIXED;
+          y : FIXED;
+       end;
+
+     tagPOINTFX = POINTFX;
+
+     POINTL = record
+          x : LONG;
+          y : LONG;
+       end;
+
+     _POINTL = POINTL;
+
+     POINTS = record
+          x : SHORT;
+          y : SHORT;
+       end;
+
+     tagPOINTS = POINTS;
+
+     CANDIDATEFORM = record
+          dwIndex : DWORD;
+          dwStyle : DWORD;
+          ptCurrentPos : POINT;
+          rcArea : RECT;
+       end;
+
+     LPCANDIDATEFORM = ^CANDIDATEFORM;
+
+     _tagCANDIDATEFORM = CANDIDATEFORM;
+
+     CANDIDATELIST = record
+          dwSize : DWORD;
+          dwStyle : DWORD;
+          dwCount : DWORD;
+          dwSelection : DWORD;
+          dwPageStart : DWORD;
+          dwPageSize : DWORD;
+          dwOffset : array[0..0] of DWORD;
+       end;
+
+     LPCANDIDATELIST = ^CANDIDATELIST;
+
+     _tagCANDIDATELIST = CANDIDATELIST;
+
+     CREATESTRUCT = record
+          lpCreateParams : LPVOID;
+          hInstance : HINSTANCE;
+          hMenu : HMENU;
+          hwndParent : HWND;
+          cy : longint;
+          cx : longint;
+          y : longint;
+          x : longint;
+          style : LONG;
+          lpszName : LPCTSTR;
+          lpszClass : LPCTSTR;
+          dwExStyle : DWORD;
+       end;
+
+     LPCREATESTRUCT = ^CREATESTRUCT;
+
+     tagCREATESTRUCT = CREATESTRUCT;
+
+     CBT_CREATEWND = record
+          lpcs : LPCREATESTRUCT;
+          hwndInsertAfter : HWND;
+       end;
+
+     tagCBT_CREATEWND = CBT_CREATEWND;
+
+     CBTACTIVATESTRUCT = record
+          fMouse : WINBOOL;
+          hWndActive : HWND;
+       end;
+
+     tagCBTACTIVATESTRUCT = CBTACTIVATESTRUCT;
+
+     CHAR_INFO = record
+          Char : record
+              case longint of
+                 0 : ( UnicodeChar : WCHAR );
+                 1 : ( AsciiChar : CHAR );
+              end;
+          Attributes : WORD;
+       end;
+
+     PCHAR_INFO = ^CHAR_INFO;
+
+     _CHAR_INFO = CHAR_INFO;
+
+     CHARFORMAT = record
+          cbSize : UINT;
+          dwMask : DWORD;
+          dwEffects : DWORD;
+          yHeight : LONG;
+          yOffset : LONG;
+          crTextColor : COLORREF;
+          bCharSet : BYTE;
+          bPitchAndFamily : BYTE;
+          szFaceName : array[0..(LF_FACESIZE)-1] of TCHAR;
+       end;
+
+     _charformat = CHARFORMAT;
+
+     CHARRANGE = record
+          cpMin : LONG;
+          cpMax : LONG;
+       end;
+
+     _charrange = CHARRANGE;
+
+     CHARSET = record
+          aflBlock : array[0..2] of DWORD;
+          flLang : DWORD;
+       end;
+
+     tagCHARSET = CHARSET;
+
+     FONTSIGNATURE = record
+          fsUsb : array[0..3] of DWORD;
+          fsCsb : array[0..1] of DWORD;
+       end;
+
+     LPFONTSIGNATURE = ^FONTSIGNATURE;
+
+     tagFONTSIGNATURE = FONTSIGNATURE;
+
+     CHARSETINFO = record
+          ciCharset : UINT;
+          ciACP : UINT;
+          fs : FONTSIGNATURE;
+       end;
+
+     LPCHARSETINFO = ^CHARSETINFO;
+
+     {CHOOSECOLOR = record confilcts with function ChooseColor }
+     TCHOOSECOLOR = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hInstance : HWND;
+          rgbResult : COLORREF;
+          lpCustColors : ^COLORREF;
+          Flags : DWORD;
+          lCustData : LPARAM;
+          lpfnHook : LPCCHOOKPROC;
+          lpTemplateName : LPCTSTR;
+       end;
+
+     LPCHOOSECOLOR = ^TCHOOSECOLOR;
+
+     LOGFONT = record
+          lfHeight : LONG;
+          lfWidth : LONG;
+          lfEscapement : LONG;
+          lfOrientation : LONG;
+          lfWeight : LONG;
+          lfItalic : BYTE;
+          lfUnderline : BYTE;
+          lfStrikeOut : BYTE;
+          lfCharSet : BYTE;
+          lfOutPrecision : BYTE;
+          lfClipPrecision : BYTE;
+          lfQuality : BYTE;
+          lfPitchAndFamily : BYTE;
+          lfFaceName : array[0..(LF_FACESIZE)-1] of TCHAR;
+       end;
+
+     LPLOGFONT = ^LOGFONT;
+
+     PLOGFONT = ^LOGFONT;
+
+     tagLOGFONT = LOGFONT;
+
+     {CHOOSEFONT = record conflicts with ChosseFont function }
+     TCHOOSEFONT = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hDC : HDC;
+          lpLogFont : LPLOGFONT;
+          iPointSize : INT;
+          Flags : DWORD;
+          rgbColors : DWORD;
+          lCustData : LPARAM;
+          lpfnHook : LPCFHOOKPROC;
+          lpTemplateName : LPCTSTR;
+          hInstance : HINSTANCE;
+          lpszStyle : LPTSTR;
+          nFontType : WORD;
+          ___MISSING_ALIGNMENT__ : WORD;
+          nSizeMin : INT;
+          nSizeMax : INT;
+       end;
+
+     LPCHOOSEFONT = ^TCHOOSEFONT;
+
+     CIDA = record
+          cidl : UINT;
+          aoffset : array[0..0] of UINT;
+       end;
+
+     LPIDA = ^CIDA;
+
+     _IDA = CIDA;
+
+     CLIENTCREATESTRUCT = record
+          hWindowMenu : HANDLE;
+          idFirstChild : UINT;
+       end;
+
+     tagCLIENTCREATESTRUCT = CLIENTCREATESTRUCT;
+
+     LPCLIENTCREATESTRUCT = ^CLIENTCREATESTRUCT;
+
+     CMINVOKECOMMANDINFO = record
+          cbSize : DWORD;
+          fMask : DWORD;
+          hwnd : HWND;
+          lpVerb : LPCSTR;
+          lpParameters : LPCSTR;
+          lpDirectory : LPCSTR;
+          nShow : longint;
+          dwHotKey : DWORD;
+          hIcon : HANDLE;
+       end;
+
+     LPCMINVOKECOMMANDINFO = ^CMINVOKECOMMANDINFO;
+
+     _CMInvokeCommandInfo = CMINVOKECOMMANDINFO;
+
+     COLORADJUSTMENT = record
+          caSize : WORD;
+          caFlags : WORD;
+          caIlluminantIndex : WORD;
+          caRedGamma : WORD;
+          caGreenGamma : WORD;
+          caBlueGamma : WORD;
+          caReferenceBlack : WORD;
+          caReferenceWhite : WORD;
+          caContrast : SHORT;
+          caBrightness : SHORT;
+          caColorfulness : SHORT;
+          caRedGreenTint : SHORT;
+       end;
+
+     LPCOLORADJUSTMENT = ^COLORADJUSTMENT;
+
+     tagCOLORADJUSTMENT = COLORADJUSTMENT;
+
+     COLORMAP = record
+          from : COLORREF;
+          _to : COLORREF;
+       end;
+
+     LPCOLORMAP = ^COLORMAP;
+
+     _COLORMAP = COLORMAP;
+
+     DCB = record
+          DCBlength : DWORD;
+          BaudRate : DWORD;
+          flag0 : longint;
+          wReserved : WORD;
+          XonLim : WORD;
+          XoffLim : WORD;
+          ByteSize : BYTE;
+          Parity : BYTE;
+          StopBits : BYTE;
+          XonChar : char;
+          XoffChar : char;
+          ErrorChar : char;
+          EofChar : char;
+          EvtChar : char;
+          wReserved1 : WORD;
+       end;
+
+     LPDCB = ^DCB;
+
+     _DCB = DCB;
+  const
+     bm_DCB_fBinary = $1;
+     bp_DCB_fBinary = 0;
+     bm_DCB_fParity = $2;
+     bp_DCB_fParity = 1;
+     bm_DCB_fOutxCtsFlow = $4;
+     bp_DCB_fOutxCtsFlow = 2;
+     bm_DCB_fOutxDsrFlow = $8;
+     bp_DCB_fOutxDsrFlow = 3;
+     bm_DCB_fDtrControl = $30;
+     bp_DCB_fDtrControl = 4;
+     bm_DCB_fDsrSensitivity = $40;
+     bp_DCB_fDsrSensitivity = 6;
+     bm_DCB_fTXContinueOnXoff = $80;
+     bp_DCB_fTXContinueOnXoff = 7;
+     bm_DCB_fOutX = $100;
+     bp_DCB_fOutX = 8;
+     bm_DCB_fInX = $200;
+     bp_DCB_fInX = 9;
+     bm_DCB_fErrorChar = $400;
+     bp_DCB_fErrorChar = 10;
+     bm_DCB_fNull = $800;
+     bp_DCB_fNull = 11;
+     bm_DCB_fRtsControl = $3000;
+     bp_DCB_fRtsControl = 12;
+     bm_DCB_fAbortOnError = $4000;
+     bp_DCB_fAbortOnError = 14;
+     bm_DCB_fDummy2 = $FFFF8000;
+     bp_DCB_fDummy2 = 15;
+  function fBinary(var a : DCB) : DWORD;
+  procedure set_fBinary(var a : DCB; __fBinary : DWORD);
+  function fParity(var a : DCB) : DWORD;
+  procedure set_fParity(var a : DCB; __fParity : DWORD);
+  function fOutxCtsFlow(var a : DCB) : DWORD;
+  procedure set_fOutxCtsFlow(var a : DCB; __fOutxCtsFlow : DWORD);
+  function fOutxDsrFlow(var a : DCB) : DWORD;
+  procedure set_fOutxDsrFlow(var a : DCB; __fOutxDsrFlow : DWORD);
+  function fDtrControl(var a : DCB) : DWORD;
+  procedure set_fDtrControl(var a : DCB; __fDtrControl : DWORD);
+  function fDsrSensitivity(var a : DCB) : DWORD;
+  procedure set_fDsrSensitivity(var a : DCB; __fDsrSensitivity : DWORD);
+  function fTXContinueOnXoff(var a : DCB) : DWORD;
+  procedure set_fTXContinueOnXoff(var a : DCB; __fTXContinueOnXoff : DWORD);
+  function fOutX(var a : DCB) : DWORD;
+  procedure set_fOutX(var a : DCB; __fOutX : DWORD);
+  function fInX(var a : DCB) : DWORD;
+  procedure set_fInX(var a : DCB; __fInX : DWORD);
+  function fErrorChar(var a : DCB) : DWORD;
+  procedure set_fErrorChar(var a : DCB; __fErrorChar : DWORD);
+  function fNull(var a : DCB) : DWORD;
+  procedure set_fNull(var a : DCB; __fNull : DWORD);
+  function fRtsControl(var a : DCB) : DWORD;
+  procedure set_fRtsControl(var a : DCB; __fRtsControl : DWORD);
+  function fAbortOnError(var a : DCB) : DWORD;
+  procedure set_fAbortOnError(var a : DCB; __fAbortOnError : DWORD);
+  function fDummy2(var a : DCB) : DWORD;
+  procedure set_fDummy2(var a : DCB; __fDummy2 : DWORD);
+
+  type
+
+     COMMCONFIG = record
+          dwSize : DWORD;
+          wVersion : WORD;
+          wReserved : WORD;
+          dcb : DCB;
+          dwProviderSubType : DWORD;
+          dwProviderOffset : DWORD;
+          dwProviderSize : DWORD;
+          wcProviderData : array[0..0] of WCHAR;
+       end;
+
+     LPCOMMCONFIG = ^COMMCONFIG;
+
+     _COMM_CONFIG = COMMCONFIG;
+
+     COMMPROP = record
+          wPacketLength : WORD;
+          wPacketVersion : WORD;
+          dwServiceMask : DWORD;
+          dwReserved1 : DWORD;
+          dwMaxTxQueue : DWORD;
+          dwMaxRxQueue : DWORD;
+          dwMaxBaud : DWORD;
+          dwProvSubType : DWORD;
+          dwProvCapabilities : DWORD;
+          dwSettableParams : DWORD;
+          dwSettableBaud : DWORD;
+          wSettableData : WORD;
+          wSettableStopParity : WORD;
+          dwCurrentTxQueue : DWORD;
+          dwCurrentRxQueue : DWORD;
+          dwProvSpec1 : DWORD;
+          dwProvSpec2 : DWORD;
+          wcProvChar : array[0..0] of WCHAR;
+       end;
+
+     LPCOMMPROP = ^COMMPROP;
+
+     _COMMPROP = COMMPROP;
+
+     COMMTIMEOUTS = record
+          ReadIntervalTimeout : DWORD;
+          ReadTotalTimeoutMultiplier : DWORD;
+          ReadTotalTimeoutConstant : DWORD;
+          WriteTotalTimeoutMultiplier : DWORD;
+          WriteTotalTimeoutConstant : DWORD;
+       end;
+
+     LPCOMMTIMEOUTS = ^COMMTIMEOUTS;
+
+     _COMMTIMEOUTS = COMMTIMEOUTS;
+
+     COMPAREITEMSTRUCT = record
+          CtlType : UINT;
+          CtlID : UINT;
+          hwndItem : HWND;
+          itemID1 : UINT;
+          itemData1 : DWORD;
+          itemID2 : UINT;
+          itemData2 : DWORD;
+       end;
+
+     tagCOMPAREITEMSTRUCT = COMPAREITEMSTRUCT;
+
+     COMPCOLOR = record
+          crText : COLORREF;
+          crBackground : COLORREF;
+          dwEffects : DWORD;
+       end;
+
+     COMPOSITIONFORM = record
+          dwStyle : DWORD;
+          ptCurrentPos : POINT;
+          rcArea : RECT;
+       end;
+
+     LPCOMPOSITIONFORM = ^COMPOSITIONFORM;
+
+     _tagCOMPOSITIONFORM = COMPOSITIONFORM;
+
+     COMSTAT = record
+          flag0 : longint;
+          cbInQue : DWORD;
+          cbOutQue : DWORD;
+       end;
+
+     LPCOMSTAT = ^COMSTAT;
+
+     _COMSTAT = COMSTAT;
+  const
+     bm_COMSTAT_fCtsHold = $1;
+     bp_COMSTAT_fCtsHold = 0;
+     bm_COMSTAT_fDsrHold = $2;
+     bp_COMSTAT_fDsrHold = 1;
+     bm_COMSTAT_fRlsdHold = $4;
+     bp_COMSTAT_fRlsdHold = 2;
+     bm_COMSTAT_fXoffHold = $8;
+     bp_COMSTAT_fXoffHold = 3;
+     bm_COMSTAT_fXoffSent = $10;
+     bp_COMSTAT_fXoffSent = 4;
+     bm_COMSTAT_fEof = $20;
+     bp_COMSTAT_fEof = 5;
+     bm_COMSTAT_fTxim = $40;
+     bp_COMSTAT_fTxim = 6;
+     bm_COMSTAT_fReserved = $FFFFFF80;
+     bp_COMSTAT_fReserved = 7;
+  function fCtsHold(var a : COMSTAT) : DWORD;
+  procedure set_fCtsHold(var a : COMSTAT; __fCtsHold : DWORD);
+  function fDsrHold(var a : COMSTAT) : DWORD;
+  procedure set_fDsrHold(var a : COMSTAT; __fDsrHold : DWORD);
+  function fRlsdHold(var a : COMSTAT) : DWORD;
+  procedure set_fRlsdHold(var a : COMSTAT; __fRlsdHold : DWORD);
+  function fXoffHold(var a : COMSTAT) : DWORD;
+  procedure set_fXoffHold(var a : COMSTAT; __fXoffHold : DWORD);
+  function fXoffSent(var a : COMSTAT) : DWORD;
+  procedure set_fXoffSent(var a : COMSTAT; __fXoffSent : DWORD);
+  function fEof(var a : COMSTAT) : DWORD;
+  procedure set_fEof(var a : COMSTAT; __fEof : DWORD);
+  function fTxim(var a : COMSTAT) : DWORD;
+  procedure set_fTxim(var a : COMSTAT; __fTxim : DWORD);
+  function fReserved(var a : COMSTAT) : DWORD;
+  procedure set_fReserved(var a : COMSTAT; __fReserved : DWORD);
+
+  type
+
+     CONSOLE_CURSOR_INFO = record
+          dwSize : DWORD;
+          bVisible : WINBOOL;
+       end;
+
+     PCONSOLE_CURSOR_INFO = ^CONSOLE_CURSOR_INFO;
+
+     _CONSOLE_CURSOR_INFO = CONSOLE_CURSOR_INFO;
+
+     COORD = record
+          X : SHORT;
+          Y : SHORT;
+       end;
+
+     _COORD = COORD;
+
+     SMALL_RECT = record
+          Left : SHORT;
+          Top : SHORT;
+          Right : SHORT;
+          Bottom : SHORT;
+       end;
+
+     PSMALL_RECT = ^SMALL_RECT;
+
+     _SMALL_RECT = SMALL_RECT;
+
+     CONSOLE_SCREEN_BUFFER_INFO = record
+          dwSize : COORD;
+          dwCursorPosition : COORD;
+          wAttributes : WORD;
+          srWindow : SMALL_RECT;
+          dwMaximumWindowSize : COORD;
+       end;
+
+     PCONSOLE_SCREEN_BUFFER_INFO = ^CONSOLE_SCREEN_BUFFER_INFO;
+
+     _CONSOLE_SCREEN_BUFFER_INFO = CONSOLE_SCREEN_BUFFER_INFO;
+{$ifdef __i386__}
+
+  type
+
+     FLOATING_SAVE_AREA = record
+          ControlWord : DWORD;
+          StatusWord : DWORD;
+          TagWord : DWORD;
+          ErrorOffset : DWORD;
+          ErrorSelector : DWORD;
+          DataOffset : DWORD;
+          DataSelector : DWORD;
+          RegisterArea : array[0..79] of BYTE;
+          Cr0NpxState : DWORD;
+       end;
+
+     _FLOATING_SAVE_AREA = FLOATING_SAVE_AREA;
+
+     CONTEXT = record
+          ContextFlags : DWORD;
+          Dr0 : DWORD;
+          Dr1 : DWORD;
+          Dr2 : DWORD;
+          Dr3 : DWORD;
+          Dr6 : DWORD;
+          Dr7 : DWORD;
+          FloatSave : FLOATING_SAVE_AREA;
+          SegGs : DWORD;
+          SegFs : DWORD;
+          SegEs : DWORD;
+          SegDs : DWORD;
+          Edi : DWORD;
+          Esi : DWORD;
+          Ebx : DWORD;
+          Edx : DWORD;
+          Ecx : DWORD;
+          Eax : DWORD;
+          Ebp : DWORD;
+          Eip : DWORD;
+          SegCs : DWORD;
+          EFlags : DWORD;
+          Esp : DWORD;
+          SegSs : DWORD;
+       end;
+
+     PCONTEXT = ^CONTEXT;
+
+     LPCONTEXT = ^CONTEXT;
+
+     _CONTEXT = CONTEXT;
+{$else}
+  { __ppc__  }
+  { Floating point registers returned when CONTEXT_FLOATING_POINT is set  }
+  { Integer registers returned when CONTEXT_INTEGER is set.   }
+  { Condition register  }
+  { Fixed point exception register  }
+  { The following are set when CONTEXT_CONTROL is set.   }
+  { Machine status register  }
+  { Instruction address register  }
+  { Link register  }
+  { Control register  }
+  { Control which context values are returned  }
+  { Registers returned if CONTEXT_DEBUG_REGISTERS is set.   }
+  { Breakpoint Register 1  }
+  { Breakpoint Register 2  }
+  { Breakpoint Register 3  }
+  { Breakpoint Register 4  }
+  { Breakpoint Register 5  }
+  { Breakpoint Register 6  }
+  { Debug Status Register  }
+  { Debug Control Register  }
+
+  type
+
+     CONTEXT = record
+          Fpr0 : double;
+          Fpr1 : double;
+          Fpr2 : double;
+          Fpr3 : double;
+          Fpr4 : double;
+          Fpr5 : double;
+          Fpr6 : double;
+          Fpr7 : double;
+          Fpr8 : double;
+          Fpr9 : double;
+          Fpr10 : double;
+          Fpr11 : double;
+          Fpr12 : double;
+          Fpr13 : double;
+          Fpr14 : double;
+          Fpr15 : double;
+          Fpr16 : double;
+          Fpr17 : double;
+          Fpr18 : double;
+          Fpr19 : double;
+          Fpr20 : double;
+          Fpr21 : double;
+          Fpr22 : double;
+          Fpr23 : double;
+          Fpr24 : double;
+          Fpr25 : double;
+          Fpr26 : double;
+          Fpr27 : double;
+          Fpr28 : double;
+          Fpr29 : double;
+          Fpr30 : double;
+          Fpr31 : double;
+          Fpscr : double;
+          Gpr0 : DWORD;
+          Gpr1 : DWORD;
+          Gpr2 : DWORD;
+          Gpr3 : DWORD;
+          Gpr4 : DWORD;
+          Gpr5 : DWORD;
+          Gpr6 : DWORD;
+          Gpr7 : DWORD;
+          Gpr8 : DWORD;
+          Gpr9 : DWORD;
+          Gpr10 : DWORD;
+          Gpr11 : DWORD;
+          Gpr12 : DWORD;
+          Gpr13 : DWORD;
+          Gpr14 : DWORD;
+          Gpr15 : DWORD;
+          Gpr16 : DWORD;
+          Gpr17 : DWORD;
+          Gpr18 : DWORD;
+          Gpr19 : DWORD;
+          Gpr20 : DWORD;
+          Gpr21 : DWORD;
+          Gpr22 : DWORD;
+          Gpr23 : DWORD;
+          Gpr24 : DWORD;
+          Gpr25 : DWORD;
+          Gpr26 : DWORD;
+          Gpr27 : DWORD;
+          Gpr28 : DWORD;
+          Gpr29 : DWORD;
+          Gpr30 : DWORD;
+          Gpr31 : DWORD;
+          Cr : DWORD;
+          Xer : DWORD;
+          Msr : DWORD;
+          Iar : DWORD;
+          Lr : DWORD;
+          Ctr : DWORD;
+          ContextFlags : DWORD;
+          Fill : array[0..2] of DWORD;
+          Dr0 : DWORD;
+          Dr1 : DWORD;
+          Dr2 : DWORD;
+          Dr3 : DWORD;
+          Dr4 : DWORD;
+          Dr5 : DWORD;
+          Dr6 : DWORD;
+          Dr7 : DWORD;
+       end;
+
+     PCONTEXT = ^CONTEXT;
+
+     LPCONTEXT = ^CONTEXT;
+{$endif}
+
+  type
+
+     LIST_ENTRY = record
+          Flink : ^_LIST_ENTRY;
+          Blink : ^_LIST_ENTRY;
+       end;
+
+     PLIST_ENTRY = ^LIST_ENTRY;
+
+     _LIST_ENTRY = LIST_ENTRY;
+
+     CRITICAL_SECTION_DEBUG = record
+          _Type : WORD;
+          CreatorBackTraceIndex : WORD;
+          CriticalSection : ^_CRITICAL_SECTION;
+          ProcessLocksList : LIST_ENTRY;
+          EntryCount : DWORD;
+          ContentionCount : DWORD;
+          Depth : DWORD;
+          OwnerBackTrace : array[0..4] of PVOID;
+       end;
+
+     PCRITICAL_SECTION_DEBUG = ^CRITICAL_SECTION_DEBUG;
+
+     _CRITICAL_SECTION_DEBUG = CRITICAL_SECTION_DEBUG;
+
+     CRITICAL_SECTION = record
+          DebugInfo : PCRITICAL_SECTION_DEBUG;
+          LockCount : LONG;
+          RecursionCount : LONG;
+          OwningThread : HANDLE;
+          LockSemaphore : HANDLE;
+          Reserved : DWORD;
+       end;
+
+     PCRITICAL_SECTION = ^CRITICAL_SECTION;
+
+     LPCRITICAL_SECTION = ^CRITICAL_SECTION;
+
+     _CRITICAL_SECTION = CRITICAL_SECTION;
+  { SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;  }
+
+     SECURITY_QUALITY_OF_SERVICE = record
+          Length : DWORD;
+          ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
+          ContextTrackingMode : WINBOOL;
+          EffectiveOnly : BOOLEAN;
+       end;
+
+     _SECURITY_QUALITY_OF_SERVICE = SECURITY_QUALITY_OF_SERVICE;
+
+     CONVCONTEXT = record
+          cb : UINT;
+          wFlags : UINT;
+          wCountryID : UINT;
+          iCodePage : longint;
+          dwLangID : DWORD;
+          dwSecurity : DWORD;
+          qos : SECURITY_QUALITY_OF_SERVICE;
+       end;
+
+     tagCONVCONTEXT = CONVCONTEXT;
+
+     PCONVCONTEXT = ^CONVCONTEXT;
+
+     CONVINFO = record
+          cb : DWORD;
+          hUser : DWORD;
+          hConvPartner : HCONV;
+          hszSvcPartner : HSZ;
+          hszServiceReq : HSZ;
+          hszTopic : HSZ;
+          hszItem : HSZ;
+          wFmt : UINT;
+          wType : UINT;
+          wStatus : UINT;
+          wConvst : UINT;
+          wLastError : UINT;
+          hConvList : HCONVLIST;
+          ConvCtxt : CONVCONTEXT;
+          _hwnd : HWND;
+          hwndPartner : HWND;
+       end;
+
+     tagCONVINFO = CONVINFO;
+
+     COPYDATASTRUCT = record
+          dwData : DWORD;
+          cbData : DWORD;
+          lpData : PVOID;
+       end;
+
+     tagCOPYDATASTRUCT = COPYDATASTRUCT;
+
+     CPINFO = record
+          MaxCharSize : UINT;
+          DefaultChar : array[0..(MAX_DEFAULTCHAR)-1] of BYTE;
+          LeadByte : array[0..(MAX_LEADBYTES)-1] of BYTE;
+       end;
+
+     LPCPINFO = ^CPINFO;
+
+     _cpinfo = CPINFO;
+
+     CPLINFO = record
+          idIcon : longint;
+          idName : longint;
+          idInfo : longint;
+          lData : LONG;
+       end;
+
+     tagCPLINFO = CPLINFO;
+
+     CREATE_PROCESS_DEBUG_INFO = record
+          hFile : HANDLE;
+          hProcess : HANDLE;
+          hThread : HANDLE;
+          lpBaseOfImage : LPVOID;
+          dwDebugInfoFileOffset : DWORD;
+          nDebugInfoSize : DWORD;
+          lpThreadLocalBase : LPVOID;
+          lpStartAddress : LPTHREAD_START_ROUTINE;
+          lpImageName : LPVOID;
+          fUnicode : WORD;
+       end;
+
+     _CREATE_PROCESS_DEBUG_INFO = CREATE_PROCESS_DEBUG_INFO;
+
+     CREATE_THREAD_DEBUG_INFO = record
+          hThread : HANDLE;
+          lpThreadLocalBase : LPVOID;
+          lpStartAddress : LPTHREAD_START_ROUTINE;
+       end;
+
+     _CREATE_THREAD_DEBUG_INFO = CREATE_THREAD_DEBUG_INFO;
+  (*
+   TODO: sockets
+  typedef struct _SOCKET_ADDRESS {
+    LPSOCKADDR lpSockaddr ;
+    INT iSockaddrLength ;
+  } SOCKET_ADDRESS,  PSOCKET_ADDRESS,  LPSOCKET_ADDRESS;
+   }
+  {
+  typedef struct _CSADDR_INFO { 
+    SOCKET_ADDRESS  LocalAddr; 
+    SOCKET_ADDRESS  RemoteAddr; 
+    INT             iSocketType; 
+    INT             iProtocol; 
+  } CSADDR_INFO; 
+    *)
+
+     CURRENCYFMT = record
+          NumDigits : UINT;
+          LeadingZero : UINT;
+          Grouping : UINT;
+          lpDecimalSep : LPTSTR;
+          lpThousandSep : LPTSTR;
+          NegativeOrder : UINT;
+          PositiveOrder : UINT;
+          lpCurrencySymbol : LPTSTR;
+       end;
+
+     _currencyfmt = CURRENCYFMT;
+
+     CURSORSHAPE = record
+          xHotSpot : longint;
+          yHotSpot : longint;
+          cx : longint;
+          cy : longint;
+          cbWidth : longint;
+          Planes : BYTE;
+          BitsPixel : BYTE;
+       end;
+
+     LPCURSORSHAPE = ^CURSORSHAPE;
+
+     tagCURSORSHAPE = CURSORSHAPE;
+
+     CWPRETSTRUCT = record
+          lResult : LRESULT;
+          lParam : LPARAM;
+          wParam : WPARAM;
+          message : DWORD;
+          hwnd : HWND;
+       end;
+
+     tagCWPRETSTRUCT = CWPRETSTRUCT;
+
+     CWPSTRUCT = record
+          lParam : LPARAM;
+          wParam : WPARAM;
+          message : UINT;
+          hwnd : HWND;
+       end;
+
+     tagCWPSTRUCT = CWPSTRUCT;
+
+     DATATYPES_INFO_1 = record
+          pName : LPTSTR;
+       end;
+
+     _DATATYPES_INFO_1 = DATATYPES_INFO_1;
+
+     DDEACK = record
+          flag0 : word;
+       end;
+  const
+     bm_DDEACK_bAppReturnCode = $FF;
+     bp_DDEACK_bAppReturnCode = 0;
+     bm_DDEACK_reserved = $3F00;
+     bp_DDEACK_reserved = 8;
+     bm_DDEACK_fBusy = $4000;
+     bp_DDEACK_fBusy = 14;
+     bm_DDEACK_fAck = $8000;
+     bp_DDEACK_fAck = 15;
+  function bAppReturnCode(var a : DDEACK) : word;
+  procedure set_bAppReturnCode(var a : DDEACK; __bAppReturnCode : word);
+  function reserved(var a : DDEACK) : word;
+  procedure set_reserved(var a : DDEACK; __reserved : word);
+  function fBusy(var a : DDEACK) : word;
+  procedure set_fBusy(var a : DDEACK; __fBusy : word);
+  function fAck(var a : DDEACK) : word;
+  procedure set_fAck(var a : DDEACK; __fAck : word);
+
+  type
+
+     DDEADVISE = record
+          flag0 : word;
+          cfFormat : integer;
+       end;
+  const
+     bm_DDEADVISE_reserved = $3FFF;
+     bp_DDEADVISE_reserved = 0;
+     bm_DDEADVISE_fDeferUpd = $4000;
+     bp_DDEADVISE_fDeferUpd = 14;
+     bm_DDEADVISE_fAckReq = $8000;
+     bp_DDEADVISE_fAckReq = 15;
+  function reserved(var a : DDEADVISE) : word;
+  procedure set_reserved(var a : DDEADVISE; __reserved : word);
+  function fDeferUpd(var a : DDEADVISE) : word;
+  procedure set_fDeferUpd(var a : DDEADVISE; __fDeferUpd : word);
+  function fAckReq(var a : DDEADVISE) : word;
+  procedure set_fAckReq(var a : DDEADVISE; __fAckReq : word);
+
+  type
+
+     DDEDATA = record
+          flag0 : word;
+          cfFormat : integer;
+          Value : array[0..0] of BYTE;
+       end;
+  const
+     bm_DDEDATA_unused = $FFF;
+     bp_DDEDATA_unused = 0;
+     bm_DDEDATA_fResponse = $1000;
+     bp_DDEDATA_fResponse = 12;
+     bm_DDEDATA_fRelease = $2000;
+     bp_DDEDATA_fRelease = 13;
+     bm_DDEDATA_reserved = $4000;
+     bp_DDEDATA_reserved = 14;
+     bm_DDEDATA_fAckReq = $8000;
+     bp_DDEDATA_fAckReq = 15;
+  function unused(var a : DDEDATA) : word;
+  procedure set_unused(var a : DDEDATA; __unused : word);
+  function fResponse(var a : DDEDATA) : word;
+  procedure set_fResponse(var a : DDEDATA; __fResponse : word);
+  function fRelease(var a : DDEDATA) : word;
+  procedure set_fRelease(var a : DDEDATA; __fRelease : word);
+  function reserved(var a : DDEDATA) : word;
+  procedure set_reserved(var a : DDEDATA; __reserved : word);
+  function fAckReq(var a : DDEDATA) : word;
+  procedure set_fAckReq(var a : DDEDATA; __fAckReq : word);
+
+  type
+
+     DDELN = record
+          flag0 : word;
+          cfFormat : integer;
+       end;
+  const
+     bm_DDELN_unused = $1FFF;
+     bp_DDELN_unused = 0;
+     bm_DDELN_fRelease = $2000;
+     bp_DDELN_fRelease = 13;
+     bm_DDELN_fDeferUpd = $4000;
+     bp_DDELN_fDeferUpd = 14;
+     bm_DDELN_fAckReq = $8000;
+     bp_DDELN_fAckReq = 15;
+  function unused(var a : DDELN) : word;
+  procedure set_unused(var a : DDELN; __unused : word);
+  function fRelease(var a : DDELN) : word;
+  procedure set_fRelease(var a : DDELN; __fRelease : word);
+  function fDeferUpd(var a : DDELN) : word;
+  procedure set_fDeferUpd(var a : DDELN; __fDeferUpd : word);
+  function fAckReq(var a : DDELN) : word;
+  procedure set_fAckReq(var a : DDELN; __fAckReq : word);
+
+  type
+
+     DDEML_MSG_HOOK_DATA = record
+          uiLo : UINT;
+          uiHi : UINT;
+          cbData : DWORD;
+          Data : array[0..7] of DWORD;
+       end;
+
+     tagDDEML_MSG_HOOK_DATA = DDEML_MSG_HOOK_DATA;
+
+     DDEPOKE = record
+          flag0 : word;
+          cfFormat : integer;
+          Value : array[0..0] of BYTE;
+       end;
+  const
+     bm_DDEPOKE_unused = $1FFF;
+     bp_DDEPOKE_unused = 0;
+     bm_DDEPOKE_fRelease = $2000;
+     bp_DDEPOKE_fRelease = 13;
+     bm_DDEPOKE_fReserved = $C000;
+     bp_DDEPOKE_fReserved = 14;
+  function unused(var a : DDEPOKE) : word;
+  procedure set_unused(var a : DDEPOKE; __unused : word);
+  function fRelease(var a : DDEPOKE) : word;
+  procedure set_fRelease(var a : DDEPOKE; __fRelease : word);
+  function fReserved(var a : DDEPOKE) : word;
+  procedure set_fReserved(var a : DDEPOKE; __fReserved : word);
+
+  type
+
+     DDEUP = record
+          flag0 : word;
+          cfFormat : integer;
+          rgb : array[0..0] of BYTE;
+       end;
+  const
+     bm_DDEUP_unused = $FFF;
+     bp_DDEUP_unused = 0;
+     bm_DDEUP_fAck = $1000;
+     bp_DDEUP_fAck = 12;
+     bm_DDEUP_fRelease = $2000;
+     bp_DDEUP_fRelease = 13;
+     bm_DDEUP_fReserved = $4000;
+     bp_DDEUP_fReserved = 14;
+     bm_DDEUP_fAckReq = $8000;
+     bp_DDEUP_fAckReq = 15;
+  function unused(var a : DDEUP) : word;
+  procedure set_unused(var a : DDEUP; __unused : word);
+  function fAck(var a : DDEUP) : word;
+  procedure set_fAck(var a : DDEUP; __fAck : word);
+  function fRelease(var a : DDEUP) : word;
+  procedure set_fRelease(var a : DDEUP; __fRelease : word);
+  function fReserved(var a : DDEUP) : word;
+  procedure set_fReserved(var a : DDEUP; __fReserved : word);
+  function fAckReq(var a : DDEUP) : word;
+  procedure set_fAckReq(var a : DDEUP; __fAckReq : word);
+
+  type
+
+     EXCEPTION_RECORD = record
+          ExceptionCode : DWORD;
+          ExceptionFlags : DWORD;
+          ExceptionRecord : ^_EXCEPTION_RECORD;
+          ExceptionAddress : PVOID;
+          NumberParameters : DWORD;
+          ExceptionInformation : array[0..(EXCEPTION_MAXIMUM_PARAMETERS)-1] of DWORD;
+       end;
+
+     PEXCEPTION_RECORD = ^EXCEPTION_RECORD;
+
+     LPEXCEPTION_RECORD = ^EXCEPTION_RECORD;
+
+     _EXCEPTION_RECORD = EXCEPTION_RECORD;
+
+     EXCEPTION_DEBUG_INFO = record
+          ExceptionRecord : EXCEPTION_RECORD;
+          dwFirstChance : DWORD;
+       end;
+
+     _EXCEPTION_DEBUG_INFO = EXCEPTION_DEBUG_INFO;
+
+     EXIT_PROCESS_DEBUG_INFO = record
+          dwExitCode : DWORD;
+       end;
+
+     _EXIT_PROCESS_DEBUG_INFO = EXIT_PROCESS_DEBUG_INFO;
+
+     EXIT_THREAD_DEBUG_INFO = record
+          dwExitCode : DWORD;
+       end;
+
+     _EXIT_THREAD_DEBUG_INFO = EXIT_THREAD_DEBUG_INFO;
+
+     LOAD_DLL_DEBUG_INFO = record
+          hFile : HANDLE;
+          lpBaseOfDll : LPVOID;
+          dwDebugInfoFileOffset : DWORD;
+          nDebugInfoSize : DWORD;
+          lpImageName : LPVOID;
+          fUnicode : WORD;
+       end;
+
+     _LOAD_DLL_DEBUG_INFO = LOAD_DLL_DEBUG_INFO;
+
+     UNLOAD_DLL_DEBUG_INFO = record
+          lpBaseOfDll : LPVOID;
+       end;
+
+     _UNLOAD_DLL_DEBUG_INFO = UNLOAD_DLL_DEBUG_INFO;
+
+     OUTPUT_DEBUG_STRING_INFO = record
+          lpDebugStringData : LPSTR;
+          fUnicode : WORD;
+          nDebugStringLength : WORD;
+       end;
+
+     _OUTPUT_DEBUG_STRING_INFO = OUTPUT_DEBUG_STRING_INFO;
+
+     RIP_INFO = record
+          dwError : DWORD;
+          dwType : DWORD;
+       end;
+
+     _RIP_INFO = RIP_INFO;
+
+     DEBUG_EVENT = record
+          dwDebugEventCode : DWORD;
+          dwProcessId : DWORD;
+          dwThreadId : DWORD;
+          u : record
+              case longint of
+                 0 : ( Exception : EXCEPTION_DEBUG_INFO );
+                 1 : ( CreateThread : CREATE_THREAD_DEBUG_INFO );
+                 2 : ( CreateProcessInfo : CREATE_PROCESS_DEBUG_INFO );
+                 3 : ( ExitThread : EXIT_THREAD_DEBUG_INFO );
+                 4 : ( ExitProcess : EXIT_PROCESS_DEBUG_INFO );
+                 5 : ( LoadDll : LOAD_DLL_DEBUG_INFO );
+                 6 : ( UnloadDll : UNLOAD_DLL_DEBUG_INFO );
+                 7 : ( DebugString : OUTPUT_DEBUG_STRING_INFO );
+                 8 : ( RipInfo : RIP_INFO );
+              end;
+       end;
+
+     LPDEBUG_EVENT = ^DEBUG_EVENT;
+
+     _DEBUG_EVENT = DEBUG_EVENT;
+
+     DEBUGHOOKINFO = record
+          idThread : DWORD;
+          idThreadInstaller : DWORD;
+          lParam : LPARAM;
+          wParam : WPARAM;
+          code : longint;
+       end;
+
+     tagDEBUGHOOKINFO = DEBUGHOOKINFO;
+
+     DELETEITEMSTRUCT = record
+          CtlType : UINT;
+          CtlID : UINT;
+          itemID : UINT;
+          hwndItem : HWND;
+          itemData : UINT;
+       end;
+
+     tagDELETEITEMSTRUCT = DELETEITEMSTRUCT;
+
+     DEV_BROADCAST_HDR = record
+          dbch_size : ULONG;
+          dbch_devicetype : ULONG;
+          dbch_reserved : ULONG;
+       end;
+
+     _DEV_BROADCAST_HDR = DEV_BROADCAST_HDR;
+
+     PDEV_BROADCAST_HDR = ^DEV_BROADCAST_HDR;
+
+     DEV_BROADCAST_OEM = record
+          dbco_size : ULONG;
+          dbco_devicetype : ULONG;
+          dbco_reserved : ULONG;
+          dbco_identifier : ULONG;
+          dbco_suppfunc : ULONG;
+       end;
+
+     _DEV_BROADCAST_OEM = DEV_BROADCAST_OEM;
+
+     PDEV_BROADCAST_OEM = ^DEV_BROADCAST_OEM;
+
+     DEV_BROADCAST_PORT = record
+          dbcp_size : ULONG;
+          dbcp_devicetype : ULONG;
+          dbcp_reserved : ULONG;
+          dbcp_name : array[0..0] of char;
+       end;
+
+     _DEV_BROADCAST_PORT = DEV_BROADCAST_PORT;
+
+     PDEV_BROADCAST_PORT = ^DEV_BROADCAST_PORT;
+     _DEV_BROADCAST_USERDEFINED = record
+          dbud_dbh : _DEV_BROADCAST_HDR;
+          dbud_szName : array[0..0] of char;
+          dbud_rgbUserDefined : array[0..0] of BYTE;
+       end;
+
+
+     DEV_BROADCAST_VOLUME = record
+          dbcv_size : ULONG;
+          dbcv_devicetype : ULONG;
+          dbcv_reserved : ULONG;
+          dbcv_unitmask : ULONG;
+          dbcv_flags : USHORT;
+       end;
+
+     _DEV_BROADCAST_VOLUME = DEV_BROADCAST_VOLUME;
+
+     PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME;
+
+     DEVMODE = record
+          dmDeviceName : array[0..(CCHDEVICENAME)-1] of BCHAR;
+          dmSpecVersion : WORD;
+          dmDriverVersion : WORD;
+          dmSize : WORD;
+          dmDriverExtra : WORD;
+          dmFields : DWORD;
+          dmOrientation : integer;
+          dmPaperSize : integer;
+          dmPaperLength : integer;
+          dmPaperWidth : integer;
+          dmScale : integer;
+          dmCopies : integer;
+          dmDefaultSource : integer;
+          dmPrintQuality : integer;
+          dmColor : integer;
+          dmDuplex : integer;
+          dmYResolution : integer;
+          dmTTOption : integer;
+          dmCollate : integer;
+          dmFormName : array[0..(CCHFORMNAME)-1] of BCHAR;
+          dmLogPixels : WORD;
+          dmBitsPerPel : DWORD;
+          dmPelsWidth : DWORD;
+          dmPelsHeight : DWORD;
+          dmDisplayFlags : DWORD;
+          dmDisplayFrequency : DWORD;
+          dmICMMethod : DWORD;
+          dmICMIntent : DWORD;
+          dmMediaType : DWORD;
+          dmDitherType : DWORD;
+          dmICCManufacturer : DWORD;
+          dmICCModel : DWORD;
+       end;
+
+     LPDEVMODE = ^DEVMODE;
+
+     _devicemode = DEVMODE;
+
+     DEVNAMES = record
+          wDriverOffset : WORD;
+          wDeviceOffset : WORD;
+          wOutputOffset : WORD;
+          wDefault : WORD;
+       end;
+
+     LPDEVNAMES = ^DEVNAMES;
+
+     tagDEVNAMES = DEVNAMES;
+
+     DIBSECTION = record
+          dsBm : BITMAP;
+          dsBmih : BITMAPINFOHEADER;
+          dsBitfields : array[0..2] of DWORD;
+          dshSection : HANDLE;
+          dsOffset : DWORD;
+       end;
+
+     tagDIBSECTION = DIBSECTION;
+
+     LARGE_INTEGER = record
+          LowPart : DWORD;
+          HighPart : LONG;
+       end;
+
+     PLARGE_INTEGER = ^LARGE_INTEGER;
+
+     _LARGE_INTEGER = LARGE_INTEGER;
+
+     DISK_GEOMETRY = record
+          Cylinders : LARGE_INTEGER;
+          MediaType : MEDIA_TYPE;
+          TracksPerCylinder : DWORD;
+          SectorsPerTrack : DWORD;
+          BytesPerSector : DWORD;
+       end;
+
+     _DISK_GEOMETRY = DISK_GEOMETRY;
+
+     DISK_PERFORMANCE = record
+          BytesRead : LARGE_INTEGER;
+          BytesWritten : LARGE_INTEGER;
+          ReadTime : LARGE_INTEGER;
+          WriteTime : LARGE_INTEGER;
+          ReadCount : DWORD;
+          WriteCount : DWORD;
+          QueueDepth : DWORD;
+       end;
+
+     _DISK_PERFORMANCE = DISK_PERFORMANCE;
+{$PACKRECORDS 1}
+
+     DLGITEMTEMPLATE = record
+          style : DWORD;
+          dwExtendedStyle : DWORD;
+          x : integer;
+          y : integer;
+          cx : integer;
+          cy : integer;
+          id : WORD;
+       end;
+
+     LPDLGITEMTEMPLATE = ^DLGITEMTEMPLATE;
+
+     PDLGITEMTEMPLATE = ^DLGITEMTEMPLATE;
+
+     DLGTEMPLATE = record
+          style : DWORD;
+          dwExtendedStyle : DWORD;
+          cdit : WORD;
+          x : integer;
+          y : integer;
+          cx : integer;
+          cy : integer;
+       end;
+
+     LPDLGTEMPLATE = ^DLGTEMPLATE;
+(* Const before type ignored *)
+
+     LPCDLGTEMPLATE = ^DLGTEMPLATE;
+{$PACKRECORDS 4}
+
+     DOC_INFO_1 = record
+          pDocName : LPTSTR;
+          pOutputFile : LPTSTR;
+          pDatatype : LPTSTR;
+       end;
+
+     _DOC_INFO_1 = DOC_INFO_1;
+
+     DOC_INFO_2 = record
+          pDocName : LPTSTR;
+          pOutputFile : LPTSTR;
+          pDatatype : LPTSTR;
+          dwMode : DWORD;
+          JobId : DWORD;
+       end;
+
+     _DOC_INFO_2 = DOC_INFO_2;
+
+     DOCINFO = record
+          cbSize : longint;
+          lpszDocName : LPCTSTR;
+          lpszOutput : LPCTSTR;
+          lpszDatatype : LPCTSTR;
+          fwType : DWORD;
+       end;
+
+     DRAGLISTINFO = record
+          uNotification : UINT;
+          hWnd : HWND;
+          ptCursor : POINT;
+       end;
+
+     LPDRAGLISTINFO = ^DRAGLISTINFO;
+
+     DRAWITEMSTRUCT = record
+          CtlType : UINT;
+          CtlID : UINT;
+          itemID : UINT;
+          itemAction : UINT;
+          itemState : UINT;
+          hwndItem : HWND;
+          hDC : HDC;
+          rcItem : RECT;
+          itemData : DWORD;
+       end;
+
+     LPDRAWITEMSTRUCT = ^DRAWITEMSTRUCT;
+
+     PDRAWITEMSTRUCT = ^DRAWITEMSTRUCT;
+
+     tagDRAWITEMSTRUCT = DRAWITEMSTRUCT;
+
+     DRAWTEXTPARAMS = record
+          cbSize : UINT;
+          iTabLength : longint;
+          iLeftMargin : longint;
+          iRightMargin : longint;
+          uiLengthDrawn : UINT;
+       end;
+
+     LPDRAWTEXTPARAMS = ^DRAWTEXTPARAMS;
+
+     PARTITION_INFORMATION = record
+          PartitionType : BYTE;
+          BootIndicator : BOOLEAN;
+          RecognizedPartition : BOOLEAN;
+          RewritePartition : BOOLEAN;
+          StartingOffset : LARGE_INTEGER;
+          PartitionLength : LARGE_INTEGER;
+          HiddenSectors : LARGE_INTEGER;
+       end;
+
+     _PARTITION_INFORMATION = PARTITION_INFORMATION;
+
+     DRIVE_LAYOUT_INFORMATION = record
+          PartitionCount : DWORD;
+          Signature : DWORD;
+          PartitionEntry : array[0..0] of PARTITION_INFORMATION;
+       end;
+
+     _DRIVE_LAYOUT_INFORMATION = DRIVE_LAYOUT_INFORMATION;
+
+     DRIVER_INFO_1 = record
+          pName : LPTSTR;
+       end;
+
+     _DRIVER_INFO_1 = DRIVER_INFO_1;
+
+     DRIVER_INFO_2 = record
+          cVersion : DWORD;
+          pName : LPTSTR;
+          pEnvironment : LPTSTR;
+          pDriverPath : LPTSTR;
+          pDataFile : LPTSTR;
+          pConfigFile : LPTSTR;
+       end;
+
+     _DRIVER_INFO_2 = DRIVER_INFO_2;
+
+     DRIVER_INFO_3 = record
+          cVersion : DWORD;
+          pName : LPTSTR;
+          pEnvironment : LPTSTR;
+          pDriverPath : LPTSTR;
+          pDataFile : LPTSTR;
+          pConfigFile : LPTSTR;
+          pHelpFile : LPTSTR;
+          pDependentFiles : LPTSTR;
+          pMonitorName : LPTSTR;
+          pDefaultDataType : LPTSTR;
+       end;
+
+     _DRIVER_INFO_3 = DRIVER_INFO_3;
+
+     EDITSTREAM = record
+          dwCookie : DWORD;
+          dwError : DWORD;
+          pfnCallback : EDITSTREAMCALLBACK;
+       end;
+
+     _editstream = EDITSTREAM;
+
+     EMR = record
+          iType : DWORD;
+          nSize : DWORD;
+       end;
+
+     PEMR = ^EMR;
+
+     tagEMR = EMR;
+
+     EMRANGLEARC = record
+          emr : EMR;
+          ptlCenter : POINTL;
+          nRadius : DWORD;
+          eStartAngle : FLOAT;
+          eSweepAngle : FLOAT;
+       end;
+
+     PEMRANGLEARC = ^EMRANGLEARC;
+
+     tagEMRANGLEARC = EMRANGLEARC;
+
+     EMRARC = record
+          emr : EMR;
+          rclBox : RECTL;
+          ptlStart : POINTL;
+          ptlEnd : POINTL;
+       end;
+
+     PEMRARC = ^EMRARC;
+
+     EMRARCTO = EMRARC;
+
+     PEMRARCTO = ^EMRARC;
+
+     EMRCHORD = EMRARC;
+
+     PEMRCHORD = ^EMRARC;
+
+     EMRPIE = EMRARC;
+
+     PEMRPIE = ^EMRARC;
+
+     tagEMRARC = EMRARC;
+
+     XFORM = record
+          eM11 : FLOAT;
+          eM12 : FLOAT;
+          eM21 : FLOAT;
+          eM22 : FLOAT;
+          eDx : FLOAT;
+          eDy : FLOAT;
+       end;
+
+     PXFORM = ^XFORM;
+
+     LPXFORM = ^XFORM;
+
+     _XFORM = XFORM;
+
+     EMRBITBLT = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          cxDest : LONG;
+          cyDest : LONG;
+          dwRop : DWORD;
+          xSrc : LONG;
+          ySrc : LONG;
+          xformSrc : XFORM;
+          crBkColorSrc : COLORREF;
+          iUsageSrc : DWORD;
+          offBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+       end;
+
+     PEMRBITBLT = ^EMRBITBLT;
+
+     tagEMRBITBLT = EMRBITBLT;
+
+     LOGBRUSH = record
+          lbStyle : UINT;
+          lbColor : COLORREF;
+          lbHatch : LONG;
+       end;
+
+     tagLOGBRUSH = LOGBRUSH;
+
+     EMRCREATEBRUSHINDIRECT = record
+          emr : EMR;
+          ihBrush : DWORD;
+          lb : LOGBRUSH;
+       end;
+
+     PEMRCREATEBRUSHINDIRECT = ^EMRCREATEBRUSHINDIRECT;
+
+     tagEMRCREATEBRUSHINDIRECT = EMRCREATEBRUSHINDIRECT;
+
+     LCSCSTYPE = LONG;
+
+     LCSGAMUTMATCH = LONG;
+
+     LOGCOLORSPACE = record
+          lcsSignature : DWORD;
+          lcsVersion : DWORD;
+          lcsSize : DWORD;
+          lcsCSType : LCSCSTYPE;
+          lcsIntent : LCSGAMUTMATCH;
+          lcsEndpoints : CIEXYZTRIPLE;
+          lcsGammaRed : DWORD;
+          lcsGammaGreen : DWORD;
+          lcsGammaBlue : DWORD;
+          lcsFilename : array[0..(MAX_PATH)-1] of TCHAR;
+       end;
+
+     LPLOGCOLORSPACE = ^LOGCOLORSPACE;
+
+     tagLOGCOLORSPACE = LOGCOLORSPACE;
+
+     EMRCREATECOLORSPACE = record
+          emr : EMR;
+          ihCS : DWORD;
+          lcs : LOGCOLORSPACE;
+       end;
+
+     PEMRCREATECOLORSPACE = ^EMRCREATECOLORSPACE;
+
+     tagEMRCREATECOLORSPACE = EMRCREATECOLORSPACE;
+
+     EMRCREATEDIBPATTERNBRUSHPT = record
+          emr : EMR;
+          ihBrush : DWORD;
+          iUsage : DWORD;
+          offBmi : DWORD;
+          cbBmi : DWORD;
+          offBits : DWORD;
+          cbBits : DWORD;
+       end;
+
+     PEMRCREATEDIBPATTERNBRUSHPT = EMRCREATEDIBPATTERNBRUSHPT;
+
+     tagEMRCREATEDIBPATTERNBRUSHPT = EMRCREATEDIBPATTERNBRUSHPT;
+
+     EMRCREATEMONOBRUSH = record
+          emr : EMR;
+          ihBrush : DWORD;
+          iUsage : DWORD;
+          offBmi : DWORD;
+          cbBmi : DWORD;
+          offBits : DWORD;
+          cbBits : DWORD;
+       end;
+
+     PEMRCREATEMONOBRUSH = ^EMRCREATEMONOBRUSH;
+
+     tagEMRCREATEMONOBRUSH = EMRCREATEMONOBRUSH;
+
+     PALETTEENTRY = record
+          peRed : BYTE;
+          peGreen : BYTE;
+          peBlue : BYTE;
+          peFlags : BYTE;
+       end;
+
+     LPPALETTEENTRY = ^PALETTEENTRY;
+
+     PPALETTEENTRY = ^PALETTEENTRY;
+
+     tagPALETTEENTRY = PALETTEENTRY;
+
+     LOGPALETTE = record
+          palVersion : WORD;
+          palNumEntries : WORD;
+          palPalEntry : array[0..0] of PALETTEENTRY;
+       end;
+
+     LPLOGPALETTE = ^LOGPALETTE;
+
+     PLOGPALETTE = ^LOGPALETTE;
+
+     tagLOGPALETTE = LOGPALETTE;
+
+     EMRCREATEPALETTE = record
+          emr : EMR;
+          ihPal : DWORD;
+          lgpl : LOGPALETTE;
+       end;
+
+     PEMRCREATEPALETTE = ^EMRCREATEPALETTE;
+
+     tagEMRCREATEPALETTE = EMRCREATEPALETTE;
+
+     LOGPEN = record
+          lopnStyle : UINT;
+          lopnWidth : POINT;
+          lopnColor : COLORREF;
+       end;
+
+     tagLOGPEN = LOGPEN;
+
+     EMRCREATEPEN = record
+          emr : EMR;
+          ihPen : DWORD;
+          lopn : LOGPEN;
+       end;
+
+     PEMRCREATEPEN = ^EMRCREATEPEN;
+
+     tagEMRCREATEPEN = EMRCREATEPEN;
+
+     EMRELLIPSE = record
+          emr : EMR;
+          rclBox : RECTL;
+       end;
+
+     PEMRELLIPSE = ^EMRELLIPSE;
+
+     EMRRECTANGLE = EMRELLIPSE;
+
+     PEMRRECTANGLE = ^EMRELLIPSE;
+
+     tagEMRELLIPSE = EMRELLIPSE;
+
+     EMREOF = record
+          emr : EMR;
+          nPalEntries : DWORD;
+          offPalEntries : DWORD;
+          nSizeLast : DWORD;
+       end;
+
+     PEMREOF = ^EMREOF;
+
+     tagEMREOF = EMREOF;
+
+     EMREXCLUDECLIPRECT = record
+          emr : EMR;
+          rclClip : RECTL;
+       end;
+
+     PEMREXCLUDECLIPRECT = ^EMREXCLUDECLIPRECT;
+
+     EMRINTERSECTCLIPRECT = EMREXCLUDECLIPRECT;
+
+     PEMRINTERSECTCLIPRECT = ^EMREXCLUDECLIPRECT;
+
+     tagEMREXCLUDECLIPRECT = EMREXCLUDECLIPRECT;
+
+     PANOSE = record
+          bFamilyType : BYTE;
+          bSerifStyle : BYTE;
+          bWeight : BYTE;
+          bProportion : BYTE;
+          bContrast : BYTE;
+          bStrokeVariation : BYTE;
+          bArmStyle : BYTE;
+          bLetterform : BYTE;
+          bMidline : BYTE;
+          bXHeight : BYTE;
+       end;
+
+     tagPANOSE = PANOSE;
+
+     EXTLOGFONT = record
+          elfLogFont : LOGFONT;
+          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
+          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
+          elfVersion : DWORD;
+          elfStyleSize : DWORD;
+          elfMatch : DWORD;
+          elfReserved : DWORD;
+          elfVendorId : array[0..(ELF_VENDOR_SIZE)-1] of BYTE;
+          elfCulture : DWORD;
+          elfPanose : PANOSE;
+       end;
+
+     tagEXTLOGFONT = EXTLOGFONT;
+
+     EMREXTCREATEFONTINDIRECTW = record
+          emr : EMR;
+          ihFont : DWORD;
+          elfw : EXTLOGFONT;
+       end;
+
+     PEMREXTCREATEFONTINDIRECTW = EMREXTCREATEFONTINDIRECTW;
+
+     tagEMREXTCREATEFONTINDIRECTW = EMREXTCREATEFONTINDIRECTW;
+
+     EXTLOGPEN = record
+          elpPenStyle : UINT;
+          elpWidth : UINT;
+          elpBrushStyle : UINT;
+          elpColor : COLORREF;
+          elpHatch : LONG;
+          elpNumEntries : DWORD;
+          elpStyleEntry : array[0..0] of DWORD;
+       end;
+
+     tagEXTLOGPEN = EXTLOGPEN;
+
+     EMREXTCREATEPEN = record
+          emr : EMR;
+          ihPen : DWORD;
+          offBmi : DWORD;
+          cbBmi : DWORD;
+          offBits : DWORD;
+          cbBits : DWORD;
+          elp : EXTLOGPEN;
+       end;
+
+     PEMREXTCREATEPEN = ^EMREXTCREATEPEN;
+
+     tagEMREXTCREATEPEN = EMREXTCREATEPEN;
+
+     EMREXTFLOODFILL = record
+          emr : EMR;
+          ptlStart : POINTL;
+          crColor : COLORREF;
+          iMode : DWORD;
+       end;
+
+     PEMREXTFLOODFILL = ^EMREXTFLOODFILL;
+
+     tagEMREXTFLOODFILL = EMREXTFLOODFILL;
+
+     EMREXTSELECTCLIPRGN = record
+          emr : EMR;
+          cbRgnData : DWORD;
+          iMode : DWORD;
+          RgnData : array[0..0] of BYTE;
+       end;
+
+     PEMREXTSELECTCLIPRGN = ^EMREXTSELECTCLIPRGN;
+
+     tagEMREXTSELECTCLIPRGN = EMREXTSELECTCLIPRGN;
+
+     EMRTEXT = record
+          ptlReference : POINTL;
+          nChars : DWORD;
+          offString : DWORD;
+          fOptions : DWORD;
+          rcl : RECTL;
+          offDx : DWORD;
+       end;
+
+     PEMRTEXT = ^EMRTEXT;
+
+     tagEMRTEXT = EMRTEXT;
+
+     EMREXTTEXTOUTA = record
+          emr : EMR;
+          rclBounds : RECTL;
+          iGraphicsMode : DWORD;
+          exScale : FLOAT;
+          eyScale : FLOAT;
+          emrtext : EMRTEXT;
+       end;
+
+     PEMREXTTEXTOUTA = ^EMREXTTEXTOUTA;
+
+     EMREXTTEXTOUTW = EMREXTTEXTOUTA;
+
+     PEMREXTTEXTOUTW = ^EMREXTTEXTOUTA;
+
+     tagEMREXTTEXTOUTA = EMREXTTEXTOUTA;
+
+     EMRFILLPATH = record
+          emr : EMR;
+          rclBounds : RECTL;
+       end;
+
+     PEMRFILLPATH = ^EMRFILLPATH;
+
+     EMRSTROKEANDFILLPATH = EMRFILLPATH;
+
+     PEMRSTROKEANDFILLPATH = ^EMRFILLPATH;
+
+     EMRSTROKEPATH = EMRFILLPATH;
+
+     PEMRSTROKEPATH = ^EMRFILLPATH;
+
+     tagEMRFILLPATH = EMRFILLPATH;
+
+     EMRFILLRGN = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cbRgnData : DWORD;
+          ihBrush : DWORD;
+          RgnData : array[0..0] of BYTE;
+       end;
+
+     PEMRFILLRGN = ^EMRFILLRGN;
+
+     tagEMRFILLRGN = EMRFILLRGN;
+
+     EMRFORMAT = record
+          dSignature : DWORD;
+          nVersion : DWORD;
+          cbData : DWORD;
+          offData : DWORD;
+       end;
+
+     tagEMRFORMAT = EMRFORMAT;
+
+     SIZE = record
+          cx : LONG;
+          cy : LONG;
+       end;
+
+     PSIZE = ^SIZE;
+
+     LPSIZE = ^SIZE;
+
+     SIZEL = SIZE;
+
+     PSIZEL = ^SIZE;
+
+     LPSIZEL = ^SIZE;
+
+     tagSIZE = SIZE;
+
+     EMRFRAMERGN = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cbRgnData : DWORD;
+          ihBrush : DWORD;
+          szlStroke : SIZEL;
+          RgnData : array[0..0] of BYTE;
+       end;
+
+     PEMRFRAMERGN = ^EMRFRAMERGN;
+
+     tagEMRFRAMERGN = EMRFRAMERGN;
+
+     EMRGDICOMMENT = record
+          emr : EMR;
+          cbData : DWORD;
+          Data : array[0..0] of BYTE;
+       end;
+
+     PEMRGDICOMMENT = ^EMRGDICOMMENT;
+
+     tagEMRGDICOMMENT = EMRGDICOMMENT;
+
+     EMRINVERTRGN = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cbRgnData : DWORD;
+          RgnData : array[0..0] of BYTE;
+       end;
+
+     PEMRINVERTRGN = ^EMRINVERTRGN;
+
+     EMRPAINTRGN = EMRINVERTRGN;
+
+     PEMRPAINTRGN = ^EMRINVERTRGN;
+
+     tagEMRINVERTRGN = EMRINVERTRGN;
+
+     EMRLINETO = record
+          emr : EMR;
+          ptl : POINTL;
+       end;
+
+     PEMRLINETO = ^EMRLINETO;
+
+     EMRMOVETOEX = EMRLINETO;
+
+     PEMRMOVETOEX = ^EMRLINETO;
+
+     tagEMRLINETO = EMRLINETO;
+
+     EMRMASKBLT = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          cxDest : LONG;
+          cyDest : LONG;
+          dwRop : DWORD;
+          xSrc : LONG;
+          ySrc : LONG;
+          xformSrc : XFORM;
+          crBkColorSrc : COLORREF;
+          iUsageSrc : DWORD;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          xMask : LONG;
+          yMask : LONG;
+          iUsageMask : DWORD;
+          offBmiMask : DWORD;
+          cbBmiMask : DWORD;
+          offBitsMask : DWORD;
+          cbBitsMask : DWORD;
+       end;
+
+     PEMRMASKBLT = ^EMRMASKBLT;
+
+     tagEMRMASKBLT = EMRMASKBLT;
+
+     EMRMODIFYWORLDTRANSFORM = record
+          emr : EMR;
+          xform : XFORM;
+          iMode : DWORD;
+       end;
+
+     PEMRMODIFYWORLDTRANSFORM = EMRMODIFYWORLDTRANSFORM;
+
+     tagEMRMODIFYWORLDTRANSFORM = EMRMODIFYWORLDTRANSFORM;
+
+     EMROFFSETCLIPRGN = record
+          emr : EMR;
+          ptlOffset : POINTL;
+       end;
+
+     PEMROFFSETCLIPRGN = ^EMROFFSETCLIPRGN;
+
+     tagEMROFFSETCLIPRGN = EMROFFSETCLIPRGN;
+
+     EMRPLGBLT = record
+          emr : EMR;
+          rclBounds : RECTL;
+          aptlDest : array[0..2] of POINTL;
+          xSrc : LONG;
+          ySrc : LONG;
+          cxSrc : LONG;
+          cySrc : LONG;
+          xformSrc : XFORM;
+          crBkColorSrc : COLORREF;
+          iUsageSrc : DWORD;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          xMask : LONG;
+          yMask : LONG;
+          iUsageMask : DWORD;
+          offBmiMask : DWORD;
+          cbBmiMask : DWORD;
+          offBitsMask : DWORD;
+          cbBitsMask : DWORD;
+       end;
+
+     PEMRPLGBLT = ^EMRPLGBLT;
+
+     tagEMRPLGBLT = EMRPLGBLT;
+
+     EMRPOLYDRAW = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cptl : DWORD;
+          aptl : array[0..0] of POINTL;
+          abTypes : array[0..0] of BYTE;
+       end;
+
+     PEMRPOLYDRAW = ^EMRPOLYDRAW;
+
+     tagEMRPOLYDRAW = EMRPOLYDRAW;
+
+     EMRPOLYDRAW16 = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cpts : DWORD;
+          apts : array[0..0] of POINTS;
+          abTypes : array[0..0] of BYTE;
+       end;
+
+     PEMRPOLYDRAW16 = ^EMRPOLYDRAW16;
+
+     tagEMRPOLYDRAW16 = EMRPOLYDRAW16;
+
+     EMRPOLYLINE = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cptl : DWORD;
+          aptl : array[0..0] of POINTL;
+       end;
+
+     PEMRPOLYLINE = ^EMRPOLYLINE;
+
+     EMRPOLYBEZIER = EMRPOLYLINE;
+
+     PEMRPOLYBEZIER = ^EMRPOLYLINE;
+
+     EMRPOLYGON = EMRPOLYLINE;
+
+     PEMRPOLYGON = ^EMRPOLYLINE;
+
+     EMRPOLYBEZIERTO = EMRPOLYLINE;
+
+     PEMRPOLYBEZIERTO = ^EMRPOLYLINE;
+
+     EMRPOLYLINETO = EMRPOLYLINE;
+
+     PEMRPOLYLINETO = ^EMRPOLYLINE;
+
+     tagEMRPOLYLINE = EMRPOLYLINE;
+
+     EMRPOLYLINE16 = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cpts : DWORD;
+          apts : array[0..0] of POINTL;
+       end;
+
+     PEMRPOLYLINE16 = ^EMRPOLYLINE16;
+
+     EMRPOLYBEZIER16 = EMRPOLYLINE16;
+
+     PEMRPOLYBEZIER16 = ^EMRPOLYLINE16;
+
+     EMRPOLYGON16 = EMRPOLYLINE16;
+
+     PEMRPOLYGON16 = ^EMRPOLYLINE16;
+
+     EMRPOLYBEZIERTO16 = EMRPOLYLINE16;
+
+     PEMRPOLYBEZIERTO16 = ^EMRPOLYLINE16;
+
+     EMRPOLYLINETO16 = EMRPOLYLINE16;
+
+     PEMRPOLYLINETO16 = ^EMRPOLYLINE16;
+
+     tagEMRPOLYLINE16 = EMRPOLYLINE16;
+
+     EMRPOLYPOLYLINE = record
+          emr : EMR;
+          rclBounds : RECTL;
+          nPolys : DWORD;
+          cptl : DWORD;
+          aPolyCounts : array[0..0] of DWORD;
+          aptl : array[0..0] of POINTL;
+       end;
+
+     PEMRPOLYPOLYLINE = ^EMRPOLYPOLYLINE;
+
+     EMRPOLYPOLYGON = EMRPOLYPOLYLINE;
+
+     PEMRPOLYPOLYGON = ^EMRPOLYPOLYLINE;
+
+     tagEMRPOLYPOLYLINE = EMRPOLYPOLYLINE;
+
+     EMRPOLYPOLYLINE16 = record
+          emr : EMR;
+          rclBounds : RECTL;
+          nPolys : DWORD;
+          cpts : DWORD;
+          aPolyCounts : array[0..0] of DWORD;
+          apts : array[0..0] of POINTS;
+       end;
+
+     PEMRPOLYPOLYLINE16 = ^EMRPOLYPOLYLINE16;
+
+     EMRPOLYPOLYGON16 = EMRPOLYPOLYLINE16;
+
+     PEMRPOLYPOLYGON16 = ^EMRPOLYPOLYLINE16;
+
+     tagEMRPOLYPOLYLINE16 = EMRPOLYPOLYLINE16;
+
+     EMRPOLYTEXTOUTA = record
+          emr : EMR;
+          rclBounds : RECTL;
+          iGraphicsMode : DWORD;
+          exScale : FLOAT;
+          eyScale : FLOAT;
+          cStrings : LONG;
+          aemrtext : array[0..0] of EMRTEXT;
+       end;
+
+     PEMRPOLYTEXTOUTA = ^EMRPOLYTEXTOUTA;
+
+     EMRPOLYTEXTOUTW = EMRPOLYTEXTOUTA;
+
+     PEMRPOLYTEXTOUTW = ^EMRPOLYTEXTOUTA;
+
+     tagEMRPOLYTEXTOUTA = EMRPOLYTEXTOUTA;
+
+     EMRRESIZEPALETTE = record
+          emr : EMR;
+          ihPal : DWORD;
+          cEntries : DWORD;
+       end;
+
+     PEMRRESIZEPALETTE = ^EMRRESIZEPALETTE;
+
+     tagEMRRESIZEPALETTE = EMRRESIZEPALETTE;
+
+     EMRRESTOREDC = record
+          emr : EMR;
+          iRelative : LONG;
+       end;
+
+     PEMRRESTOREDC = ^EMRRESTOREDC;
+
+     tagEMRRESTOREDC = EMRRESTOREDC;
+
+     EMRROUNDRECT = record
+          emr : EMR;
+          rclBox : RECTL;
+          szlCorner : SIZEL;
+       end;
+
+     PEMRROUNDRECT = ^EMRROUNDRECT;
+
+     tagEMRROUNDRECT = EMRROUNDRECT;
+
+     EMRSCALEVIEWPORTEXTEX = record
+          emr : EMR;
+          xNum : LONG;
+          xDenom : LONG;
+          yNum : LONG;
+          yDenom : LONG;
+       end;
+
+     PEMRSCALEVIEWPORTEXTEX = ^EMRSCALEVIEWPORTEXTEX;
+
+     EMRSCALEWINDOWEXTEX = EMRSCALEVIEWPORTEXTEX;
+
+     PEMRSCALEWINDOWEXTEX = ^EMRSCALEVIEWPORTEXTEX;
+
+     tagEMRSCALEVIEWPORTEXTEX = EMRSCALEVIEWPORTEXTEX;
+
+     EMRSELECTCOLORSPACE = record
+          emr : EMR;
+          ihCS : DWORD;
+       end;
+
+     PEMRSELECTCOLORSPACE = ^EMRSELECTCOLORSPACE;
+
+     EMRDELETECOLORSPACE = EMRSELECTCOLORSPACE;
+
+     PEMRDELETECOLORSPACE = ^EMRSELECTCOLORSPACE;
+
+     tagEMRSELECTCOLORSPACE = EMRSELECTCOLORSPACE;
+
+     EMRSELECTOBJECT = record
+          emr : EMR;
+          ihObject : DWORD;
+       end;
+
+     PEMRSELECTOBJECT = ^EMRSELECTOBJECT;
+
+     EMRDELETEOBJECT = EMRSELECTOBJECT;
+
+     PEMRDELETEOBJECT = ^EMRSELECTOBJECT;
+
+     tagEMRSELECTOBJECT = EMRSELECTOBJECT;
+
+     EMRSELECTPALETTE = record
+          emr : EMR;
+          ihPal : DWORD;
+       end;
+
+     PEMRSELECTPALETTE = ^EMRSELECTPALETTE;
+
+     tagEMRSELECTPALETTE = EMRSELECTPALETTE;
+
+     EMRSETARCDIRECTION = record
+          emr : EMR;
+          iArcDirection : DWORD;
+       end;
+
+     PEMRSETARCDIRECTION = ^EMRSETARCDIRECTION;
+
+     tagEMRSETARCDIRECTION = EMRSETARCDIRECTION;
+
+     EMRSETBKCOLOR = record
+          emr : EMR;
+          crColor : COLORREF;
+       end;
+
+     PEMRSETBKCOLOR = ^EMRSETBKCOLOR;
+
+     EMRSETTEXTCOLOR = EMRSETBKCOLOR;
+
+     PEMRSETTEXTCOLOR = ^EMRSETBKCOLOR;
+
+     tagEMRSETTEXTCOLOR = EMRSETBKCOLOR;
+
+     EMRSETCOLORADJUSTMENT = record
+          emr : EMR;
+          ColorAdjustment : COLORADJUSTMENT;
+       end;
+
+     PEMRSETCOLORADJUSTMENT = ^EMRSETCOLORADJUSTMENT;
+
+     tagEMRSETCOLORADJUSTMENT = EMRSETCOLORADJUSTMENT;
+
+     EMRSETDIBITSTODEVICE = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          xSrc : LONG;
+          ySrc : LONG;
+          cxSrc : LONG;
+          cySrc : LONG;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          iUsageSrc : DWORD;
+          iStartScan : DWORD;
+          cScans : DWORD;
+       end;
+
+     PEMRSETDIBITSTODEVICE = ^EMRSETDIBITSTODEVICE;
+
+     tagEMRSETDIBITSTODEVICE = EMRSETDIBITSTODEVICE;
+
+     EMRSETMAPPERFLAGS = record
+          emr : EMR;
+          dwFlags : DWORD;
+       end;
+
+     PEMRSETMAPPERFLAGS = ^EMRSETMAPPERFLAGS;
+
+     tagEMRSETMAPPERFLAGS = EMRSETMAPPERFLAGS;
+
+     EMRSETMITERLIMIT = record
+          emr : EMR;
+          eMiterLimit : FLOAT;
+       end;
+
+     PEMRSETMITERLIMIT = ^EMRSETMITERLIMIT;
+
+     tagEMRSETMITERLIMIT = EMRSETMITERLIMIT;
+
+     EMRSETPALETTEENTRIES = record
+          emr : EMR;
+          ihPal : DWORD;
+          iStart : DWORD;
+          cEntries : DWORD;
+          aPalEntries : array[0..0] of PALETTEENTRY;
+       end;
+
+     PEMRSETPALETTEENTRIES = ^EMRSETPALETTEENTRIES;
+
+     tagEMRSETPALETTEENTRIES = EMRSETPALETTEENTRIES;
+
+     EMRSETPIXELV = record
+          emr : EMR;
+          ptlPixel : POINTL;
+          crColor : COLORREF;
+       end;
+
+     PEMRSETPIXELV = ^EMRSETPIXELV;
+
+     tagEMRSETPIXELV = EMRSETPIXELV;
+
+     EMRSETVIEWPORTEXTEX = record
+          emr : EMR;
+          szlExtent : SIZEL;
+       end;
+
+     PEMRSETVIEWPORTEXTEX = ^EMRSETVIEWPORTEXTEX;
+
+     EMRSETWINDOWEXTEX = EMRSETVIEWPORTEXTEX;
+
+     PEMRSETWINDOWEXTEX = ^EMRSETVIEWPORTEXTEX;
+
+     tagEMRSETVIEWPORTEXTEX = EMRSETVIEWPORTEXTEX;
+
+     EMRSETVIEWPORTORGEX = record
+          emr : EMR;
+          ptlOrigin : POINTL;
+       end;
+
+     PEMRSETVIEWPORTORGEX = ^EMRSETVIEWPORTORGEX;
+
+     EMRSETWINDOWORGEX = EMRSETVIEWPORTORGEX;
+
+     PEMRSETWINDOWORGEX = ^EMRSETVIEWPORTORGEX;
+
+     EMRSETBRUSHORGEX = EMRSETVIEWPORTORGEX;
+
+     PEMRSETBRUSHORGEX = ^EMRSETVIEWPORTORGEX;
+
+     tagEMRSETVIEWPORTORGEX = EMRSETVIEWPORTORGEX;
+
+     EMRSETWORLDTRANSFORM = record
+          emr : EMR;
+          xform : XFORM;
+       end;
+
+     PEMRSETWORLDTRANSFORM = ^EMRSETWORLDTRANSFORM;
+
+     tagEMRSETWORLDTRANSFORM = EMRSETWORLDTRANSFORM;
+
+     EMRSTRETCHBLT = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          cxDest : LONG;
+          cyDest : LONG;
+          dwRop : DWORD;
+          xSrc : LONG;
+          ySrc : LONG;
+          xformSrc : XFORM;
+          crBkColorSrc : COLORREF;
+          iUsageSrc : DWORD;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          cxSrc : LONG;
+          cySrc : LONG;
+       end;
+
+     PEMRSTRETCHBLT = ^EMRSTRETCHBLT;
+
+     tagEMRSTRETCHBLT = EMRSTRETCHBLT;
+
+     EMRSTRETCHDIBITS = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          xSrc : LONG;
+          ySrc : LONG;
+          cxSrc : LONG;
+          cySrc : LONG;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          iUsageSrc : DWORD;
+          dwRop : DWORD;
+          cxDest : LONG;
+          cyDest : LONG;
+       end;
+
+     PEMRSTRETCHDIBITS = ^EMRSTRETCHDIBITS;
+
+     tagEMRSTRETCHDIBITS = EMRSTRETCHDIBITS;
+
+     EMRABORTPATH = record
+          emr : EMR;
+       end;
+
+     PEMRABORTPATH = ^EMRABORTPATH;
+
+     EMRBEGINPATH = EMRABORTPATH;
+
+     PEMRBEGINPATH = ^EMRABORTPATH;
+
+     EMRENDPATH = EMRABORTPATH;
+
+     PEMRENDPATH = ^EMRABORTPATH;
+
+     EMRCLOSEFIGURE = EMRABORTPATH;
+
+     PEMRCLOSEFIGURE = ^EMRABORTPATH;
+
+     EMRFLATTENPATH = EMRABORTPATH;
+
+     PEMRFLATTENPATH = ^EMRABORTPATH;
+
+     EMRWIDENPATH = EMRABORTPATH;
+
+     PEMRWIDENPATH = ^EMRABORTPATH;
+
+     EMRSETMETARGN = EMRABORTPATH;
+
+     PEMRSETMETARGN = ^EMRABORTPATH;
+
+     EMRSAVEDC = EMRABORTPATH;
+
+     PEMRSAVEDC = ^EMRABORTPATH;
+
+     EMRREALIZEPALETTE = EMRABORTPATH;
+
+     PEMRREALIZEPALETTE = ^EMRABORTPATH;
+
+     tagABORTPATH = EMRABORTPATH;
+
+     EMRSELECTCLIPPATH = record
+          emr : EMR;
+          iMode : DWORD;
+       end;
+
+     PEMRSELECTCLIPPATH = ^EMRSELECTCLIPPATH;
+
+     EMRSETBKMODE = EMRSELECTCLIPPATH;
+
+     PEMRSETBKMODE = ^EMRSELECTCLIPPATH;
+
+     EMRSETMAPMODE = EMRSELECTCLIPPATH;
+
+     PEMRSETMAPMODE = ^EMRSELECTCLIPPATH;
+
+     EMRSETPOLYFILLMODE = EMRSELECTCLIPPATH;
+
+     PEMRSETPOLYFILLMODE = ^EMRSELECTCLIPPATH;
+
+     EMRSETROP2 = EMRSELECTCLIPPATH;
+
+     PEMRSETROP2 = ^EMRSELECTCLIPPATH;
+
+     EMRSETSTRETCHBLTMODE = EMRSELECTCLIPPATH;
+
+     PEMRSETSTRETCHBLTMODE = ^EMRSELECTCLIPPATH;
+
+     EMRSETTEXTALIGN = EMRSELECTCLIPPATH;
+
+     PEMRSETTEXTALIGN = ^EMRSELECTCLIPPATH;
+
+     EMRENABLEICM = EMRSELECTCLIPPATH;
+
+     PEMRENABLEICM = ^EMRSELECTCLIPPATH;
+
+     tagEMRSELECTCLIPPATH = EMRSELECTCLIPPATH;
+
+     NMHDR = record
+          hwndFrom : HWND;
+          idFrom : UINT;
+          code : UINT;
+       end;
+
+     tagNMHDR = NMHDR;
+
+     ENCORRECTTEXT = record
+          nmhdr : NMHDR;
+          chrg : CHARRANGE;
+          seltyp : WORD;
+       end;
+
+     _encorrecttext = ENCORRECTTEXT;
+
+     ENDROPFILES = record
+          nmhdr : NMHDR;
+          hDrop : HANDLE;
+          cp : LONG;
+          fProtected : WINBOOL;
+       end;
+
+     _endropfiles = ENDROPFILES;
+
+     ENSAVECLIPBOARD = record
+          nmhdr : NMHDR;
+          cObjectCount : LONG;
+          cch : LONG;
+       end;
+
+     ENOLEOPFAILED = record
+          nmhdr : NMHDR;
+          iob : LONG;
+          lOper : LONG;
+          hr : HRESULT;
+       end;
+
+     ENHMETAHEADER = record
+          iType : DWORD;
+          nSize : DWORD;
+          rclBounds : RECTL;
+          rclFrame : RECTL;
+          dSignature : DWORD;
+          nVersion : DWORD;
+          nBytes : DWORD;
+          nRecords : DWORD;
+          nHandles : WORD;
+          sReserved : WORD;
+          nDescription : DWORD;
+          offDescription : DWORD;
+          nPalEntries : DWORD;
+          szlDevice : SIZEL;
+          szlMillimeters : SIZEL;
+       end;
+
+     LPENHMETAHEADER = ^ENHMETAHEADER;
+
+     tagENHMETAHEADER = ENHMETAHEADER;
+
+     ENHMETARECORD = record
+          iType : DWORD;
+          nSize : DWORD;
+          dParm : array[0..0] of DWORD;
+       end;
+
+     PENHMETARECORD = ^ENHMETARECORD;
+
+     LPENHMETARECORD = ^ENHMETARECORD;
+
+     tagENHMETARECORD = ENHMETARECORD;
+
+     ENPROTECTED = record
+          nmhdr : NMHDR;
+          msg : UINT;
+          wParam : WPARAM;
+          lParam : LPARAM;
+          chrg : CHARRANGE;
+       end;
+
+     _enprotected = ENPROTECTED;
+
+     SERVICE_STATUS = record
+          dwServiceType : DWORD;
+          dwCurrentState : DWORD;
+          dwControlsAccepted : DWORD;
+          dwWin32ExitCode : DWORD;
+          dwServiceSpecificExitCode : DWORD;
+          dwCheckPoint : DWORD;
+          dwWaitHint : DWORD;
+       end;
+
+     LPSERVICE_STATUS = ^SERVICE_STATUS;
+
+     _SERVICE_STATUS = SERVICE_STATUS;
+
+     ENUM_SERVICE_STATUS = record
+          lpServiceName : LPTSTR;
+          lpDisplayName : LPTSTR;
+          ServiceStatus : SERVICE_STATUS;
+       end;
+
+     LPENUM_SERVICE_STATUS = ^ENUM_SERVICE_STATUS;
+
+     _ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUS;
+
+     ENUMLOGFONT = record
+          elfLogFont : LOGFONT;
+          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
+          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
+       end;
+
+     tagENUMLOGFONT = ENUMLOGFONT;
+
+     ENUMLOGFONTEX = record
+          elfLogFont : LOGFONT;
+          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
+          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
+          elfScript : array[0..(LF_FACESIZE)-1] of BCHAR;
+       end;
+
+     tagENUMLOGFONTEX = ENUMLOGFONTEX;
+  {
+    Then follow: 
+    
+    TCHAR SourceName[] 
+    TCHAR Computername[] 
+    SID   UserSid 
+    TCHAR Strings[] 
+    BYTE  Data[] 
+    CHAR  Pad[] 
+    DWORD Length; 
+   }
+
+     EVENTLOGRECORD = record
+          Length : DWORD;
+          Reserved : DWORD;
+          RecordNumber : DWORD;
+          TimeGenerated : DWORD;
+          TimeWritten : DWORD;
+          EventID : DWORD;
+          EventType : WORD;
+          NumStrings : WORD;
+          EventCategory : WORD;
+          ReservedFlags : WORD;
+          ClosingRecordNumber : DWORD;
+          StringOffset : DWORD;
+          UserSidLength : DWORD;
+          UserSidOffset : DWORD;
+          DataLength : DWORD;
+          DataOffset : DWORD;
+       end;
+
+     _EVENTLOGRECORD = EVENTLOGRECORD;
+
+     EVENTMSG = record
+          message : UINT;
+          paramL : UINT;
+          paramH : UINT;
+          time : DWORD;
+          hwnd : HWND;
+       end;
+
+     tagEVENTMSG = EVENTMSG;
+
+     EXCEPTION_POINTERS = record
+          ExceptionRecord : PEXCEPTION_RECORD;
+          ContextRecord : PCONTEXT;
+       end;
+
+     PEXCEPTION_POINTERS = ^EXCEPTION_POINTERS;
+
+     LPEXCEPTION_POINTERS = ^EXCEPTION_POINTERS;
+
+     _EXCEPTION_POINTERS = EXCEPTION_POINTERS;
+
+     EXT_BUTTON = record
+          idCommand : WORD;
+          idsHelp : WORD;
+          fsStyle : WORD;
+       end;
+
+     LPEXT_BUTTON = ^EXT_BUTTON;
+
+     _EXT_BUTTON = EXT_BUTTON;
+
+     FILTERKEYS = record
+          cbSize : UINT;
+          dwFlags : DWORD;
+          iWaitMSec : DWORD;
+          iDelayMSec : DWORD;
+          iRepeatMSec : DWORD;
+          iBounceMSec : DWORD;
+       end;
+
+     tagFILTERKEYS = FILTERKEYS;
+
+     FIND_NAME_BUFFER = record
+          length : UCHAR;
+          access_control : UCHAR;
+          frame_control : UCHAR;
+          destination_addr : array[0..5] of UCHAR;
+          source_addr : array[0..5] of UCHAR;
+          routing_info : array[0..17] of UCHAR;
+       end;
+
+     _FIND_NAME_BUFFER = FIND_NAME_BUFFER;
+
+     FIND_NAME_HEADER = record
+          node_count : WORD;
+          reserved : UCHAR;
+          unique_group : UCHAR;
+       end;
+
+     _FIND_NAME_HEADER = FIND_NAME_HEADER;
+
+     FINDREPLACE = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hInstance : HINSTANCE;
+          Flags : DWORD;
+          lpstrFindWhat : LPTSTR;
+          lpstrReplaceWith : LPTSTR;
+          wFindWhatLen : WORD;
+          wReplaceWithLen : WORD;
+          lCustData : LPARAM;
+          lpfnHook : LPFRHOOKPROC;
+          lpTemplateName : LPCTSTR;
+       end;
+
+     LPFINDREPLACE = ^FINDREPLACE;
+
+     {FINDTEXT = record conflicts with FindText function }
+     TFINDTEXT = record
+          chrg : CHARRANGE;
+          lpstrText : LPSTR;
+       end;
+
+     _findtext = TFINDTEXT;
+
+     FINDTEXTEX = record
+          chrg : CHARRANGE;
+          lpstrText : LPSTR;
+          chrgText : CHARRANGE;
+       end;
+
+     _findtextex = FINDTEXTEX;
+
+     FMS_GETDRIVEINFO = record
+          dwTotalSpace : DWORD;
+          dwFreeSpace : DWORD;
+          szPath : array[0..259] of TCHAR;
+          szVolume : array[0..13] of TCHAR;
+          szShare : array[0..127] of TCHAR;
+       end;
+
+     _FMS_GETDRIVEINFO = FMS_GETDRIVEINFO;
+
+     FMS_GETFILESEL = record
+          ftTime : FILETIME;
+          dwSize : DWORD;
+          bAttr : BYTE;
+          szName : array[0..259] of TCHAR;
+       end;
+
+     _FMS_GETFILESEL = FMS_GETFILESEL;
+
+     FMS_LOAD = record
+          dwSize : DWORD;
+          szMenuName : array[0..(MENU_TEXT_LEN)-1] of TCHAR;
+          hMenu : HMENU;
+          wMenuDelta : UINT;
+       end;
+
+     _FMS_LOAD = FMS_LOAD;
+
+     FMS_TOOLBARLOAD = record
+          dwSize : DWORD;
+          lpButtons : LPEXT_BUTTON;
+          cButtons : WORD;
+          cBitmaps : WORD;
+          idBitmap : WORD;
+          hBitmap : HBITMAP;
+       end;
+
+     _FMS_TOOLBARLOAD = FMS_TOOLBARLOAD;
+
+     FOCUS_EVENT_RECORD = record
+          bSetFocus : WINBOOL;
+       end;
+
+     _FOCUS_EVENT_RECORD = FOCUS_EVENT_RECORD;
+
+     FORM_INFO_1 = record
+          Flags : DWORD;
+          pName : LPTSTR;
+          Size : SIZEL;
+          ImageableArea : RECTL;
+       end;
+
+     _FORM_INFO_1 = FORM_INFO_1;
+
+     FORMAT_PARAMETERS = record
+          MediaType : MEDIA_TYPE;
+          StartCylinderNumber : DWORD;
+          EndCylinderNumber : DWORD;
+          StartHeadNumber : DWORD;
+          EndHeadNumber : DWORD;
+       end;
+
+     _FORMAT_PARAMETERS = FORMAT_PARAMETERS;
+
+     FORMATRANGE = record
+          _hdc : HDC;
+          hdcTarget : HDC;
+          rc : RECT;
+          rcPage : RECT;
+          chrg : CHARRANGE;
+       end;
+
+     _formatrange = FORMATRANGE;
+
+     GCP_RESULTS = record
+          lStructSize : DWORD;
+          lpOutString : LPTSTR;
+          lpOrder : ^UINT;
+          lpDx : ^INT;
+          lpCaretPos : ^INT;
+          lpClass : LPTSTR;
+          lpGlyphs : ^UINT;
+          nGlyphs : UINT;
+          nMaxFit : UINT;
+       end;
+
+     LPGCP_RESULTS = ^GCP_RESULTS;
+
+     tagGCP_RESULTS = GCP_RESULTS;
+
+     GENERIC_MAPPING = record
+          GenericRead : ACCESS_MASK;
+          GenericWrite : ACCESS_MASK;
+          GenericExecute : ACCESS_MASK;
+          GenericAll : ACCESS_MASK;
+       end;
+
+     PGENERIC_MAPPING = ^GENERIC_MAPPING;
+
+     _GENERIC_MAPPING = GENERIC_MAPPING;
+
+     GLYPHMETRICS = record
+          gmBlackBoxX : UINT;
+          gmBlackBoxY : UINT;
+          gmptGlyphOrigin : POINT;
+          gmCellIncX : integer;
+          gmCellIncY : integer;
+       end;
+
+     LPGLYPHMETRICS = ^GLYPHMETRICS;
+
+     _GLYPHMETRICS = GLYPHMETRICS;
+
+     HANDLETABLE = record
+          objectHandle : array[0..0] of HGDIOBJ;
+       end;
+
+     LPHANDLETABLE = ^HANDLETABLE;
+
+     tagHANDLETABLE = HANDLETABLE;
+
+     HD_HITTESTINFO = record
+          pt : POINT;
+          flags : UINT;
+          iItem : longint;
+       end;
+
+     _HD_HITTESTINFO = HD_HITTESTINFO;
+
+     HD_ITEM = record
+          mask : UINT;
+          cxy : longint;
+          pszText : LPTSTR;
+          hbm : HBITMAP;
+          cchTextMax : longint;
+          fmt : longint;
+          lParam : LPARAM;
+       end;
+
+     _HD_ITEM = HD_ITEM;
+
+     WINDOWPOS = record
+          _hwnd : HWND;
+          hwndInsertAfter : HWND;
+          x : longint;
+          y : longint;
+          cx : longint;
+          cy : longint;
+          flags : UINT;
+       end;
+
+     PWINDOWPOS = ^WINDOWPOS;
+
+     LPWINDOWPOS = ^WINDOWPOS;
+
+     _WINDOWPOS = WINDOWPOS;
+
+     HD_LAYOUT = record
+          prc : ^RECT;
+          pwpos : ^WINDOWPOS;
+       end;
+
+     _HD_LAYOUT = HD_LAYOUT;
+
+     HD_NOTIFY = record
+          hdr : NMHDR;
+          iItem : longint;
+          iButton : longint;
+          pitem : ^HD_ITEM;
+       end;
+
+     _HD_NOTIFY = HD_NOTIFY;
+
+     HELPINFO = record
+          cbSize : UINT;
+          iContextType : longint;
+          iCtrlId : longint;
+          hItemHandle : HANDLE;
+          dwContextId : DWORD;
+          MousePos : POINT;
+       end;
+
+     LPHELPINFO = ^HELPINFO;
+
+     tagHELPINFO = HELPINFO;
+
+     HELPWININFO = record
+          wStructSize : longint;
+          x : longint;
+          y : longint;
+          dx : longint;
+          dy : longint;
+          wMax : longint;
+          rgchMember : array[0..1] of TCHAR;
+       end;
+
+     HIGHCONTRAST = record
+          cbSize : UINT;
+          dwFlags : DWORD;
+          lpszDefaultScheme : LPTSTR;
+       end;
+
+     LPHIGHCONTRAST = ^HIGHCONTRAST;
+
+     tagHIGHCONTRAST = HIGHCONTRAST;
+
+     HSZPAIR = record
+          hszSvc : HSZ;
+          hszTopic : HSZ;
+       end;
+
+     tagHSZPAIR = HSZPAIR;
+
+     ICONINFO = record
+          fIcon : WINBOOL;
+          xHotspot : DWORD;
+          yHotspot : DWORD;
+          hbmMask : HBITMAP;
+          hbmColor : HBITMAP;
+       end;
+
+     PICONINFO = ^ICONINFO;
+
+     _ICONINFO = ICONINFO;
+
+     ICONMETRICS = record
+          cbSize : UINT;
+          iHorzSpacing : longint;
+          iVertSpacing : longint;
+          iTitleWrap : longint;
+          lfFont : LOGFONT;
+       end;
+
+     LPICONMETRICS = ^ICONMETRICS;
+
+     tagICONMETRICS = ICONMETRICS;
+
+     IMAGEINFO = record
+          hbmImage : HBITMAP;
+          hbmMask : HBITMAP;
+          Unused1 : longint;
+          Unused2 : longint;
+          rcImage : RECT;
+       end;
+
+     _IMAGEINFO = IMAGEINFO;
+
+{$PACKRECORDS 1}
+
+  type
+
+     KEY_EVENT_RECORD = record
+          bKeyDown : WINBOOL;
+          wRepeatCount : WORD;
+          wVirtualKeyCode : WORD;
+          wVirtualScanCode : WORD;
+          AsciiChar : char;
+          pad : char;
+          uChar : record
+              case longint of
+                 0 : ( UnicodeChar : WCHAR );
+                 1 : ( AsciiChar : CHAR );
+              end;
+          dwControlKeyState : DWORD;
+       end;
+
+     _KEY_EVENT_RECORD = KEY_EVENT_RECORD;
+{$PACKRECORDS 4}
+
+     MOUSE_EVENT_RECORD = record
+          dwMousePosition : COORD;
+          dwButtonState : DWORD;
+          dwControlKeyState : DWORD;
+          dwEventFlags : DWORD;
+       end;
+
+     _MOUSE_EVENT_RECORD = MOUSE_EVENT_RECORD;
+
+     WINDOW_BUFFER_SIZE_RECORD = record
+          dwSize : COORD;
+       end;
+
+     _WINDOW_BUFFER_SIZE_RECORD = WINDOW_BUFFER_SIZE_RECORD;
+
+     MENU_EVENT_RECORD = record
+          dwCommandId : UINT;
+       end;
+
+     PMENU_EVENT_RECORD = ^MENU_EVENT_RECORD;
+
+     _MENU_EVENT_RECORD = MENU_EVENT_RECORD;
+{$ifndef __cplus_plus}
+  { this will be the wrong size in c++  }
+{$endif}
+
+  type
+
+     INPUT_RECORD = record
+          EventType : WORD;
+          Event : record
+              case longint of
+                 0 : ( KeyEvent : KEY_EVENT_RECORD );
+                 1 : ( MouseEvent : MOUSE_EVENT_RECORD );
+                 2 : ( WindowBufferSizeEvent : WINDOW_BUFFER_SIZE_RECORD );
+                 3 : ( MenuEvent : MENU_EVENT_RECORD );
+                 4 : ( FocusEvent : FOCUS_EVENT_RECORD );
+              end;
+       end;
+
+     PINPUT_RECORD = ^INPUT_RECORD;
+
+     _INPUT_RECORD = INPUT_RECORD;
+
+     SYSTEMTIME = record
+          wYear : WORD;
+          wMonth : WORD;
+          wDayOfWeek : WORD;
+          wDay : WORD;
+          wHour : WORD;
+          wMinute : WORD;
+          wSecond : WORD;
+          wMilliseconds : WORD;
+       end;
+
+     LPSYSTEMTIME = ^SYSTEMTIME;
+
+     _SYSTEMTIME = SYSTEMTIME;
+
+     JOB_INFO_1 = record
+          JobId : DWORD;
+          pPrinterName : LPTSTR;
+          pMachineName : LPTSTR;
+          pUserName : LPTSTR;
+          pDocument : LPTSTR;
+          pDatatype : LPTSTR;
+          pStatus : LPTSTR;
+          Status : DWORD;
+          Priority : DWORD;
+          Position : DWORD;
+          TotalPages : DWORD;
+          PagesPrinted : DWORD;
+          Submitted : SYSTEMTIME;
+       end;
+
+     _JOB_INFO_1 = JOB_INFO_1;
+
+     SID_IDENTIFIER_AUTHORITY = record
+          Value : array[0..5] of BYTE;
+       end;
+
+     PSID_IDENTIFIER_AUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
+
+     LPSID_IDENTIFIER_AUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
+
+     _SID_IDENTIFIER_AUTHORITY = SID_IDENTIFIER_AUTHORITY;
+
+     SID = record
+          Revision : BYTE;
+          SubAuthorityCount : BYTE;
+          IdentifierAuthority : SID_IDENTIFIER_AUTHORITY;
+          SubAuthority : array[0..(ANYSIZE_ARRAY)-1] of DWORD;
+       end;
+
+     PSID = ^SID;
+
+     _SID = SID;
+
+     SECURITY_DESCRIPTOR_CONTROL = WORD;
+
+     PSECURITY_DESCRIPTOR_CONTROL = ^SECURITY_DESCRIPTOR_CONTROL;
+
+     SECURITY_DESCRIPTOR = record
+          Revision : BYTE;
+          Sbz1 : BYTE;
+          Control : SECURITY_DESCRIPTOR_CONTROL;
+          Owner : PSID;
+          Group : PSID;
+          Sacl : PACL;
+          Dacl : PACL;
+       end;
+
+     PSECURITY_DESCRIPTOR = ^SECURITY_DESCRIPTOR;
+
+     _SECURITY_DESCRIPTOR = SECURITY_DESCRIPTOR;
+
+     JOB_INFO_2 = record
+          JobId : DWORD;
+          pPrinterName : LPTSTR;
+          pMachineName : LPTSTR;
+          pUserName : LPTSTR;
+          pDocument : LPTSTR;
+          pNotifyName : LPTSTR;
+          pDatatype : LPTSTR;
+          pPrintProcessor : LPTSTR;
+          pParameters : LPTSTR;
+          pDriverName : LPTSTR;
+          pDevMode : LPDEVMODE;
+          pStatus : LPTSTR;
+          pSecurityDescriptor : PSECURITY_DESCRIPTOR;
+          Status : DWORD;
+          Priority : DWORD;
+          Position : DWORD;
+          StartTime : DWORD;
+          UntilTime : DWORD;
+          TotalPages : DWORD;
+          Size : DWORD;
+          Submitted : SYSTEMTIME;
+          Time : DWORD;
+          PagesPrinted : DWORD;
+       end;
+
+     _JOB_INFO_2 = JOB_INFO_2;
+
+     KERNINGPAIR = record
+          wFirst : WORD;
+          wSecond : WORD;
+          iKernAmount : longint;
+       end;
+
+     LPKERNINGPAIR = ^KERNINGPAIR;
+
+     tagKERNINGPAIR = KERNINGPAIR;
+
+     LANA_ENUM = record
+          length : UCHAR;
+          lana : array[0..(MAX_LANA)-1] of UCHAR;
+       end;
+
+     _LANA_ENUM = LANA_ENUM;
+
+     LDT_ENTRY = record
+          LimitLow : WORD;
+          BaseLow : WORD;
+          HighWord : record
+              case longint of
+                 0 : ( Bytes : record
+                      BaseMid : BYTE;
+                      Flags1 : BYTE;
+                      Flags2 : BYTE;
+                      BaseHi : BYTE;
+                   end );
+                 1 : ( Bits : record
+                      flag0 : longint;
+                   end );
+              end;
+       end;
+
+     PLDT_ENTRY = ^LDT_ENTRY;
+
+     LPLDT_ENTRY = ^LDT_ENTRY;
+
+     _LDT_ENTRY = LDT_ENTRY;
+  const
+     bm_LDT_ENTRY_BaseMid = $FF;
+     bp_LDT_ENTRY_BaseMid = 0;
+     bm_LDT_ENTRY_Type = $1F00;
+     bp_LDT_ENTRY_Type = 8;
+     bm_LDT_ENTRY_Dpl = $6000;
+     bp_LDT_ENTRY_Dpl = 13;
+     bm_LDT_ENTRY_Pres = $8000;
+     bp_LDT_ENTRY_Pres = 15;
+     bm_LDT_ENTRY_LimitHi = $F0000;
+     bp_LDT_ENTRY_LimitHi = 16;
+     bm_LDT_ENTRY_Sys = $100000;
+     bp_LDT_ENTRY_Sys = 20;
+     bm_LDT_ENTRY_Reserved_0 = $200000;
+     bp_LDT_ENTRY_Reserved_0 = 21;
+     bm_LDT_ENTRY_Default_Big = $400000;
+     bp_LDT_ENTRY_Default_Big = 22;
+     bm_LDT_ENTRY_Granularity = $800000;
+     bp_LDT_ENTRY_Granularity = 23;
+     bm_LDT_ENTRY_BaseHi = $FF000000;
+     bp_LDT_ENTRY_BaseHi = 24;
+
+  type
+
+     LOCALESIGNATURE = record
+          lsUsb : array[0..3] of DWORD;
+          lsCsbDefault : array[0..1] of DWORD;
+          lsCsbSupported : array[0..1] of DWORD;
+       end;
+
+     tagLOCALESIGNATURE = LOCALESIGNATURE;
+
+     LOCALGROUP_MEMBERS_INFO_0 = record
+          lgrmi0_sid : PSID;
+       end;
+
+     _LOCALGROUP_MEMBERS_INFO_0 = LOCALGROUP_MEMBERS_INFO_0;
+
+     LOCALGROUP_MEMBERS_INFO_3 = record
+          lgrmi3_domainandname : LPWSTR;
+       end;
+
+     _LOCALGROUP_MEMBERS_INFO_3 = LOCALGROUP_MEMBERS_INFO_3;
+
+     FXPT16DOT16 = longint;
+
+     LPFXPT16DOT16 = ^FXPT16DOT16;
+
+     LUID = LARGE_INTEGER;
+
+     PLUID = ^LUID;
+
+     LUID_AND_ATTRIBUTES = record
+          Luid : LUID;
+          Attributes : DWORD;
+       end;
+
+     _LUID_AND_ATTRIBUTES = LUID_AND_ATTRIBUTES;
+
+     LUID_AND_ATTRIBUTES_ARRAY = array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
+
+     PLUID_AND_ATTRIBUTES_ARRAY = ^LUID_AND_ATTRIBUTES_ARRAY;
+
+     LV_COLUMN = record
+          mask : UINT;
+          fmt : longint;
+          cx : longint;
+          pszText : LPTSTR;
+          cchTextMax : longint;
+          iSubItem : longint;
+       end;
+
+     _LV_COLUMN = LV_COLUMN;
+
+     LV_ITEM = record
+          mask : UINT;
+          iItem : longint;
+          iSubItem : longint;
+          state : UINT;
+          stateMask : UINT;
+          pszText : LPTSTR;
+          cchTextMax : longint;
+          iImage : longint;
+          lParam : LPARAM;
+       end;
+
+     _LV_ITEM = LV_ITEM;
+
+     LV_DISPINFO = record
+          hdr : NMHDR;
+          item : LV_ITEM;
+       end;
+
+     tagLV_DISPINFO = LV_DISPINFO;
+
+     LV_FINDINFO = record
+          flags : UINT;
+          psz : LPCTSTR;
+          lParam : LPARAM;
+          pt : POINT;
+          vkDirection : UINT;
+       end;
+
+     _LV_FINDINFO = LV_FINDINFO;
+
+     LV_HITTESTINFO = record
+          pt : POINT;
+          flags : UINT;
+          iItem : longint;
+       end;
+
+     _LV_HITTESTINFO = LV_HITTESTINFO;
+
+     LV_KEYDOWN = record
+          hdr : NMHDR;
+          wVKey : WORD;
+          flags : UINT;
+       end;
+
+     tagLV_KEYDOWN = LV_KEYDOWN;
+
+     MAT2 = record
+          eM11 : FIXED;
+          eM12 : FIXED;
+          eM21 : FIXED;
+          eM22 : FIXED;
+       end;
+
+     _MAT2 = MAT2;
+
+     MDICREATESTRUCT = record
+          szClass : LPCTSTR;
+          szTitle : LPCTSTR;
+          hOwner : HANDLE;
+          x : longint;
+          y : longint;
+          cx : longint;
+          cy : longint;
+          style : DWORD;
+          lParam : LPARAM;
+       end;
+
+     tagMDICREATESTRUCT = MDICREATESTRUCT;
+
+     LPMDICREATESTRUCT = ^MDICREATESTRUCT;
+
+     MEASUREITEMSTRUCT = record
+          CtlType : UINT;
+          CtlID : UINT;
+          itemID : UINT;
+          itemWidth : UINT;
+          itemHeight : UINT;
+          itemData : DWORD;
+       end;
+
+     LPMEASUREITEMSTRUCT = ^MEASUREITEMSTRUCT;
+
+     tagMEASUREITEMSTRUCT = MEASUREITEMSTRUCT;
+
+     MEMORY_BASIC_INFORMATION = record
+          BaseAddress : PVOID;
+          AllocationBase : PVOID;
+          AllocationProtect : DWORD;
+          RegionSize : DWORD;
+          State : DWORD;
+          Protect : DWORD;
+          _Type : DWORD;
+       end;
+
+     _MEMORY_BASIC_INFORMATION = MEMORY_BASIC_INFORMATION;
+
+     PMEMORY_BASIC_INFORMATION = ^MEMORY_BASIC_INFORMATION;
+
+     MEMORYSTATUS = record
+          dwLength : DWORD;
+          dwMemoryLoad : DWORD;
+          dwTotalPhys : DWORD;
+          dwAvailPhys : DWORD;
+          dwTotalPageFile : DWORD;
+          dwAvailPageFile : DWORD;
+          dwTotalVirtual : DWORD;
+          dwAvailVirtual : DWORD;
+       end;
+
+     LPMEMORYSTATUS = ^MEMORYSTATUS;
+
+     _MEMORYSTATUS = MEMORYSTATUS;
+
+     MENUEX_TEMPLATE_HEADER = record
+          wVersion : WORD;
+          wOffset : WORD;
+          dwHelpId : DWORD;
+       end;
+
+     MENUEX_TEMPLATE_ITEM = record
+          dwType : DWORD;
+          dwState : DWORD;
+          uId : UINT;
+          bResInfo : BYTE;
+          szText : array[0..0] of WCHAR;
+          dwHelpId : DWORD;
+       end;
+
+     MENUITEMINFO = record
+          cbSize : UINT;
+          fMask : UINT;
+          fType : UINT;
+          fState : UINT;
+          wID : UINT;
+          hSubMenu : HMENU;
+          hbmpChecked : HBITMAP;
+          hbmpUnchecked : HBITMAP;
+          dwItemData : DWORD;
+          dwTypeData : LPTSTR;
+          cch : UINT;
+       end;
+
+     LPMENUITEMINFO = ^MENUITEMINFO;
+
+     tagMENUITEMINFO = MENUITEMINFO;
+(* Const before declarator ignored *)
+
+     LPCMENUITEMINFO = ^MENUITEMINFO;
+
+     MENUITEMTEMPLATE = record
+          mtOption : WORD;
+          mtID : WORD;
+          mtString : array[0..0] of WCHAR;
+       end;
+
+     MENUITEMTEMPLATEHEADER = record
+          versionNumber : WORD;
+          offset : WORD;
+       end;
+
+     MENUTEMPLATE = record
+                    end;
+
+     LPMENUTEMPLATE = ^MENUTEMPLATE;
+
+     METAFILEPICT = record
+          mm : LONG;
+          xExt : LONG;
+          yExt : LONG;
+          hMF : HMETAFILE;
+       end;
+
+     PMETAFILEPICT = ^METAFILEPICT;
+
+     LPMETAFILEPICT = ^METAFILEPICT;
+
+     tagMETAFILEPICT = METAFILEPICT;
+{$PACKRECORDS 1}
+
+     METAHEADER = record
+          mtType : WORD;
+          mtHeaderSize : WORD;
+          mtVersion : WORD;
+          mtSize : DWORD;
+          mtNoObjects : WORD;
+          mtMaxRecord : DWORD;
+          mtNoParameters : WORD;
+       end;
+
+     tagMETAHEADER = METAHEADER;
+{$PACKRECORDS 4}
+
+     METARECORD = record
+          rdSize : DWORD;
+          rdFunction : WORD;
+          rdParm : array[0..0] of WORD;
+       end;
+
+     LPMETARECORD = ^METARECORD;
+
+     tagMETARECORD = METARECORD;
+
+     MINIMIZEDMETRICS = record
+          cbSize : UINT;
+          iWidth : longint;
+          iHorzGap : longint;
+          iVertGap : longint;
+          iArrange : longint;
+       end;
+
+     LPMINIMIZEDMETRICS = ^MINIMIZEDMETRICS;
+
+     tagMINIMIZEDMETRICS = MINIMIZEDMETRICS;
+
+     MINMAXINFO = record
+          ptReserved : POINT;
+          ptMaxSize : POINT;
+          ptMaxPosition : POINT;
+          ptMinTrackSize : POINT;
+          ptMaxTrackSize : POINT;
+       end;
+
+     tagMINMAXINFO = MINMAXINFO;
+
+     MODEMDEVCAPS = record
+          dwActualSize : DWORD;
+          dwRequiredSize : DWORD;
+          dwDevSpecificOffset : DWORD;
+          dwDevSpecificSize : DWORD;
+          dwModemProviderVersion : DWORD;
+          dwModemManufacturerOffset : DWORD;
+          dwModemManufacturerSize : DWORD;
+          dwModemModelOffset : DWORD;
+          dwModemModelSize : DWORD;
+          dwModemVersionOffset : DWORD;
+          dwModemVersionSize : DWORD;
+          dwDialOptions : DWORD;
+          dwCallSetupFailTimer : DWORD;
+          dwInactivityTimeout : DWORD;
+          dwSpeakerVolume : DWORD;
+          dwSpeakerMode : DWORD;
+          dwModemOptions : DWORD;
+          dwMaxDTERate : DWORD;
+          dwMaxDCERate : DWORD;
+          abVariablePortion : array[0..0] of BYTE;
+       end;
+
+     PMODEMDEVCAPS = ^MODEMDEVCAPS;
+
+     LPMODEMDEVCAPS = ^MODEMDEVCAPS;
+
+     modemdevcaps_tag = MODEMDEVCAPS;
+
+     MODEMSETTINGS = record
+          dwActualSize : DWORD;
+          dwRequiredSize : DWORD;
+          dwDevSpecificOffset : DWORD;
+          dwDevSpecificSize : DWORD;
+          dwCallSetupFailTimer : DWORD;
+          dwInactivityTimeout : DWORD;
+          dwSpeakerVolume : DWORD;
+          dwSpeakerMode : DWORD;
+          dwPreferredModemOptions : DWORD;
+          dwNegotiatedModemOptions : DWORD;
+          dwNegotiatedDCERate : DWORD;
+          abVariablePortion : array[0..0] of BYTE;
+       end;
+
+     PMODEMSETTINGS = ^MODEMSETTINGS;
+
+     LPMODEMSETTINGS = ^MODEMSETTINGS;
+
+     modemsettings_tag = MODEMSETTINGS;
+
+     MONCBSTRUCT = record
+          cb : UINT;
+          dwTime : DWORD;
+          hTask : HANDLE;
+          dwRet : DWORD;
+          wType : UINT;
+          wFmt : UINT;
+          hConv : HCONV;
+          hsz1 : HSZ;
+          hsz2 : HSZ;
+          hData : HDDEDATA;
+          dwData1 : DWORD;
+          dwData2 : DWORD;
+          cc : CONVCONTEXT;
+          cbData : DWORD;
+          Data : array[0..7] of DWORD;
+       end;
+
+     tagMONCBSTRUCT = MONCBSTRUCT;
+
+     MONCONVSTRUCT = record
+          cb : UINT;
+          fConnect : WINBOOL;
+          dwTime : DWORD;
+          hTask : HANDLE;
+          hszSvc : HSZ;
+          hszTopic : HSZ;
+          hConvClient : HCONV;
+          hConvServer : HCONV;
+       end;
+
+     tagMONCONVSTRUCT = MONCONVSTRUCT;
+
+     MONERRSTRUCT = record
+          cb : UINT;
+          wLastError : UINT;
+          dwTime : DWORD;
+          hTask : HANDLE;
+       end;
+
+     tagMONERRSTRUCT = MONERRSTRUCT;
+
+     MONHSZSTRUCT = record
+          cb : UINT;
+          fsAction : WINBOOL;
+          dwTime : DWORD;
+          hsz : HSZ;
+          hTask : HANDLE;
+          str : array[0..0] of TCHAR;
+       end;
+
+     tagMONHSZSTRUCT = MONHSZSTRUCT;
+
+     MONITOR_INFO_1 = record
+          pName : LPTSTR;
+       end;
+
+     _MONITOR_INFO_1 = MONITOR_INFO_1;
+
+     MONITOR_INFO_2 = record
+          pName : LPTSTR;
+          pEnvironment : LPTSTR;
+          pDLLName : LPTSTR;
+       end;
+
+     _MONITOR_INFO_2 = MONITOR_INFO_2;
+
+     MONLINKSTRUCT = record
+          cb : UINT;
+          dwTime : DWORD;
+          hTask : HANDLE;
+          fEstablished : WINBOOL;
+          fNoData : WINBOOL;
+          hszSvc : HSZ;
+          hszTopic : HSZ;
+          hszItem : HSZ;
+          wFmt : UINT;
+          fServer : WINBOOL;
+          hConvServer : HCONV;
+          hConvClient : HCONV;
+       end;
+
+     tagMONLINKSTRUCT = MONLINKSTRUCT;
+
+     MONMSGSTRUCT = record
+          cb : UINT;
+          hwndTo : HWND;
+          dwTime : DWORD;
+          hTask : HANDLE;
+          wMsg : UINT;
+          wParam : WPARAM;
+          lParam : LPARAM;
+          dmhd : DDEML_MSG_HOOK_DATA;
+       end;
+
+     tagMONMSGSTRUCT = MONMSGSTRUCT;
+
+     MOUSEHOOKSTRUCT = record
+          pt : POINT;
+          hwnd : HWND;
+          wHitTestCode : UINT;
+          dwExtraInfo : DWORD;
+       end;
+
+     PMOUSEHOOKSTRUCT = ^MOUSEHOOKSTRUCT;
+
+     LPMOUSEHOOKSTRUCT = ^MOUSEHOOKSTRUCT;
+
+     tagMOUSEHOOKSTRUCT = MOUSEHOOKSTRUCT;
+
+     MOUSEKEYS = record
+          cbSize : DWORD;
+          dwFlags : DWORD;
+          iMaxSpeed : DWORD;
+          iTimeToMaxSpeed : DWORD;
+          iCtrlSpeed : DWORD;
+          dwReserved1 : DWORD;
+          dwReserved2 : DWORD;
+       end;
+
+     _MOUSEKEYS = MOUSEKEYS;
+
+     MSG = record
+          hwnd : HWND;
+          message : UINT;
+          wParam : WPARAM;
+          lParam : LPARAM;
+          time : DWORD;
+          pt : POINT;
+       end;
+
+     LPMSG = ^MSG;
+
+     tagMSG = MSG;
+
+     MSGBOXCALLBACK = procedure (lpHelpInfo:LPHELPINFO);
+
+     MSGBOXPARAMS = record
+          cbSize : UINT;
+          hwndOwner : HWND;
+          hInstance : HINSTANCE;
+          lpszText : LPCSTR;
+          lpszCaption : LPCSTR;
+          dwStyle : DWORD;
+          lpszIcon : LPCSTR;
+          dwContextHelpId : DWORD;
+          lpfnMsgBoxCallback : MSGBOXCALLBACK;
+          dwLanguageId : DWORD;
+       end;
+
+     PMSGBOXPARAMS = ^MSGBOXPARAMS;
+
+     LPMSGBOXPARAMS = ^MSGBOXPARAMS;
+
+     MSGFILTER = record
+          nmhdr : NMHDR;
+          msg : UINT;
+          wParam : WPARAM;
+          lParam : LPARAM;
+       end;
+
+     _msgfilter = MSGFILTER;
+
+     MULTIKEYHELP = record
+          mkSize : DWORD;
+          mkKeylist : TCHAR;
+          szKeyphrase : array[0..0] of TCHAR;
+       end;
+
+     tagMULTIKEYHELP = MULTIKEYHELP;
+
+     NAME_BUFFER = record
+          name : array[0..(NCBNAMSZ)-1] of UCHAR;
+          name_num : UCHAR;
+          name_flags : UCHAR;
+       end;
+
+     _NAME_BUFFER = NAME_BUFFER;
+
+     p_NCB = ^_NCB;
+     NCB = record
+          ncb_command : UCHAR;
+          ncb_retcode : UCHAR;
+          ncb_lsn : UCHAR;
+          ncb_num : UCHAR;
+          ncb_buffer : PUCHAR;
+          ncb_length : WORD;
+          ncb_callname : array[0..(NCBNAMSZ)-1] of UCHAR;
+          ncb_name : array[0..(NCBNAMSZ)-1] of UCHAR;
+          ncb_rto : UCHAR;
+          ncb_sto : UCHAR;
+          ncb_post : procedure (_para1:p_NCB);CDECL;
+          ncb_lana_num : UCHAR;
+          ncb_cmd_cplt : UCHAR;
+          ncb_reserve : array[0..9] of UCHAR;
+          ncb_event : HANDLE;
+       end;
+
+     _NCB = NCB;
+
+     NCCALCSIZE_PARAMS = record
+          rgrc : array[0..2] of RECT;
+          lppos : PWINDOWPOS;
+       end;
+
+     _NCCALCSIZE_PARAMS = NCCALCSIZE_PARAMS;
+
+     NDDESHAREINFO = record
+          lRevision : LONG;
+          lpszShareName : LPTSTR;
+          lShareType : LONG;
+          lpszAppTopicList : LPTSTR;
+          fSharedFlag : LONG;
+          fService : LONG;
+          fStartAppFlag : LONG;
+          nCmdShow : LONG;
+          qModifyId : array[0..1] of LONG;
+          cNumItems : LONG;
+          lpszItemList : LPTSTR;
+       end;
+
+     _NDDESHAREINFO = NDDESHAREINFO;
+
+     NETRESOURCE = record
+          dwScope : DWORD;
+          dwType : DWORD;
+          dwDisplayType : DWORD;
+          dwUsage : DWORD;
+          lpLocalName : LPTSTR;
+          lpRemoteName : LPTSTR;
+          lpComment : LPTSTR;
+          lpProvider : LPTSTR;
+       end;
+
+     LPNETRESOURCE = ^NETRESOURCE;
+
+     _NETRESOURCE = NETRESOURCE;
+
+     NEWCPLINFO = record
+          dwSize : DWORD;
+          dwFlags : DWORD;
+          dwHelpContext : DWORD;
+          lData : LONG;
+          hIcon : HICON;
+          szName : array[0..31] of TCHAR;
+          szInfo : array[0..63] of TCHAR;
+          szHelpFile : array[0..127] of TCHAR;
+       end;
+
+     tagNEWCPLINFO = NEWCPLINFO;
+
+     NEWTEXTMETRIC = record
+          tmHeight : LONG;
+          tmAscent : LONG;
+          tmDescent : LONG;
+          tmInternalLeading : LONG;
+          tmExternalLeading : LONG;
+          tmAveCharWidth : LONG;
+          tmMaxCharWidth : LONG;
+          tmWeight : LONG;
+          tmOverhang : LONG;
+          tmDigitizedAspectX : LONG;
+          tmDigitizedAspectY : LONG;
+          tmFirstChar : BCHAR;
+          tmLastChar : BCHAR;
+          tmDefaultChar : BCHAR;
+          tmBreakChar : BCHAR;
+          tmItalic : BYTE;
+          tmUnderlined : BYTE;
+          tmStruckOut : BYTE;
+          tmPitchAndFamily : BYTE;
+          tmCharSet : BYTE;
+          ntmFlags : DWORD;
+          ntmSizeEM : UINT;
+          ntmCellHeight : UINT;
+          ntmAvgWidth : UINT;
+       end;
+
+     tagNEWTEXTMETRIC = NEWTEXTMETRIC;
+
+     NEWTEXTMETRICEX = record
+          ntmentm : NEWTEXTMETRIC;
+          ntmeFontSignature : FONTSIGNATURE;
+       end;
+
+     tagNEWTEXTMETRICEX = NEWTEXTMETRICEX;
+
+     NM_LISTVIEW = record
+          hdr : NMHDR;
+          iItem : longint;
+          iSubItem : longint;
+          uNewState : UINT;
+          uOldState : UINT;
+          uChanged : UINT;
+          ptAction : POINT;
+          lParam : LPARAM;
+       end;
+
+     tagNM_LISTVIEW = NM_LISTVIEW;
+
+{$ifndef windows_include_files}
+{ already in defines.pp file }
+      TREEITEM = record
+                 end;
+     HTREEITEM = ^TREEITEM;
+{$endif windows_include_files}
+
+     TV_ITEM = record
+          mask : UINT;
+          hItem : HTREEITEM;
+          state : UINT;
+          stateMask : UINT;
+          pszText : LPTSTR;
+          cchTextMax : longint;
+          iImage : longint;
+          iSelectedImage : longint;
+          cChildren : longint;
+          lParam : LPARAM;
+       end;
+
+     LPTV_ITEM = ^TV_ITEM;
+
+     _TV_ITEM = TV_ITEM;
+
+     NM_TREEVIEW = record
+          hdr : NMHDR;
+          action : UINT;
+          itemOld : TV_ITEM;
+          itemNew : TV_ITEM;
+          ptDrag : POINT;
+       end;
+
+     _NM_TREEVIEW = NM_TREEVIEW;
+
+     LPNM_TREEVIEW = ^NM_TREEVIEW;
+
+     NM_UPDOWNW = record
+          hdr : NMHDR;
+          iPos : longint;
+          iDelta : longint;
+       end;
+
+     _NM_UPDOWN = NM_UPDOWNW;
+
+     NONCLIENTMETRICS = record
+          cbSize : UINT;
+          iBorderWidth : longint;
+          iScrollWidth : longint;
+          iScrollHeight : longint;
+          iCaptionWidth : longint;
+          iCaptionHeight : longint;
+          lfCaptionFont : LOGFONT;
+          iSmCaptionWidth : longint;
+          iSmCaptionHeight : longint;
+          lfSmCaptionFont : LOGFONT;
+          iMenuWidth : longint;
+          iMenuHeight : longint;
+          lfMenuFont : LOGFONT;
+          lfStatusFont : LOGFONT;
+          lfMessageFont : LOGFONT;
+       end;
+
+     LPNONCLIENTMETRICS = ^NONCLIENTMETRICS;
+
+     tagNONCLIENTMETRICS = NONCLIENTMETRICS;
+
+     SERVICE_ADDRESS = record
+          dwAddressType : DWORD;
+          dwAddressFlags : DWORD;
+          dwAddressLength : DWORD;
+          dwPrincipalLength : DWORD;
+          lpAddress : ^BYTE;
+          lpPrincipal : ^BYTE;
+       end;
+
+     _SERVICE_ADDRESS = SERVICE_ADDRESS;
+
+     SERVICE_ADDRESSES = record
+          dwAddressCount : DWORD;
+          Addresses : array[0..0] of SERVICE_ADDRESS;
+       end;
+
+     LPSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
+
+     _SERVICE_ADDRESSES = SERVICE_ADDRESSES;
+
+     GUID = record
+          Data1 : cardinal;
+          Data2 : word;
+          Data3 : word;
+          Data4 : array[0..7] of byte;
+       end;
+
+     LPGUID = ^GUID;
+
+     _GUID = GUID;
+
+     CLSID = GUID;
+
+     LPCLSID = ^CLSID;
+
+     SERVICE_INFO = record
+          lpServiceType : LPGUID;
+          lpServiceName : LPTSTR;
+          lpComment : LPTSTR;
+          lpLocale : LPTSTR;
+          dwDisplayHint : DWORD;
+          dwVersion : DWORD;
+          dwTime : DWORD;
+          lpMachineName : LPTSTR;
+          lpServiceAddress : LPSERVICE_ADDRESSES;
+          ServiceSpecificInfo : BLOB;
+       end;
+
+     _SERVICE_INFO = SERVICE_INFO;
+
+     NS_SERVICE_INFO = record
+          dwNameSpace : DWORD;
+          ServiceInfo : SERVICE_INFO;
+       end;
+
+     _NS_SERVICE_INFO = NS_SERVICE_INFO;
+
+     NUMBERFMT = record
+          NumDigits : UINT;
+          LeadingZero : UINT;
+          Grouping : UINT;
+          lpDecimalSep : LPTSTR;
+          lpThousandSep : LPTSTR;
+          NegativeOrder : UINT;
+       end;
+
+     _numberfmt = NUMBERFMT;
+
+     OFSTRUCT = record
+          cBytes : BYTE;
+          fFixedDisk : BYTE;
+          nErrCode : WORD;
+          Reserved1 : WORD;
+          Reserved2 : WORD;
+          szPathName : array[0..(OFS_MAXPATHNAME)-1] of CHAR;
+       end;
+
+     LPOFSTRUCT = ^OFSTRUCT;
+
+     _OFSTRUCT = OFSTRUCT;
+
+     OPENFILENAME = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hInstance : HINSTANCE;
+          lpstrFilter : LPCTSTR;
+          lpstrCustomFilter : LPTSTR;
+          nMaxCustFilter : DWORD;
+          nFilterIndex : DWORD;
+          lpstrFile : LPTSTR;
+          nMaxFile : DWORD;
+          lpstrFileTitle : LPTSTR;
+          nMaxFileTitle : DWORD;
+          lpstrInitialDir : LPCTSTR;
+          lpstrTitle : LPCTSTR;
+          Flags : DWORD;
+          nFileOffset : WORD;
+          nFileExtension : WORD;
+          lpstrDefExt : LPCTSTR;
+          lCustData : DWORD;
+          lpfnHook : LPOFNHOOKPROC;
+          lpTemplateName : LPCTSTR;
+       end;
+
+     LPOPENFILENAME = ^OPENFILENAME;
+
+     tagOFN = OPENFILENAME;
+
+     OFNOTIFY = record
+          hdr : NMHDR;
+          lpOFN : LPOPENFILENAME;
+          pszFile : LPTSTR;
+       end;
+
+     LPOFNOTIFY = ^OFNOTIFY;
+
+     _OFNOTIFY = OFNOTIFY;
+
+     OSVERSIONINFO = record
+          dwOSVersionInfoSize : DWORD;
+          dwMajorVersion : DWORD;
+          dwMinorVersion : DWORD;
+          dwBuildNumber : DWORD;
+          dwPlatformId : DWORD;
+          szCSDVersion : array[0..127] of TCHAR;
+       end;
+
+     POSVERSIONINFO = ^OSVERSIONINFO;
+
+     LPOSVERSIONINFO = ^OSVERSIONINFO;
+
+     _OSVERSIONINFO = OSVERSIONINFO;
+
+     TEXTMETRIC = record
+          tmHeight : LONG;
+          tmAscent : LONG;
+          tmDescent : LONG;
+          tmInternalLeading : LONG;
+          tmExternalLeading : LONG;
+          tmAveCharWidth : LONG;
+          tmMaxCharWidth : LONG;
+          tmWeight : LONG;
+          tmOverhang : LONG;
+          tmDigitizedAspectX : LONG;
+          tmDigitizedAspectY : LONG;
+          tmFirstChar : BCHAR;
+          tmLastChar : BCHAR;
+          tmDefaultChar : BCHAR;
+          tmBreakChar : BCHAR;
+          tmItalic : BYTE;
+          tmUnderlined : BYTE;
+          tmStruckOut : BYTE;
+          tmPitchAndFamily : BYTE;
+          tmCharSet : BYTE;
+       end;
+
+     LPTEXTMETRIC = ^TEXTMETRIC;
+
+     tagTEXTMETRIC = TEXTMETRIC;
+
+     OUTLINETEXTMETRIC = record
+          otmSize : UINT;
+          otmTextMetrics : TEXTMETRIC;
+          otmFiller : BYTE;
+          otmPanoseNumber : PANOSE;
+          otmfsSelection : UINT;
+          otmfsType : UINT;
+          otmsCharSlopeRise : longint;
+          otmsCharSlopeRun : longint;
+          otmItalicAngle : longint;
+          otmEMSquare : UINT;
+          otmAscent : longint;
+          otmDescent : longint;
+          otmLineGap : UINT;
+          otmsCapEmHeight : UINT;
+          otmsXHeight : UINT;
+          otmrcFontBox : RECT;
+          otmMacAscent : longint;
+          otmMacDescent : longint;
+          otmMacLineGap : UINT;
+          otmusMinimumPPEM : UINT;
+          otmptSubscriptSize : POINT;
+          otmptSubscriptOffset : POINT;
+          otmptSuperscriptSize : POINT;
+          otmptSuperscriptOffset : POINT;
+          otmsStrikeoutSize : UINT;
+          otmsStrikeoutPosition : longint;
+          otmsUnderscoreSize : longint;
+          otmsUnderscorePosition : longint;
+          otmpFamilyName : PSTR;
+          otmpFaceName : PSTR;
+          otmpStyleName : PSTR;
+          otmpFullName : PSTR;
+       end;
+
+     LPOUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
+
+     _OUTLINETEXTMETRIC = OUTLINETEXTMETRIC;
+
+     OVERLAPPED = record
+          Internal : DWORD;
+          InternalHigh : DWORD;
+          Offset : DWORD;
+          OffsetHigh : DWORD;
+          hEvent : HANDLE;
+       end;
+
+     LPOVERLAPPED = ^OVERLAPPED;
+
+     _OVERLAPPED = OVERLAPPED;
+
+     {PAGESETUPDLG = record conflicts with function PageSetupDlg }
+     TPAGESETUPDLG = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hDevMode : HGLOBAL;
+          hDevNames : HGLOBAL;
+          Flags : DWORD;
+          ptPaperSize : POINT;
+          rtMinMargin : RECT;
+          rtMargin : RECT;
+          hInstance : HINSTANCE;
+          lCustData : LPARAM;
+          lpfnPageSetupHook : LPPAGESETUPHOOK;
+          lpfnPagePaintHook : LPPAGEPAINTHOOK;
+          lpPageSetupTemplateName : LPCTSTR;
+          hPageSetupTemplate : HGLOBAL;
+       end;
+
+     LPPAGESETUPDLG = ^TPAGESETUPDLG;
+
+     tagPSD = TPAGESETUPDLG;
+
+     PAINTSTRUCT = record
+          hdc : HDC;
+          fErase : WINBOOL;
+          rcPaint : RECT;
+          fRestore : WINBOOL;
+          fIncUpdate : WINBOOL;
+          rgbReserved : array[0..31] of BYTE;
+       end;
+
+     LPPAINTSTRUCT = ^PAINTSTRUCT;
+
+     tagPAINTSTRUCT = PAINTSTRUCT;
+
+     PARAFORMAT = record
+          cbSize : UINT;
+          dwMask : DWORD;
+          wNumbering : WORD;
+          wReserved : WORD;
+          dxStartIndent : LONG;
+          dxRightIndent : LONG;
+          dxOffset : LONG;
+          wAlignment : WORD;
+          cTabCount : SHORT;
+          rgxTabs : array[0..(MAX_TAB_STOPS)-1] of LONG;
+       end;
+
+     _paraformat = PARAFORMAT;
+
+     PERF_COUNTER_BLOCK = record
+          ByteLength : DWORD;
+       end;
+
+     _PERF_COUNTER_BLOCK = PERF_COUNTER_BLOCK;
+
+     PERF_COUNTER_DEFINITION = record
+          ByteLength : DWORD;
+          CounterNameTitleIndex : DWORD;
+          CounterNameTitle : LPWSTR;
+          CounterHelpTitleIndex : DWORD;
+          CounterHelpTitle : LPWSTR;
+          DefaultScale : DWORD;
+          DetailLevel : DWORD;
+          CounterType : DWORD;
+          CounterSize : DWORD;
+          CounterOffset : DWORD;
+       end;
+
+     _PERF_COUNTER_DEFINITION = PERF_COUNTER_DEFINITION;
+
+     PERF_DATA_BLOCK = record
+          Signature : array[0..3] of WCHAR;
+          LittleEndian : DWORD;
+          Version : DWORD;
+          Revision : DWORD;
+          TotalByteLength : DWORD;
+          HeaderLength : DWORD;
+          NumObjectTypes : DWORD;
+          DefaultObject : DWORD;
+          SystemTime : SYSTEMTIME;
+          PerfTime : LARGE_INTEGER;
+          PerfFreq : LARGE_INTEGER;
+          PerfTime100nSec : LARGE_INTEGER;
+          SystemNameLength : DWORD;
+          SystemNameOffset : DWORD;
+       end;
+
+     _PERF_DATA_BLOCK = PERF_DATA_BLOCK;
+
+     PERF_INSTANCE_DEFINITION = record
+          ByteLength : DWORD;
+          ParentObjectTitleIndex : DWORD;
+          ParentObjectInstance : DWORD;
+          UniqueID : DWORD;
+          NameOffset : DWORD;
+          NameLength : DWORD;
+       end;
+
+     _PERF_INSTANCE_DEFINITION = PERF_INSTANCE_DEFINITION;
+
+     PERF_OBJECT_TYPE = record
+          TotalByteLength : DWORD;
+          DefinitionLength : DWORD;
+          HeaderLength : DWORD;
+          ObjectNameTitleIndex : DWORD;
+          ObjectNameTitle : LPWSTR;
+          ObjectHelpTitleIndex : DWORD;
+          ObjectHelpTitle : LPWSTR;
+          DetailLevel : DWORD;
+          NumCounters : DWORD;
+          DefaultCounter : DWORD;
+          NumInstances : DWORD;
+          CodePage : DWORD;
+          PerfTime : LARGE_INTEGER;
+          PerfFreq : LARGE_INTEGER;
+       end;
+
+     _PERF_OBJECT_TYPE = PERF_OBJECT_TYPE;
+
+     POLYTEXT = record
+          x : longint;
+          y : longint;
+          n : UINT;
+          lpstr : LPCTSTR;
+          uiFlags : UINT;
+          rcl : RECT;
+          pdx : ^longint;
+       end;
+
+     _POLYTEXT = POLYTEXT;
+
+     PORT_INFO_1 = record
+          pName : LPTSTR;
+       end;
+
+     _PORT_INFO_1 = PORT_INFO_1;
+
+     PORT_INFO_2 = record
+          pPortName : LPSTR;
+          pMonitorName : LPSTR;
+          pDescription : LPSTR;
+          fPortType : DWORD;
+          Reserved : DWORD;
+       end;
+
+     _PORT_INFO_2 = PORT_INFO_2;
+
+     PREVENT_MEDIA_REMOVAL = record
+          PreventMediaRemoval : BOOLEAN;
+       end;
+
+     _PREVENT_MEDIA_REMOVAL = PREVENT_MEDIA_REMOVAL;
+{$PACKRECORDS 1}
+
+     {PRINTDLG = record conflicts with PrintDlg function }
+     TPRINTDLG = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hDevMode : HANDLE;
+          hDevNames : HANDLE;
+          hDC : HDC;
+          Flags : DWORD;
+          nFromPage : WORD;
+          nToPage : WORD;
+          nMinPage : WORD;
+          nMaxPage : WORD;
+          nCopies : WORD;
+          hInstance : HINSTANCE;
+          lCustData : DWORD;
+          lpfnPrintHook : LPPRINTHOOKPROC;
+          lpfnSetupHook : LPSETUPHOOKPROC;
+          lpPrintTemplateName : LPCTSTR;
+          lpSetupTemplateName : LPCTSTR;
+          hPrintTemplate : HANDLE;
+          hSetupTemplate : HANDLE;
+       end;
+
+     LPPRINTDLG = ^TPRINTDLG;
+
+     tagPD = TPRINTDLG;
+{$PACKRECORDS 4}
+
+     PRINTER_DEFAULTS = record
+          pDatatype : LPTSTR;
+          pDevMode : LPDEVMODE;
+          DesiredAccess : ACCESS_MASK;
+       end;
+
+     _PRINTER_DEFAULTS = PRINTER_DEFAULTS;
+
+     PRINTER_INFO_1 = record
+          Flags : DWORD;
+          pDescription : LPTSTR;
+          pName : LPTSTR;
+          pComment : LPTSTR;
+       end;
+
+     PPRINTER_INFO_1 = ^PRINTER_INFO_1;
+
+     LPPRINTER_INFO_1 = ^PRINTER_INFO_1;
+
+     _PRINTER_INFO_1 = PRINTER_INFO_1;
+
+     PRINTER_INFO_2 = record
+          pServerName : LPTSTR;
+          pPrinterName : LPTSTR;
+          pShareName : LPTSTR;
+          pPortName : LPTSTR;
+          pDriverName : LPTSTR;
+          pComment : LPTSTR;
+          pLocation : LPTSTR;
+          pDevMode : LPDEVMODE;
+          pSepFile : LPTSTR;
+          pPrintProcessor : LPTSTR;
+          pDatatype : LPTSTR;
+          pParameters : LPTSTR;
+          pSecurityDescriptor : PSECURITY_DESCRIPTOR;
+          Attributes : DWORD;
+          Priority : DWORD;
+          DefaultPriority : DWORD;
+          StartTime : DWORD;
+          UntilTime : DWORD;
+          Status : DWORD;
+          cJobs : DWORD;
+          AveragePPM : DWORD;
+       end;
+
+     _PRINTER_INFO_2 = PRINTER_INFO_2;
+
+     PRINTER_INFO_3 = record
+          pSecurityDescriptor : PSECURITY_DESCRIPTOR;
+       end;
+
+     _PRINTER_INFO_3 = PRINTER_INFO_3;
+
+     PRINTER_INFO_4 = record
+          pPrinterName : LPTSTR;
+          pServerName : LPTSTR;
+          Attributes : DWORD;
+       end;
+
+     _PRINTER_INFO_4 = PRINTER_INFO_4;
+
+     PRINTER_INFO_5 = record
+          pPrinterName : LPTSTR;
+          pPortName : LPTSTR;
+          Attributes : DWORD;
+          DeviceNotSelectedTimeout : DWORD;
+          TransmissionRetryTimeout : DWORD;
+       end;
+
+     _PRINTER_INFO_5 = PRINTER_INFO_5;
+
+     PRINTER_NOTIFY_INFO_DATA = record
+          _Type : WORD;
+          Field : WORD;
+          Reserved : DWORD;
+          Id : DWORD;
+          NotifyData : record
+              case longint of
+                 0 : ( adwData : array[0..1] of DWORD );
+                 1 : ( Data : record
+                      cbBuf : DWORD;
+                      pBuf : LPVOID;
+                   end );
+              end;
+       end;
+
+     _PRINTER_NOTIFY_INFO_DATA = PRINTER_NOTIFY_INFO_DATA;
+
+     PRINTER_NOTIFY_INFO = record
+          Version : DWORD;
+          Flags : DWORD;
+          Count : DWORD;
+          aData : array[0..0] of PRINTER_NOTIFY_INFO_DATA;
+       end;
+
+     _PRINTER_NOTIFY_INFO = PRINTER_NOTIFY_INFO;
+
+     PRINTER_NOTIFY_OPTIONS_TYPE = record
+          _Type : WORD;
+          Reserved0 : WORD;
+          Reserved1 : DWORD;
+          Reserved2 : DWORD;
+          Count : DWORD;
+          pFields : PWORD;
+       end;
+
+     PPRINTER_NOTIFY_OPTIONS_TYPE = ^PRINTER_NOTIFY_OPTIONS_TYPE;
+
+     _PRINTER_NOTIFY_OPTIONS_TYPE = PRINTER_NOTIFY_OPTIONS_TYPE;
+
+     PRINTER_NOTIFY_OPTIONS = record
+          Version : DWORD;
+          Flags : DWORD;
+          Count : DWORD;
+          pTypes : PPRINTER_NOTIFY_OPTIONS_TYPE;
+       end;
+
+     _PRINTER_NOTIFY_OPTIONS = PRINTER_NOTIFY_OPTIONS;
+
+     PRINTPROCESSOR_INFO_1 = record
+          pName : LPTSTR;
+       end;
+
+     _PRINTPROCESSOR_INFO_1 = PRINTPROCESSOR_INFO_1;
+
+     PRIVILEGE_SET = record
+          PrivilegeCount : DWORD;
+          Control : DWORD;
+          Privilege : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
+       end;
+
+     PPRIVILEGE_SET = ^PRIVILEGE_SET;
+
+     LPPRIVILEGE_SET = ^PRIVILEGE_SET;
+
+     _PRIVILEGE_SET = PRIVILEGE_SET;
+
+     PROCESS_HEAPENTRY = record
+          lpData : PVOID;
+          cbData : DWORD;
+          cbOverhead : BYTE;
+          iRegionIndex : BYTE;
+          wFlags : WORD;
+          dwCommittedSize : DWORD;
+          dwUnCommittedSize : DWORD;
+          lpFirstBlock : LPVOID;
+          lpLastBlock : LPVOID;
+          hMem : HANDLE;
+       end;
+
+     LPPROCESS_HEAP_ENTRY = ^PROCESS_HEAPENTRY;
+
+     _PROCESS_HEAP_ENTRY = PROCESS_HEAPENTRY;
+
+     PROCESS_INFORMATION = record
+          hProcess : HANDLE;
+          hThread : HANDLE;
+          dwProcessId : DWORD;
+          dwThreadId : DWORD;
+       end;
+
+     LPPROCESS_INFORMATION = ^PROCESS_INFORMATION;
+
+     _PROCESS_INFORMATION = PROCESS_INFORMATION;
+
+     LPFNPSPCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPVOID):UINT;
+
+     PROPSHEETPAGE = record
+          dwSize : DWORD;
+          dwFlags : DWORD;
+          hInstance : HINSTANCE;
+          u1 : record
+              case longint of
+                 0 : ( pszTemplate : LPCTSTR );
+                 1 : ( pResource : LPCDLGTEMPLATE );
+              end;
+          u2 : record
+              case longint of
+                 0 : ( hIcon : HICON );
+                 1 : ( pszIcon : LPCTSTR );
+              end;
+          pszTitle : LPCTSTR;
+          pfnDlgProc : DLGPROC;
+          lParam : LPARAM;
+          pfnCallback : LPFNPSPCALLBACK;
+          pcRefParent : ^UINT;
+       end;
+
+     LPPROPSHEETPAGE = ^PROPSHEETPAGE;
+
+     _PROPSHEETPAGE = PROPSHEETPAGE;
+(* Const before type ignored *)
+
+     LPCPROPSHEETPAGE = ^PROPSHEETPAGE;
+
+   emptyrecord = record
+                 end;
+   HPROPSHEETPAGE = ^emptyrecord;
+
+     PROPSHEETHEADER = record
+          dwSize : DWORD;
+          dwFlags : DWORD;
+          hwndParent : HWND;
+          hInstance : HINSTANCE;
+          u1 : record
+              case longint of
+                 0 : ( hIcon : HICON );
+                 1 : ( pszIcon : LPCTSTR );
+              end;
+          pszCaption : LPCTSTR;
+          nPages : UINT;
+          u2 : record
+              case longint of
+                 0 : ( nStartPage : UINT );
+                 1 : ( pStartPage : LPCTSTR );
+              end;
+          u3 : record
+              case longint of
+                 0 : ( ppsp : LPCPROPSHEETPAGE );
+                 1 : ( phpage : ^HPROPSHEETPAGE );
+              end;
+          pfnCallback : PFNPROPSHEETCALLBACK;
+       end;
+
+     LPPROPSHEETHEADER = ^PROPSHEETHEADER;
+
+     _PROPSHEETHEADER = PROPSHEETHEADER;
+(* Const before type ignored *)
+
+     LPCPROPSHEETHEADER = ^PROPSHEETHEADER;
+  { PropertySheet callbacks  }
+
+     LPFNADDPROPSHEETPAGE = function (_para1:HPROPSHEETPAGE; _para2:LPARAM):WINBOOL;
+
+     LPFNADDPROPSHEETPAGES = function (_para1:LPVOID; _para2:LPFNADDPROPSHEETPAGE; _para3:LPARAM):WINBOOL;
+
+     PROTOCOL_INFO = record
+          dwServiceFlags : DWORD;
+          iAddressFamily : INT;
+          iMaxSockAddr : INT;
+          iMinSockAddr : INT;
+          iSocketType : INT;
+          iProtocol : INT;
+          dwMessageSize : DWORD;
+          lpProtocol : LPTSTR;
+       end;
+
+     _PROTOCOL_INFO = PROTOCOL_INFO;
+
+     PROVIDOR_INFO_1 = record
+          pName : LPTSTR;
+          pEnvironment : LPTSTR;
+          pDLLName : LPTSTR;
+       end;
+
+     _PROVIDOR_INFO_1 = PROVIDOR_INFO_1;
+
+     PSHNOTIFY = record
+          hdr : NMHDR;
+          lParam : LPARAM;
+       end;
+
+     LPPSHNOTIFY = ^PSHNOTIFY;
+
+     _PSHNOTIFY = PSHNOTIFY;
+
+     PUNCTUATION = record
+          iSize : UINT;
+          szPunctuation : LPSTR;
+       end;
+
+     _punctuation = PUNCTUATION;
+
+     QUERY_SERVICE_CONFIG = record
+          dwServiceType : DWORD;
+          dwStartType : DWORD;
+          dwErrorControl : DWORD;
+          lpBinaryPathName : LPTSTR;
+          lpLoadOrderGroup : LPTSTR;
+          dwTagId : DWORD;
+          lpDependencies : LPTSTR;
+          lpServiceStartName : LPTSTR;
+          lpDisplayName : LPTSTR;
+       end;
+
+     LPQUERY_SERVICE_CONFIG = ^QUERY_SERVICE_CONFIG;
+
+     _QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIG;
+
+     QUERY_SERVICE_LOCK_STATUS = record
+          fIsLocked : DWORD;
+          lpLockOwner : LPTSTR;
+          dwLockDuration : DWORD;
+       end;
+
+     LPQUERY_SERVICE_LOCK_STATUS = ^QUERY_SERVICE_LOCK_STATUS;
+
+     _QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUS;
+
+     RASAMB = record
+          dwSize : DWORD;
+          dwError : DWORD;
+          szNetBiosError : array[0..(NETBIOS_NAME_LEN + 1)-1] of TCHAR;
+          bLana : BYTE;
+       end;
+
+     _RASAMB = RASAMB;
+
+     RASCONN = record
+          dwSize : DWORD;
+          hrasconn : HRASCONN;
+          szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of TCHAR;
+          szDeviceType : array[0..(RAS_MaxDeviceType + 1)-1] of CHAR;
+          szDeviceName : array[0..(RAS_MaxDeviceName + 1)-1] of CHAR;
+       end;
+
+     _RASCONN = RASCONN;
+
+     RASCONNSTATUS = record
+          dwSize : DWORD;
+          rasconnstate : RASCONNSTATE;
+          dwError : DWORD;
+          szDeviceType : array[0..(RAS_MaxDeviceType + 1)-1] of TCHAR;
+          szDeviceName : array[0..(RAS_MaxDeviceName + 1)-1] of TCHAR;
+       end;
+
+     _RASCONNSTATUS = RASCONNSTATUS;
+
+     RASDIALEXTENSIONS = record
+          dwSize : DWORD;
+          dwfOptions : DWORD;
+          hwndParent : HWND;
+          reserved : DWORD;
+       end;
+
+     _RASDIALEXTENSIONS = RASDIALEXTENSIONS;
+
+     RASDIALPARAMS = record
+          dwSize : DWORD;
+          szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of TCHAR;
+          szPhoneNumber : array[0..(RAS_MaxPhoneNumber + 1)-1] of TCHAR;
+          szCallbackNumber : array[0..(RAS_MaxCallbackNumber + 1)-1] of TCHAR;
+          szUserName : array[0..(UNLEN + 1)-1] of TCHAR;
+          szPassword : array[0..(PWLEN + 1)-1] of TCHAR;
+          szDomain : array[0..(DNLEN + 1)-1] of TCHAR;
+       end;
+
+     _RASDIALPARAMS = RASDIALPARAMS;
+
+     RASENTRYNAME = record
+          dwSize : DWORD;
+          szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of TCHAR;
+       end;
+
+     _RASENTRYNAME = RASENTRYNAME;
+
+     RASPPPIP = record
+          dwSize : DWORD;
+          dwError : DWORD;
+          szIpAddress : array[0..(RAS_MaxIpAddress + 1)-1] of TCHAR;
+       end;
+
+     _RASPPPIP = RASPPPIP;
+
+     RASPPPIPX = record
+          dwSize : DWORD;
+          dwError : DWORD;
+          szIpxAddress : array[0..(RAS_MaxIpxAddress + 1)-1] of TCHAR;
+       end;
+
+     _RASPPPIPX = RASPPPIPX;
+
+     RASPPPNBF = record
+          dwSize : DWORD;
+          dwError : DWORD;
+          dwNetBiosError : DWORD;
+          szNetBiosError : array[0..(NETBIOS_NAME_LEN + 1)-1] of TCHAR;
+          szWorkstationName : array[0..(NETBIOS_NAME_LEN + 1)-1] of TCHAR;
+          bLana : BYTE;
+       end;
+
+     _RASPPPNBF = RASPPPNBF;
+
+     RASTERIZER_STATUS = record
+          nSize : integer;
+          wFlags : integer;
+          nLanguageID : integer;
+       end;
+
+     LPRASTERIZER_STATUS = ^RASTERIZER_STATUS;
+
+     _RASTERIZER_STATUS = RASTERIZER_STATUS;
+
+     REASSIGN_BLOCKS = record
+          Reserved : WORD;
+          Count : WORD;
+          BlockNumber : array[0..0] of DWORD;
+       end;
+
+     _REASSIGN_BLOCKS = REASSIGN_BLOCKS;
+
+     REMOTE_NAME_INFO = record
+          lpUniversalName : LPTSTR;
+          lpConnectionName : LPTSTR;
+          lpRemainingPath : LPTSTR;
+       end;
+
+     _REMOTE_NAME_INFO = REMOTE_NAME_INFO;
+  (*
+   TODO: OLE
+  typedef struct _reobject { 
+    DWORD  cbStruct;           
+    LONG   cp;                 
+    CLSID  clsid;              
+    LPOLEOBJECT      poleobj;  
+    LPSTORAGE        pstg;     
+    LPOLECLIENTSITE  polesite; 
+    SIZEL  sizel;              
+    DWORD  dvaspect;           
+    DWORD  dwFlags;            
+    DWORD  dwUser;             
+  } REOBJECT; 
+   *)
+
+     REPASTESPECIAL = record
+          dwAspect : DWORD;
+          dwParam : DWORD;
+       end;
+
+     _repastespecial = REPASTESPECIAL;
+
+     REQRESIZE = record
+          nmhdr : NMHDR;
+          rc : RECT;
+       end;
+
+     _reqresize = REQRESIZE;
+
+     RGNDATAHEADER = record
+          dwSize : DWORD;
+          iType : DWORD;
+          nCount : DWORD;
+          nRgnSize : DWORD;
+          rcBound : RECT;
+       end;
+
+     _RGNDATAHEADER = RGNDATAHEADER;
+
+     RGNDATA = record
+          rdh : RGNDATAHEADER;
+          Buffer : array[0..0] of char;
+       end;
+
+     LPRGNDATA = ^RGNDATA;
+
+     _RGNDATA = RGNDATA;
+
+     SCROLLINFO = record
+          cbSize : UINT;
+          fMask : UINT;
+          nMin : longint;
+          nMax : longint;
+          nPage : UINT;
+          nPos : longint;
+          nTrackPos : longint;
+       end;
+
+     LPSCROLLINFO = ^SCROLLINFO;
+
+     tagSCROLLINFO = SCROLLINFO;
+(* Const before declarator ignored *)
+
+     LPCSCROLLINFO = ^SCROLLINFO;
+
+     SECURITY_ATTRIBUTES = record
+          nLength : DWORD;
+          lpSecurityDescriptor : LPVOID;
+          bInheritHandle : WINBOOL;
+       end;
+
+     LPSECURITY_ATTRIBUTES = ^SECURITY_ATTRIBUTES;
+
+     _SECURITY_ATTRIBUTES = SECURITY_ATTRIBUTES;
+
+     SECURITY_INFORMATION = DWORD;
+
+     PSECURITY_INFORMATION = ^SECURITY_INFORMATION;
+
+     SELCHANGE = record
+          nmhdr : NMHDR;
+          chrg : CHARRANGE;
+          seltyp : WORD;
+       end;
+
+     _selchange = SELCHANGE;
+
+     SERIALKEYS = record
+          cbSize : DWORD;
+          dwFlags : DWORD;
+          lpszActivePort : LPSTR;
+          lpszPort : LPSTR;
+          iBaudRate : DWORD;
+          iPortState : DWORD;
+       end;
+
+     LPSERIALKEYS = ^SERIALKEYS;
+
+     tagSERIALKEYS = SERIALKEYS;
+
+     SERVICE_TABLE_ENTRY = record
+          lpServiceName : LPTSTR;
+          lpServiceProc : LPSERVICE_MAIN_FUNCTION;
+       end;
+
+     LPSERVICE_TABLE_ENTRY = ^SERVICE_TABLE_ENTRY;
+
+     _SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRY;
+
+     SERVICE_TYPE_VALUE_ABS = record
+          dwNameSpace : DWORD;
+          dwValueType : DWORD;
+          dwValueSize : DWORD;
+          lpValueName : LPTSTR;
+          lpValue : PVOID;
+       end;
+
+     _SERVICE_TYPE_VALUE_ABS = SERVICE_TYPE_VALUE_ABS;
+
+     SERVICE_TYPE_INFO_ABS = record
+          lpTypeName : LPTSTR;
+          dwValueCount : DWORD;
+          Values : array[0..0] of SERVICE_TYPE_VALUE_ABS;
+       end;
+
+     _SERVICE_TYPE_INFO_ABS = SERVICE_TYPE_INFO_ABS;
+
+     SESSION_BUFFER = record
+          lsn : UCHAR;
+          state : UCHAR;
+          local_name : array[0..(NCBNAMSZ)-1] of UCHAR;
+          remote_name : array[0..(NCBNAMSZ)-1] of UCHAR;
+          rcvs_outstanding : UCHAR;
+          sends_outstanding : UCHAR;
+       end;
+
+     _SESSION_BUFFER = SESSION_BUFFER;
+
+     SESSION_HEADER = record
+          sess_name : UCHAR;
+          num_sess : UCHAR;
+          rcv_dg_outstanding : UCHAR;
+          rcv_any_outstanding : UCHAR;
+       end;
+
+     _SESSION_HEADER = SESSION_HEADER;
+
+     SET_PARTITION_INFORMATION = record
+          PartitionType : BYTE;
+       end;
+
+     _SET_PARTITION_INFORMATION = SET_PARTITION_INFORMATION;
+
+     SHCONTF = (SHCONTF_FOLDERS := 32,SHCONTF_NONFOLDERS := 64,
+       SHCONTF_INCLUDEHIDDEN := 128);
+
+     tagSHCONTF = SHCONTF;
+
+     SHFILEINFO = record
+          hIcon : HICON;
+          iIcon : longint;
+          dwAttributes : DWORD;
+          szDisplayName : array[0..(MAX_PATH)-1] of char;
+          szTypeName : array[0..79] of char;
+       end;
+
+     _SHFILEINFO = SHFILEINFO;
+
+     FILEOP_FLAGS = WORD;
+
+     SHFILEOPSTRUCT = record
+          hwnd : HWND;
+          wFunc : UINT;
+          pFrom : LPCSTR;
+          pTo : LPCSTR;
+          fFlags : FILEOP_FLAGS;
+          fAnyOperationsAborted : WINBOOL;
+          hNameMappings : LPVOID;
+          lpszProgressTitle : LPCSTR;
+       end;
+
+     LPSHFILEOPSTRUCT = ^SHFILEOPSTRUCT;
+
+     _SHFILEOPSTRUCT = SHFILEOPSTRUCT;
+
+     SHGNO = (SHGDN_NORMAL := 0,SHGDN_INFOLDER := 1,
+       SHGDN_FORPARSING := $8000);
+
+     tagSHGDN = SHGNO;
+
+     SHNAMEMAPPING = record
+          pszOldPath : LPSTR;
+          pszNewPath : LPSTR;
+          cchOldPath : longint;
+          cchNewPath : longint;
+       end;
+
+     LPSHNAMEMAPPING = ^SHNAMEMAPPING;
+
+     _SHNAMEMAPPING = SHNAMEMAPPING;
+
+     SID_AND_ATTRIBUTES = record
+          Sid : PSID;
+          Attributes : DWORD;
+       end;
+
+     _SID_AND_ATTRIBUTES = SID_AND_ATTRIBUTES;
+
+     SID_AND_ATTRIBUTES_ARRAY = array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES;
+
+     PSID_AND_ATTRIBUTES_ARRAY = ^SID_AND_ATTRIBUTES_ARRAY;
+
+     SINGLE_LIST_ENTRY = record
+          Next : ^_SINGLE_LIST_ENTRY;
+       end;
+
+     _SINGLE_LIST_ENTRY = SINGLE_LIST_ENTRY;
+
+     SOUNDSENTRY = record
+          cbSize : UINT;
+          dwFlags : DWORD;
+          iFSTextEffect : DWORD;
+          iFSTextEffectMSec : DWORD;
+          iFSTextEffectColorBits : DWORD;
+          iFSGrafEffect : DWORD;
+          iFSGrafEffectMSec : DWORD;
+          iFSGrafEffectColor : DWORD;
+          iWindowsEffect : DWORD;
+          iWindowsEffectMSec : DWORD;
+          lpszWindowsEffectDLL : LPTSTR;
+          iWindowsEffectOrdinal : DWORD;
+       end;
+
+     LPSOUNDSENTRY = ^SOUNDSENTRY;
+
+     tagSOUNDSENTRY = SOUNDSENTRY;
+
+     STARTUPINFO = record
+          cb : DWORD;
+          lpReserved : LPTSTR;
+          lpDesktop : LPTSTR;
+          lpTitle : LPTSTR;
+          dwX : DWORD;
+          dwY : DWORD;
+          dwXSize : DWORD;
+          dwYSize : DWORD;
+          dwXCountChars : DWORD;
+          dwYCountChars : DWORD;
+          dwFillAttribute : DWORD;
+          dwFlags : DWORD;
+          wShowWindow : WORD;
+          cbReserved2 : WORD;
+          lpReserved2 : LPBYTE;
+          hStdInput : HANDLE;
+          hStdOutput : HANDLE;
+          hStdError : HANDLE;
+       end;
+
+     LPSTARTUPINFO = ^STARTUPINFO;
+
+     _STARTUPINFO = STARTUPINFO;
+
+     STICKYKEYS = record
+          cbSize : DWORD;
+          dwFlags : DWORD;
+       end;
+
+     LPSTICKYKEYS = ^STICKYKEYS;
+
+     tagSTICKYKEYS = STICKYKEYS;
+
+     STRRET = record
+          uType : UINT;
+          DUMMYUNIONNAME : record
+              case longint of
+                 0 : ( pOleStr : LPWSTR );
+                 1 : ( uOffset : UINT );
+                 2 : ( cStr : array[0..(MAX_PATH)-1] of char );
+              end;
+       end;
+
+     LPSTRRET = ^STRRET;
+
+     _STRRET = STRRET;
+
+     STYLEBUF = record
+          dwStyle : DWORD;
+          szDescription : array[0..31] of CHAR;
+       end;
+
+     LPSTYLEBUF = ^STYLEBUF;
+
+     _tagSTYLEBUF = STYLEBUF;
+
+     STYLESTRUCT = record
+          styleOld : DWORD;
+          styleNew : DWORD;
+       end;
+
+     LPSTYLESTRUCT = ^STYLESTRUCT;
+
+     tagSTYLESTRUCT = STYLESTRUCT;
+
+     SYSTEM_AUDIT_ACE = record
+          Header : ACE_HEADER;
+          Mask : ACCESS_MASK;
+          SidStart : DWORD;
+       end;
+
+     _SYSTEM_AUDIT_ACE = SYSTEM_AUDIT_ACE;
+
+     SYSTEM_INFO = record
+          u : record
+              case longint of
+                 0 : ( dwOemId : DWORD );
+                 1 : ( s : record
+                      wProcessorArchitecture : WORD;
+                      wReserved : WORD;
+                   end );
+              end;
+          dwPageSize : DWORD;
+          lpMinimumApplicationAddress : LPVOID;
+          lpMaximumApplicationAddress : LPVOID;
+          dwActiveProcessorMask : DWORD;
+          dwNumberOfProcessors : DWORD;
+          dwProcessorType : DWORD;
+          dwAllocationGranularity : DWORD;
+          wProcessorLevel : WORD;
+          wProcessorRevision : WORD;
+       end;
+
+     LPSYSTEM_INFO = ^SYSTEM_INFO;
+
+     _SYSTEM_INFO = SYSTEM_INFO;
+
+     SYSTEM_POWER_STATUS = record
+          ACLineStatus : BYTE;
+          BatteryFlag : BYTE;
+          BatteryLifePercent : BYTE;
+          Reserved1 : BYTE;
+          BatteryLifeTime : DWORD;
+          BatteryFullLifeTime : DWORD;
+       end;
+
+     _SYSTEM_POWER_STATUS = SYSTEM_POWER_STATUS;
+
+     LPSYSTEM_POWER_STATUS = ^emptyrecord;
+
+     TAPE_ERASE = record
+          _Type : ULONG;
+       end;
+
+     _TAPE_ERASE = TAPE_ERASE;
+
+     TAPE_GET_DRIVE_PARAMETERS = record
+          ECC : BOOLEAN;
+          Compression : BOOLEAN;
+          DataPadding : BOOLEAN;
+          ReportSetmarks : BOOLEAN;
+          DefaultBlockSize : ULONG;
+          MaximumBlockSize : ULONG;
+          MinimumBlockSize : ULONG;
+          MaximumPartitionCount : ULONG;
+          FeaturesLow : ULONG;
+          FeaturesHigh : ULONG;
+          EOTWarningZoneSize : ULONG;
+       end;
+
+     _TAPE_GET_DRIVE_PARAMETERS = TAPE_GET_DRIVE_PARAMETERS;
+
+     TAPE_GET_MEDIA_PARAMETERS = record
+          Capacity : LARGE_INTEGER;
+          Remaining : LARGE_INTEGER;
+          BlockSize : DWORD;
+          PartitionCount : DWORD;
+          WriteProtected : BOOLEAN;
+       end;
+
+     _TAPE_GET_MEDIA_PARAMETERS = TAPE_GET_MEDIA_PARAMETERS;
+
+     TAPE_GET_POSITION = record
+          _Type : ULONG;
+          Partition : ULONG;
+          OffsetLow : ULONG;
+          OffsetHigh : ULONG;
+       end;
+
+     _TAPE_GET_POSITION = TAPE_GET_POSITION;
+
+     TAPE_PREPARE = record
+          Operation : ULONG;
+       end;
+
+     _TAPE_PREPARE = TAPE_PREPARE;
+
+     TAPE_SET_DRIVE_PARAMETERS = record
+          ECC : BOOLEAN;
+          Compression : BOOLEAN;
+          DataPadding : BOOLEAN;
+          ReportSetmarks : BOOLEAN;
+          EOTWarningZoneSize : ULONG;
+       end;
+
+     _TAPE_SET_DRIVE_PARAMETERS = TAPE_SET_DRIVE_PARAMETERS;
+
+     TAPE_SET_MEDIA_PARAMETERS = record
+          BlockSize : ULONG;
+       end;
+
+     _TAPE_SET_MEDIA_PARAMETERS = TAPE_SET_MEDIA_PARAMETERS;
+
+     TAPE_SET_POSITION = record
+          Method : ULONG;
+          Partition : ULONG;
+          OffsetLow : ULONG;
+          OffsetHigh : ULONG;
+       end;
+
+     _TAPE_SET_POSITION = TAPE_SET_POSITION;
+
+     TAPE_WRITE_MARKS = record
+          _Type : ULONG;
+          Count : ULONG;
+       end;
+
+     _TAPE_WRITE_MARKS = TAPE_WRITE_MARKS;
+
+     TBADDBITMAP = record
+          hInst : HINSTANCE;
+          nID : UINT;
+       end;
+
+     LPTBADDBITMAP = ^TBADDBITMAP;
+
+     TBBUTTON = record
+          iBitmap : longint;
+          idCommand : longint;
+          fsState : BYTE;
+          fsStyle : BYTE;
+          dwData : DWORD;
+          iString : longint;
+       end;
+
+     PTBBUTTON = ^TBBUTTON;
+
+     LPTBBUTTON = ^TBBUTTON;
+
+     _TBBUTTON = TBBUTTON;
+(* Const before type ignored *)
+
+     LPCTBBUTTON = ^TBBUTTON;
+
+     TBNOTIFY = record
+          hdr : NMHDR;
+          iItem : longint;
+          tbButton : TBBUTTON;
+          cchText : longint;
+          pszText : LPTSTR;
+       end;
+
+     LPTBNOTIFY = ^TBNOTIFY;
+
+     TBSAVEPARAMS = record
+          hkr : HKEY;
+          pszSubKey : LPCTSTR;
+          pszValueName : LPCTSTR;
+       end;
+
+     TC_HITTESTINFO = record
+          pt : POINT;
+          flags : UINT;
+       end;
+
+     _TC_HITTESTINFO = TC_HITTESTINFO;
+
+     TC_ITEM = record
+          mask : UINT;
+          lpReserved1 : UINT;
+          lpReserved2 : UINT;
+          pszText : LPTSTR;
+          cchTextMax : longint;
+          iImage : longint;
+          lParam : LPARAM;
+       end;
 
-unit struct;
+     _TC_ITEM = TC_ITEM;
 
-  interface
+     TC_ITEMHEADER = record
+          mask : UINT;
+          lpReserved1 : UINT;
+          lpReserved2 : UINT;
+          pszText : LPTSTR;
+          cchTextMax : longint;
+          iImage : longint;
+       end;
 
-    uses
-       base;
-
-    type
-       ABC = record
-            abcA : longint;
-            abcB : UINT;
-            abcC : longint;
-         end;
-       LPABC = ^ABC;
-       ABCFLOAT = record
-            abcfA : FLOAT;
-            abcfB : FLOAT;
-            abcfC : FLOAT;
-         end;
-       LPABCFLOAT = ^ABCFLOAT;
-       ACCEL = record
-            fVirt : BYTE;
-            key : WORD;
-            cmd : WORD;
-         end;
-       LPACCEL = ^ACCEL;
-       ACE_HEADER = record
-            AceType : BYTE;
-            AceFlags : BYTE;
-            AceSize : WORD;
-         end;
-       ACCESS_MASK = DWORD;
-       REGSAM = ACCESS_MASK;
-       ACCESS_ALLOWED_ACE = record
-            Header : ACE_HEADER;
-            Mask : ACCESS_MASK;
-            SidStart : DWORD;
-         end;
-       ACCESS_DENIED_ACE = record
-            Header : ACE_HEADER;
-            Mask : ACCESS_MASK;
-            SidStart : DWORD;
-         end;
-       ACCESSTIMEOUT = record
-            cbSize : UINT;
-            dwFlags : DWORD;
-            iTimeOutMSec : DWORD;
-         end;
-       ACL = record
-            AclRevision : BYTE;
-            Sbz1 : BYTE;
-            AclSize : WORD;
-            AceCount : WORD;
-            Sbz2 : WORD;
-         end;
-       PACL = ^ACL;
-       ACL_REVISION_INFORMATION = record
-            AclRevision : DWORD;
-         end;
-       ACL_SIZE_INFORMATION = record
-            AceCount : DWORD;
-            AclBytesInUse : DWORD;
-            AclBytesFree : DWORD;
-         end;
-       ACTION_HEADER = record
-            transport_id : ULONG;
-            action_code : USHORT;
-            reserved : USHORT;
-         end;
-       ADAPTER_STATUS = record
-            adapter_address : array[0..(6)-1] of UCHAR;
-            rev_major : UCHAR;
-            reserved0 : UCHAR;
-            adapter_type : UCHAR;
-            rev_minor : UCHAR;
-            duration : WORD;
-            frmr_recv : WORD;
-            frmr_xmit : WORD;
-            iframe_recv_err : WORD;
-            xmit_aborts : WORD;
-            xmit_success : DWORD;
-            recv_success : DWORD;
-            iframe_xmit_err : WORD;
-            recv_buff_unavail : WORD;
-            t1_timeouts : WORD;
-            ti_timeouts : WORD;
-            reserved1 : DWORD;
-            free_ncbs : WORD;
-            max_cfg_ncbs : WORD;
-            max_ncbs : WORD;
-            xmit_buf_unavail : WORD;
-            max_dgram_size : WORD;
-            pending_sess : WORD;
-            max_cfg_sess : WORD;
-            max_sess : WORD;
-            max_sess_pkt_size : WORD;
-            name_count : WORD;
-         end;
-       ADDJOB_INFO_1 = record
-            Path : LPTSTR;
-            JobId : DWORD;
-         end;
-       ANIMATIONINFO = record
-            cbSize : UINT;
-            iMinAnimate : longint;
-         end;
-       LPANIMATIONINFO = ^ANIMATIONINFO;
-       RECT = record
-            left : LONG;
-            top : LONG;
-            right : LONG;
-            bottom : LONG;
-         end;
-       LPRECT = ^RECT;
-       RECTL = record
-            left : LONG;
-            top : LONG;
-            right : LONG;
-            bottom : LONG;
-         end;
-       APPBARDATA = record
-            cbSize : DWORD;
-            hWnd : HWND;
-            uCallbackMessage : UINT;
-            uEdge : UINT;
-            rc : RECT;
-            lParam : LPARAM;
-         end;
-       PAPPBARDATA = ^APPBARDATA;
-       BITMAP = record
-            bmType : LONG;
-            bmWidth : LONG;
-            bmHeight : LONG;
-            bmWidthBytes : LONG;
-            bmPlanes : WORD;
-            bmBitsPixel : WORD;
-            bmBits : LPVOID;
-         end;
-       PBITMAP = ^BITMAP;
-       NPBITMAP = ^BITMAP;
-       LPBITMAP = ^BITMAP;
-       BITMAPCOREHEADER = record
-            bcSize : DWORD;
-            bcWidth : WORD;
-            bcHeight : WORD;
-            bcPlanes : WORD;
-            bcBitCount : WORD;
-         end;
-       RGBTRIPLE = record
-            rgbtBlue : BYTE;
-            rgbtGreen : BYTE;
-            rgbtRed : BYTE;
-         end;
-       BITMAPCOREINFO = record
-            bmciHeader : BITMAPCOREHEADER;
-            bmciColors : array[0..(1)-1] of RGBTRIPLE;
-         end;
-       BITMAPFILEHEADER = record
-            bfType : WORD;
-            bfSize : DWORD;
-            bfReserved1 : WORD;
-            bfReserved2 : WORD;
-            bfOffBits : DWORD;
-         end;
-       BITMAPINFOHEADER = record
-            biSize : DWORD;
-            biWidth : LONG;
-            biHeight : LONG;
-            biPlanes : WORD;
-            biBitCount : WORD;
-            biCompression : DWORD;
-            biSizeImage : DWORD;
-            biXPelsPerMeter : LONG;
-            biYPelsPerMeter : LONG;
-            biClrUsed : DWORD;
-            biClrImportant : DWORD;
-         end;
-       LPBITMAPINFOHEADER = ^BITMAPINFOHEADER;
-       RGBQUAD = record
-            rgbBlue : BYTE;
-            rgbGreen : BYTE;
-            rgbRed : BYTE;
-            rgbReserved : BYTE;
-         end;
-       BITMAPINFO = record
-            bmiHeader : BITMAPINFOHEADER;
-            bmiColors : array[0..0] of RGBQUAD;
-         end;
-       LPBITMAPINFO = ^BITMAPINFO;
-       FXPT2DOT30 = longint;
-       LPFXPT2DOT30 = ^longint;
-       CIEXYZ = record
-            ciexyzX : FXPT2DOT30;
-            ciexyzY : FXPT2DOT30;
-            ciexyzZ : FXPT2DOT30;
-         end;
-       LPCIEXYZ = ^CIEXYZ;
-       CIEXYZTRIPLE = record
-            ciexyzRed : CIEXYZ;
-            ciexyzGreen : CIEXYZ;
-            ciexyzBlue : CIEXYZ;
-         end;
-       LPCIEXYZTRIPLE = ^CIEXYZTRIPLE;
-       BITMAPV4HEADER = record
-            bV4Size : DWORD;
-            bV4Width : LONG;
-            bV4Height : LONG;
-            bV4Planes : WORD;
-            bV4BitCount : WORD;
-            bV4V4Compression : DWORD;
-            bV4SizeImage : DWORD;
-            bV4XPelsPerMeter : LONG;
-            bV4YPelsPerMeter : LONG;
-            bV4ClrUsed : DWORD;
-            bV4ClrImportant : DWORD;
-            bV4RedMask : DWORD;
-            bV4GreenMask : DWORD;
-            bV4BlueMask : DWORD;
-            bV4AlphaMask : DWORD;
-            bV4CSType : DWORD;
-            bV4Endpoints : CIEXYZTRIPLE;
-            bV4GammaRed : DWORD;
-            bV4GammaGreen : DWORD;
-            bV4GammaBlue : DWORD;
-         end;
-       LPBITMAPV4HEADER = ^BITMAPV4HEADER;
-       PBITMAPV4HEADER = ^BITMAPV4HEADER;
-       BLOB = record
-            cbSize : ULONG;
-            pBlobData : ^BYTE;
-         end;
-       SHITEMID = record
-            cb : USHORT;
-            abID : array[0..0] of BYTE;
-         end;
-       LPSHITEMID = ^SHITEMID;
-       LPCSHITEMID = ^SHITEMID;
-       ITEMIDLIST = record
-            mkid : SHITEMID;
-         end;
-       LPITEMIDLIST = ITEMIDLIST;
-       LPCITEMIDLIST = ^ITEMIDLIST;
-       BROWSEINFO = record
-            hwndOwner : HWND;
-            pidlRoot : LPCITEMIDLIST;
-            pszDisplayName : LPSTR;
-            lpszTitle : LPCSTR;
-            ulFlags : UINT;
-            lpfn : BFFCALLBACK;
-            lParam : LPARAM;
-            iImage : longint;
-         end;
-       PBROWSEINFO = ^BROWSEINFO;
-       LPBROWSEINFO = ^BROWSEINFO;
-       FILETIME = record
-            dwLowDateTime : DWORD;
-            dwHighDateTime : DWORD;
-         end;
-       LPFILETIME = ^FILETIME;
-       PFILETIME = ^FILETIME;
-       BY_HANDLE_FILE_INFORMATION = record
-            dwFileAttributes : DWORD;
-            ftCreationTime : FILETIME;
-            ftLastAccessTime : FILETIME;
-            ftLastWriteTime : FILETIME;
-            dwVolumeSerialNumber : DWORD;
-            nFileSizeHigh : DWORD;
-            nFileSizeLow : DWORD;
-            nNumberOfLinks : DWORD;
-            nFileIndexHigh : DWORD;
-            nFileIndexLow : DWORD;
-         end;
-       LPBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
-       FIXED = record
-            fract : WORD;
-            value : integer;
-         end;
-       POINT = record
-            x : LONG;
-            y : LONG;
-         end;
-       LPPOINT = ^POINT;
-       POINTFX = record
-            x : FIXED;
-            y : FIXED;
-         end;
-       POINTL = record
-            x : LONG;
-            y : LONG;
-         end;
-       POINTS = record
-            x : SHORT;
-            y : SHORT;
-         end;
-       CANDIDATEFORM = record
-            dwIndex : DWORD;
-            dwStyle : DWORD;
-            ptCurrentPos : POINT;
-            rcArea : RECT;
-         end;
-       LPCANDIDATEFORM = ^CANDIDATEFORM;
-       CANDIDATELIST = record
-            dwSize : DWORD;
-            dwStyle : DWORD;
-            dwCount : DWORD;
-            dwSelection : DWORD;
-            dwPageStart : DWORD;
-            dwPageSize : DWORD;
-            dwOffset : array[0..0] of DWORD;
-         end;
-       LPCANDIDATELIST = ^CANDIDATELIST;
-       CREATESTRUCT = record
-            lpCreateParams : LPVOID;
-            hInstance : HINSTANCE;
-            hMenu : HMENU;
-            hwndParent : HWND;
-            cy : longint;
-            cx : longint;
-            y : longint;
-            x : longint;
-            style : LONG;
-            lpszName : LPCTSTR;
-            lpszClass : LPCTSTR;
-            dwExStyle : DWORD;
-         end;
-       LPCREATESTRUCT = ^CREATESTRUCT;
-       CBT_CREATEWND = record
-            lpcs : LPCREATESTRUCT;
-            hwndInsertAfter : HWND;
-         end;
-       CBTACTIVATESTRUCT = record
-            fMouse : WINBOOL;
-            hWndActive : HWND;
-         end;
-       CHAR_INFO = record
-            Char : record
-                case longint of
-                   0 : ( UnicodeChar:WCHAR );
-                   1 : ( AsciiChar:CHAR );
-              end;
-            Attributes : WORD;
-         end;
-       PCHAR_INFO = ^CHAR_INFO;
-       CHARFORMAT = record
-            cbSize : UINT;
-            dwMask : DWORD;
-            dwEffects : DWORD;
-            yHeight : LONG;
-            yOffset : LONG;
-            crTextColor : COLORREF;
-            bCharSet : BYTE;
-            bPitchAndFamily : BYTE;
-            szFaceName : array[0..(LF_FACESIZE)-1] of TCHAR;
-         end;
-       CHARRANGE = record
-            cpMin : LONG;
-            cpMax : LONG;
-         end;
-       CHARSET = record
-            aflBlock : array[0..(3)-1] of DWORD;
-            flLang : DWORD;
-         end;
-       FONTSIGNATURE = record
-            fsUsb : array[0..(4)-1] of DWORD;
-            fsCsb : array[0..(2)-1] of DWORD;
-         end;
-       LPFONTSIGNATURE = ^FONTSIGNATURE;
-       CHARSETINFO = record
-            ciCharset : UINT;
-            ciACP : UINT;
-            fs : FONTSIGNATURE;
-         end;
-       LPCHARSETINFO = ^CHARSETINFO;
-       CHOOSECOLOR = record
-            lStructSize : DWORD;
-            hwndOwner : HWND;
-            hInstance : HWND;
-            rgbResult : COLORREF;
-            lpCustColors : ^COLORREF;
-            Flags : DWORD;
-            lCustData : LPARAM;
-            lpfnHook : LPCCHOOKPROC;
-            lpTemplateName : LPCTSTR;
-         end;
-       LPCHOOSECOLOR = ^CHOOSECOLOR;
-       LOGFONT = record
-            lfHeight : LONG;
-            lfWidth : LONG;
-            lfEscapement : LONG;
-            lfOrientation : LONG;
-            lfWeight : LONG;
-            lfItalic : BYTE;
-            lfUnderline : BYTE;
-            lfStrikeOut : BYTE;
-            lfCharSet : BYTE;
-            lfOutPrecision : BYTE;
-            lfClipPrecision : BYTE;
-            lfQuality : BYTE;
-            lfPitchAndFamily : BYTE;
-            lfFaceName : array[0..(LF_FACESIZE)-1] of TCHAR;
-         end;
-       LPLOGFONT = ^LOGFONT;
-       CHOOSEFONT = record
-            lStructSize : DWORD;
-            hwndOwner : HWND;
-            hDC : HDC;
-            lpLogFont : LPLOGFONT;
-            iPointSize : INT;
-            Flags : DWORD;
-            rgbColors : DWORD;
-            lCustData : LPARAM;
-            lpfnHook : LPCFHOOKPROC;
-            lpTemplateName : LPCTSTR;
-            hInstance : HINSTANCE;
-            lpszStyle : LPTSTR;
-            nFontType : WORD;
-            ___MISSING_ALIGNMENT__ : WORD;
-            nSizeMin : INT;
-            nSizeMax : INT;
-         end;
-       LPCHOOSEFONT = ^CHOOSEFONT;
-       CIDA = record
-            cidl : UINT;
-            aoffset : array[0..(1)-1] of UINT;
-         end;
-       LPIDA = ^CIDA;
-       CLIENTCREATESTRUCT = record
-            hWindowMenu : HANDLE;
-            idFirstChild : UINT;
-         end;
-       CMINVOKECOMMANDINFO = record
-            cbSize : DWORD;
-            fMask : DWORD;
-            hwnd : HWND;
-            lpVerb : LPCSTR;
-            lpParameters : LPCSTR;
-            lpDirectory : LPCSTR;
-            nShow : longint;
-            dwHotKey : DWORD;
-            hIcon : HANDLE;
-         end;
-       LPCMINVOKECOMMANDINFO = ^CMINVOKECOMMANDINFO;
-       COLORADJUSTMENT = record
-            caSize : WORD;
-            caFlags : WORD;
-            caIlluminantIndex : WORD;
-            caRedGamma : WORD;
-            caGreenGamma : WORD;
-            caBlueGamma : WORD;
-            caReferenceBlack : WORD;
-            caReferenceWhite : WORD;
-            caContrast : SHORT;
-            caBrightness : SHORT;
-            caColorfulness : SHORT;
-            caRedGreenTint : SHORT;
-         end;
-       LPCOLORADJUSTMENT = ^COLORADJUSTMENT;
-       COLORMAP = record
-            from : COLORREF;
-            _to : COLORREF;
-         end;
-       LPCOLORMAP = ^COLORMAP;
-       COMMCONFIG = record
-            dwSize : DWORD;
-            wVersion : WORD;
-            wReserved : WORD;
-            dcb : DCB;
-            dwProviderSubType : DWORD;
-            dwProviderOffset : DWORD;
-            dwProviderSize : DWORD;
-            wcProviderData : array[0..0] of WCHAR;
-         end;
-       LPCOMMCONFIG = ^COMMCONFIG;
-       COMMPROP = record
-            wPacketLength : WORD;
-            wPacketVersion : WORD;
-            dwServiceMask : DWORD;
-            dwReserved1 : DWORD;
-            dwMaxTxQueue : DWORD;
-            dwMaxRxQueue : DWORD;
-            dwMaxBaud : DWORD;
-            dwProvSubType : DWORD;
-            dwProvCapabilities : DWORD;
-            dwSettableParams : DWORD;
-            dwSettableBaud : DWORD;
-            wSettableData : WORD;
-            wSettableStopParity : WORD;
-            dwCurrentTxQueue : DWORD;
-            dwCurrentRxQueue : DWORD;
-            dwProvSpec1 : DWORD;
-            dwProvSpec2 : DWORD;
-            wcProvChar : array[0..0] of WCHAR;
-         end;
-       LPCOMMPROP = ^COMMPROP;
-       COMMTIMEOUTS = record
-            ReadIntervalTimeout : DWORD;
-            ReadTotalTimeoutMultiplier : DWORD;
-            ReadTotalTimeoutConstant : DWORD;
-            WriteTotalTimeoutMultiplier : DWORD;
-            WriteTotalTimeoutConstant : DWORD;
-         end;
-       LPCOMMTIMEOUTS = ^COMMTIMEOUTS;
-       COMPAREITEMSTRUCT = record
-            CtlType : UINT;
-            CtlID : UINT;
-            hwndItem : HWND;
-            itemID1 : UINT;
-            itemData1 : DWORD;
-            itemID2 : UINT;
-            itemData2 : DWORD;
-         end;
-       COMPCOLOR = record
-            crText : COLORREF;
-            crBackground : COLORREF;
-            dwEffects : DWORD;
-         end;
-       COMPOSITIONFORM = record
-            dwStyle : DWORD;
-            ptCurrentPos : POINT;
-            rcArea : RECT;
-         end;
-       LPCOMPOSITIONFORM = ^COMPOSITIONFORM;
-       CONSOLE_CURSOR_INFO = record
-            dwSize : DWORD;
-            bVisible : WINBOOL;
-         end;
-       PCONSOLE_CURSOR_INFO = ^CONSOLE_CURSOR_INFO;
-       COORD = record
-            X : SHORT;
-            Y : SHORT;
-         end;
-       SMALL_RECT = record
-            Left : SHORT;
-            Top : SHORT;
-            Right : SHORT;
-            Bottom : SHORT;
-         end;
-       PSMALL_RECT = ^SMALL_RECT;
-       CONSOLE_SCREEN_BUFFER_INFO = record
-            dwSize : COORD;
-            dwCursorPosition : COORD;
-            wAttributes : WORD;
-            srWindow : SMALL_RECT;
-            dwMaximumWindowSize : COORD;
-         end;
-       PCONSOLE_SCREEN_BUFFER_INFO = ^CONSOLE_SCREEN_BUFFER_INFO;
-{$ifdef I386}
-       FLOATING_SAVE_AREA = record
-            ControlWord : DWORD;
-            StatusWord : DWORD;
-            TagWord : DWORD;
-            ErrorOffset : DWORD;
-            ErrorSelector : DWORD;
-            DataOffset : DWORD;
-            DataSelector : DWORD;
-            RegisterArea : array[0..(80)-1] of BYTE;
-            Cr0NpxState : DWORD;
-         end;
-       CONTEXT = record
-            ContextFlags : DWORD;
-            Dr0 : DWORD;
-            Dr1 : DWORD;
-            Dr2 : DWORD;
-            Dr3 : DWORD;
-            Dr6 : DWORD;
-            Dr7 : DWORD;
-            FloatSave : FLOATING_SAVE_AREA;
-            SegGs : DWORD;
-            SegFs : DWORD;
-            SegEs : DWORD;
-            SegDs : DWORD;
-            Edi : DWORD;
-            Esi : DWORD;
-            Ebx : DWORD;
-            Edx : DWORD;
-            Ecx : DWORD;
-            Eax : DWORD;
-            Ebp : DWORD;
-            Eip : DWORD;
-            SegCs : DWORD;
-            EFlags : DWORD;
-            Esp : DWORD;
-            SegSs : DWORD;
-         end;
-       PCONTEXT = ^CONTEXT;
-       LPCONTEXT = ^CONTEXT;
-{$endif I386}
-       LIST_ENTRY = record
-            Flink : ^*;
-            Blink : ^*;
-         end;
-       PLIST_ENTRY = ^LIST_ENTRY;
-       CRITICAL_SECTION_DEBUG = record
-            Type : WORD;
-            CreatorBackTraceIndex : WORD;
-            CriticalSection : ^*;
-            ProcessLocksList : LIST_ENTRY;
-            EntryCount : DWORD;
-            ContentionCount : DWORD;
-            Depth : DWORD;
-            OwnerBackTrace : array[0..(5)-1] of PVOID;
-         end;
-       PCRITICAL_SECTION_DEBUG = ^CRITICAL_SECTION_DEBUG;
-       CRITICAL_SECTION = record
-            DebugInfo : PCRITICAL_SECTION_DEBUG;
-            LockCount : LONG;
-            RecursionCount : LONG;
-            OwningThread : HANDLE;
-            LockSemaphore : HANDLE;
-            Reserved : DWORD;
-         end;
-       PCRITICAL_SECTION = ^CRITICAL_SECTION;
-       LPCRITICAL_SECTION = ^CRITICAL_SECTION;
-    { SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; }
-       SECURITY_QUALITY_OF_SERVICE = record
-            Length : DWORD;
-            ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
-            ContextTrackingMode : WINBOOL;
-            EffectiveOnly : BOOLEAN;
-         end;
-       CONVCONTEXT = record
-            cb : UINT;
-            wFlags : UINT;
-            wCountryID : UINT;
-            iCodePage : longint;
-            dwLangID : DWORD;
-            dwSecurity : DWORD;
-            qos : SECURITY_QUALITY_OF_SERVICE;
-         end;
-       CONVINFO = record
-            cb : DWORD;
-            hUser : DWORD;
-            hConvPartner : HCONV;
-            hszSvcPartner : HSZ;
-            hszServiceReq : HSZ;
-            hszTopic : HSZ;
-            hszItem : HSZ;
-            wFmt : UINT;
-            wType : UINT;
-            wStatus : UINT;
-            wConvst : UINT;
-            wLastError : UINT;
-            hConvList : HCONVLIST;
-            ConvCtxt : CONVCONTEXT;
-            hwnd : HWND;
-            hwndPartner : HWND;
-         end;
-       COPYDATASTRUCT = record
-            dwData : DWORD;
-            cbData : DWORD;
-            lpData : PVOID;
-         end;
-       CPINFO = record
-            MaxCharSize : UINT;
-            DefaultChar : array[0..(MAX_DEFAULTCHAR)-1] of BYTE;
-            LeadByte : array[0..(MAX_LEADBYTES)-1] of BYTE;
-         end;
-       LPCPINFO = ^CPINFO;
-       CPLINFO = record
-            idIcon : longint;
-            idName : longint;
-            idInfo : longint;
-            lData : LONG;
-         end;
-       CREATE_PROCESS_DEBUG_INFO = record
-            hFile : HANDLE;
-            hProcess : HANDLE;
-            hThread : HANDLE;
-            lpBaseOfImage : LPVOID;
-            dwDebugInfoFileOffset : DWORD;
-            nDebugInfoSize : DWORD;
-            lpThreadLocalBase : LPVOID;
-            lpStartAddress : LPTHREAD_START_ROUTINE;
-            lpImageName : LPVOID;
-            fUnicode : WORD;
-         end;
-       CREATE_THREAD_DEBUG_INFO = record
-            hThread : HANDLE;
-            lpThreadLocalBase : LPVOID;
-            lpStartAddress : LPTHREAD_START_ROUTINE;
-         end;
-    { TODO: sockets}
-    {typedef struct _SOCKET_ADDRESS {}
-    {  LPSOCKADDR lpSockaddr ;}
-    {  INT iSockaddrLength ;}
-    {} SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS;}
-    {typedef struct _CSADDR_INFO { }
-    {  SOCKET_ADDRESS  LocalAddr; }
-    {  SOCKET_ADDRESS  RemoteAddr; }
-    {  INT             iSocketType; }
-    {  INT             iProtocol; }
-    {} CSADDR_INFO; }
-       CURRENCYFMT = record
-            NumDigits : UINT;
-            LeadingZero : UINT;
-            Grouping : UINT;
-            lpDecimalSep : LPTSTR;
-            lpThousandSep : LPTSTR;
-            NegativeOrder : UINT;
-            PositiveOrder : UINT;
-            lpCurrencySymbol : LPTSTR;
-         end;
-       CURSORSHAPE = record
-            xHotSpot : longint;
-            yHotSpot : longint;
-            cx : longint;
-            cy : longint;
-            cbWidth : longint;
-            Planes : BYTE;
-            BitsPixel : BYTE;
-         end;
-       LPCURSORSHAPE = ^CURSORSHAPE;
-       CWPRETSTRUCT = record
-            lResult : LRESULT;
-            lParam : LPARAM;
-            wParam : WPARAM;
-            message : DWORD;
-            hwnd : HWND;
-         end;
-       CWPSTRUCT = record
-            lParam : LPARAM;
-            wParam : WPARAM;
-            message : UINT;
-            hwnd : HWND;
-         end;
-       DATATYPES_INFO_1 = record
-            pName : LPTSTR;
-         end;
-       DDEML_MSG_HOOK_DATA = record
-            uiLo : UINT;
-            uiHi : UINT;
-            cbData : DWORD;
-            Data : array[0..(8)-1] of DWORD;
-         end;
-       EXCEPTION_RECORD = record
-            ExceptionCode : DWORD;
-            ExceptionFlags : DWORD;
-            ExceptionRecord : ^*;
-            ExceptionAddress : PVOID;
-            NumberParameters : DWORD;
-            ExceptionInformation : array[0..(EXCEPTION_MAXIMUM_PARAMETERS)-1] of DWORD;
-         end;
-       PEXCEPTION_RECORD = ^EXCEPTION_RECORD;
-       LPEXCEPTION_RECORD = ^EXCEPTION_RECORD;
-       EXCEPTION_DEBUG_INFO = record
-            ExceptionRecord : EXCEPTION_RECORD;
-            dwFirstChance : DWORD;
-         end;
-       EXIT_PROCESS_DEBUG_INFO = record
-            dwExitCode : DWORD;
-         end;
-       EXIT_THREAD_DEBUG_INFO = record
-            dwExitCode : DWORD;
-         end;
-       LOAD_DLL_DEBUG_INFO = record
-            hFile : HANDLE;
-            lpBaseOfDll : LPVOID;
-            dwDebugInfoFileOffset : DWORD;
-            nDebugInfoSize : DWORD;
-            lpImageName : LPVOID;
-            fUnicode : WORD;
-         end;
-       UNLOAD_DLL_DEBUG_INFO = record
-            lpBaseOfDll : LPVOID;
-         end;
-       OUTPUT_DEBUG_STRING_INFO = record
-            lpDebugStringData : LPSTR;
-            fUnicode : WORD;
-            nDebugStringLength : WORD;
-         end;
-       RIP_INFO = record
-            dwError : DWORD;
-            dwType : DWORD;
-         end;
-       DEBUG_EVENT = record
-            dwDebugEventCode : DWORD;
-            dwProcessId : DWORD;
-            dwThreadId : DWORD;
-            u : record
-                case longint of
-                   0 : ( Exception:EXCEPTION_DEBUG_INFO );
-                   1 : ( CreateThread:CREATE_THREAD_DEBUG_INFO );
-                   2 : ( CreateProcessInfo:CREATE_PROCESS_DEBUG_INFO );
-                   3 : ( ExitThread:EXIT_THREAD_DEBUG_INFO );
-                   4 : ( ExitProcess:EXIT_PROCESS_DEBUG_INFO );
-                   5 : ( LoadDll:LOAD_DLL_DEBUG_INFO );
-                   6 : ( UnloadDll:UNLOAD_DLL_DEBUG_INFO );
-                   7 : ( DebugString:OUTPUT_DEBUG_STRING_INFO );
-                   8 : ( RipInfo:RIP_INFO );
-              end;
-         end;
-       LPDEBUG_EVENT = ^DEBUG_EVENT;
-       DEBUGHOOKINFO = record
-            idThread : DWORD;
-            idThreadInstaller : DWORD;
-            lParam : LPARAM;
-            wParam : WPARAM;
-            code : longint;
-         end;
-       DELETEITEMSTRUCT = record
-            CtlType : UINT;
-            CtlID : UINT;
-            itemID : UINT;
-            hwndItem : HWND;
-            itemData : UINT;
-         end;
-       DEV_BROADCAST_HDR = record
-            dbch_size : ULONG;
-            dbch_devicetype : ULONG;
-            dbch_reserved : ULONG;
-         end;
-       PDEV_BROADCAST_HDR = ^DEV_BROADCAST_HDR;
-       DEV_BROADCAST_OEM = record
-            dbco_size : ULONG;
-            dbco_devicetype : ULONG;
-            dbco_reserved : ULONG;
-            dbco_identifier : ULONG;
-            dbco_suppfunc : ULONG;
-         end;
-       PDEV_BROADCAST_OEM = ^DEV_BROADCAST_OEM;
-       DEV_BROADCAST_PORT = record
-            dbcp_size : ULONG;
-            dbcp_devicetype : ULONG;
-            dbcp_reserved : ULONG;
-            dbcp_name : array[0..(1)-1] of char;
-         end;
-       PDEV_BROADCAST_PORT = ^DEV_BROADCAST_PORT;
-       DEV_BROADCAST_USERDEFINED = record
-            dbud_dbh : _DEV_BROADCAST_HDR;
-            dbud_szName : array[0..(1)-1] of char;
-            dbud_rgbUserDefined : array[0..(1)-1] of BYTE;
-         end;
-       DEV_BROADCAST_VOLUME = record
-            dbcv_size : ULONG;
-            dbcv_devicetype : ULONG;
-            dbcv_reserved : ULONG;
-            dbcv_unitmask : ULONG;
-            dbcv_flags : USHORT;
-         end;
-       PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME;
-       DEVMODE = record
-            dmDeviceName : array[0..(CCHDEVICENAME)-1] of BCHAR;
-            dmSpecVersion : WORD;
-            dmDriverVersion : WORD;
-            dmSize : WORD;
-            dmDriverExtra : WORD;
-            dmFields : DWORD;
-            dmOrientation : integer;
-            dmPaperSize : integer;
-            dmPaperLength : integer;
-            dmPaperWidth : integer;
-            dmScale : integer;
-            dmCopies : integer;
-            dmDefaultSource : integer;
-            dmPrintQuality : integer;
-            dmColor : integer;
-            dmDuplex : integer;
-            dmYResolution : integer;
-            dmTTOption : integer;
-            dmCollate : integer;
-            dmFormName : array[0..(CCHFORMNAME)-1] of BCHAR;
-            dmLogPixels : WORD;
-            dmBitsPerPel : DWORD;
-            dmPelsWidth : DWORD;
-            dmPelsHeight : DWORD;
-            dmDisplayFlags : DWORD;
-            dmDisplayFrequency : DWORD;
-            dmICMMethod : DWORD;
-            dmICMIntent : DWORD;
-            dmMediaType : DWORD;
-            dmDitherType : DWORD;
-            dmICCManufacturer : DWORD;
-            dmICCModel : DWORD;
-         end;
-       LPDEVMODE = ^DEVMODE;
-       DEVNAMES = record
-            wDriverOffset : WORD;
-            wDeviceOffset : WORD;
-            wOutputOffset : WORD;
-            wDefault : WORD;
-         end;
-       LPDEVNAMES = ^DEVNAMES;
-       DIBSECTION = record
-            dsBm : BITMAP;
-            dsBmih : BITMAPINFOHEADER;
-            dsBitfields : array[0..(3)-1] of DWORD;
-            dshSection : HANDLE;
-            dsOffset : DWORD;
-         end;
-       LARGE_INTEGER = record
-            LowPart : DWORD;
-            HighPart : LONG;
-         end;
-       PLARGE_INTEGER = ^LARGE_INTEGER;
-       DISK_GEOMETRY = record
-            Cylinders : LARGE_INTEGER;
-            MediaType : MEDIA_TYPE;
-            TracksPerCylinder : DWORD;
-            SectorsPerTrack : DWORD;
-            BytesPerSector : DWORD;
-         end;
-       DISK_PERFORMANCE = record
-            BytesRead : LARGE_INTEGER;
-            BytesWritten : LARGE_INTEGER;
-            ReadTime : LARGE_INTEGER;
-            WriteTime : LARGE_INTEGER;
-            ReadCount : DWORD;
-            WriteCount : DWORD;
-            QueueDepth : DWORD;
-         end;
-       DLGITEMTEMPLATE = record
-            style : DWORD;
-            dwExtendedStyle : DWORD;
-            x : integer;
-            y : integer;
-            cx : integer;
-            cy : integer;
-            id : WORD;
-         end;
-       DLGTEMPLATE = record
-            style : DWORD;
-            dwExtendedStyle : DWORD;
-            cdit : WORD;
-            x : integer;
-            y : integer;
-            cx : integer;
-            cy : integer;
-         end;
-       LPDLGTEMPLATE = ^DLGTEMPLATE;
-       LPCDLGTEMPLATE = ^DLGTEMPLATE;
-       DOC_INFO_1 = record
-            pDocName : LPTSTR;
-            pOutputFile : LPTSTR;
-            pDatatype : LPTSTR;
-         end;
-       DOC_INFO_2 = record
-            pDocName : LPTSTR;
-            pOutputFile : LPTSTR;
-            pDatatype : LPTSTR;
-            dwMode : DWORD;
-            JobId : DWORD;
-         end;
-       DOCINFO = record
-            cbSize : longint;
-            lpszDocName : LPCTSTR;
-            lpszOutput : LPCTSTR;
-            lpszDatatype : LPCTSTR;
-            fwType : DWORD;
-         end;
-       DRAGLISTINFO = record
-            uNotification : UINT;
-            hWnd : HWND;
-            ptCursor : POINT;
-         end;
-       LPDRAGLISTINFO = ^DRAGLISTINFO;
-       DRAWITEMSTRUCT = record
-            CtlType : UINT;
-            CtlID : UINT;
-            itemID : UINT;
-            itemAction : UINT;
-            itemState : UINT;
-            hwndItem : HWND;
-            hDC : HDC;
-            rcItem : RECT;
-            itemData : DWORD;
-         end;
-       DRAWTEXTPARAMS = record
-            cbSize : UINT;
-            iTabLength : longint;
-            iLeftMargin : longint;
-            iRightMargin : longint;
-            uiLengthDrawn : UINT;
-         end;
-       LPDRAWTEXTPARAMS = ^DRAWTEXTPARAMS;
-       PARTITION_INFORMATION = record
-            PartitionType : BYTE;
-            BootIndicator : BOOLEAN;
-            RecognizedPartition : BOOLEAN;
-            RewritePartition : BOOLEAN;
-            StartingOffset : LARGE_INTEGER;
-            PartitionLength : LARGE_INTEGER;
-            HiddenSectors : LARGE_INTEGER;
-         end;
-       DRIVE_LAYOUT_INFORMATION = record
-            PartitionCount : DWORD;
-            Signature : DWORD;
-            PartitionEntry : array[0..(1)-1] of PARTITION_INFORMATION;
-         end;
-       DRIVER_INFO_1 = record
-            pName : LPTSTR;
-         end;
-       DRIVER_INFO_2 = record
-            cVersion : DWORD;
-            pName : LPTSTR;
-            pEnvironment : LPTSTR;
-            pDriverPath : LPTSTR;
-            pDataFile : LPTSTR;
-            pConfigFile : LPTSTR;
-         end;
-       DRIVER_INFO_3 = record
-            cVersion : DWORD;
-            pName : LPTSTR;
-            pEnvironment : LPTSTR;
-            pDriverPath : LPTSTR;
-            pDataFile : LPTSTR;
-            pConfigFile : LPTSTR;
-            pHelpFile : LPTSTR;
-            pDependentFiles : LPTSTR;
-            pMonitorName : LPTSTR;
-            pDefaultDataType : LPTSTR;
-         end;
-       EDITSTREAM = record
-            dwCookie : DWORD;
-            dwError : DWORD;
-            pfnCallback : EDITSTREAMCALLBACK;
-         end;
-       EMR = record
-            iType : DWORD;
-            nSize : DWORD;
-         end;
-       PEMR = ^EMR;
-       EMRANGLEARC = record
-            emr : EMR;
-            ptlCenter : POINTL;
-            nRadius : DWORD;
-            eStartAngle : FLOAT;
-            eSweepAngle : FLOAT;
-         end;
-       PEMRANGLEARC = ^EMRANGLEARC;
-       EMRARC = record
-            emr : EMR;
-            rclBox : RECTL;
-            ptlStart : POINTL;
-            ptlEnd : POINTL;
-         end;
-       PEMRARC = ^EMRARC;
-       EMRARCTO = record
-            emr : EMR;
-            rclBox : RECTL;
-            ptlStart : POINTL;
-            ptlEnd : POINTL;
-         end;
-       PEMRARCTO = ^EMRARCTO;
-       EMRCHORD = record
-            emr : EMR;
-            rclBox : RECTL;
-            ptlStart : POINTL;
-            ptlEnd : POINTL;
-         end;
-       PEMRCHORD = ^EMRCHORD;
-       EMRPIE = record
-            emr : EMR;
-            rclBox : RECTL;
-            ptlStart : POINTL;
-            ptlEnd : POINTL;
-         end;
-       PEMRPIE = ^EMRPIE;
-       XFORM = record
-            eM11 : FLOAT;
-            eM12 : FLOAT;
-            eM21 : FLOAT;
-            eM22 : FLOAT;
-            eDx : FLOAT;
-            eDy : FLOAT;
-         end;
-       PXFORM = ^XFORM;
-       LPXFORM = ^XFORM;
-       EMRBITBLT = record
-            emr : EMR;
-            rclBounds : RECTL;
-            xDest : LONG;
-            yDest : LONG;
-            cxDest : LONG;
-            cyDest : LONG;
-            dwRop : DWORD;
-            xSrc : LONG;
-            ySrc : LONG;
-            xformSrc : XFORM;
-            crBkColorSrc : COLORREF;
-            iUsageSrc : DWORD;
-            offBmiSrc : DWORD;
-            offBitsSrc : DWORD;
-            cbBitsSrc : DWORD;
-         end;
-       PEMRBITBLT = ^EMRBITBLT;
-       LOGBRUSH = record
-            lbStyle : UINT;
-            lbColor : COLORREF;
-            lbHatch : LONG;
-         end;
-       EMRCREATEBRUSHINDIRECT = record
-            emr : EMR;
-            ihBrush : DWORD;
-            lb : LOGBRUSH;
-         end;
-       PEMRCREATEBRUSHINDIRECT = ^EMRCREATEBRUSHINDIRECT;
-       LCSCSTYPE = LONG;
-       LCSGAMUTMATCH = LONG;
-       LOGCOLORSPACE = record
-            lcsSignature : DWORD;
-            lcsVersion : DWORD;
-            lcsSize : DWORD;
-            lcsCSType : LCSCSTYPE;
-            lcsIntent : LCSGAMUTMATCH;
-            lcsEndpoints : CIEXYZTRIPLE;
-            lcsGammaRed : DWORD;
-            lcsGammaGreen : DWORD;
-            lcsGammaBlue : DWORD;
-            lcsFilename : array[0..(MAX_PATH)-1] of TCHAR;
-         end;
-       LPLOGCOLORSPACE = ^LOGCOLORSPACE;
-       EMRCREATECOLORSPACE = record
-            emr : EMR;
-            ihCS : DWORD;
-            lcs : LOGCOLORSPACE;
-         end;
-       PEMRCREATECOLORSPACE = ^EMRCREATECOLORSPACE;
-       EMRCREATEDIBPATTERNBRUSHPT = record
-            emr : EMR;
-            ihBrush : DWORD;
-            iUsage : DWORD;
-            offBmi : DWORD;
-            cbBmi : DWORD;
-            offBits : DWORD;
-            cbBits : DWORD;
-         end;
-       PEMRCREATEDIBPATTERNBRUSHPT = record
-            emr : EMR;
-            ihBrush : DWORD;
-            iUsage : DWORD;
-            offBmi : DWORD;
-            cbBmi : DWORD;
-            offBits : DWORD;
-            cbBits : DWORD;
-         end;
-       EMRCREATEMONOBRUSH = record
-            emr : EMR;
-            ihBrush : DWORD;
-            iUsage : DWORD;
-            offBmi : DWORD;
-            cbBmi : DWORD;
-            offBits : DWORD;
-            cbBits : DWORD;
-         end;
-       PEMRCREATEMONOBRUSH = ^EMRCREATEMONOBRUSH;
-       PALETTEENTRY = record
-            peRed : BYTE;
-            peGreen : BYTE;
-            peBlue : BYTE;
-            peFlags : BYTE;
-         end;
-       LPPALETTEENTRY = ^PALETTEENTRY;
-       LOGPALETTE = record
-            palVersion : WORD;
-            palNumEntries : WORD;
-            palPalEntry : array[0..(1)-1] of PALETTEENTRY;
-         end;
-       EMRCREATEPALETTE = record
-            emr : EMR;
-            ihPal : DWORD;
-            lgpl : LOGPALETTE;
-         end;
-       PEMRCREATEPALETTE = ^EMRCREATEPALETTE;
-       LOGPEN = record
-            lopnStyle : UINT;
-            lopnWidth : POINT;
-            lopnColor : COLORREF;
-         end;
-       EMRCREATEPEN = record
-            emr : EMR;
-            ihPen : DWORD;
-            lopn : LOGPEN;
-         end;
-       PEMRCREATEPEN = ^EMRCREATEPEN;
-       EMRELLIPSE = record
-            emr : EMR;
-            rclBox : RECTL;
-         end;
-       PEMRELLIPSE = ^EMRELLIPSE;
-       EMRRECTANGLE = record
-            emr : EMR;
-            rclBox : RECTL;
-         end;
-       PEMRRECTANGLE = ^EMRRECTANGLE;
-       EMREOF = record
-            emr : EMR;
-            nPalEntries : DWORD;
-            offPalEntries : DWORD;
-            nSizeLast : DWORD;
-         end;
-       PEMREOF = ^EMREOF;
-       EMREXCLUDECLIPRECT = record
-            emr : EMR;
-            rclClip : RECTL;
-         end;
-       PEMREXCLUDECLIPRECT = ^EMREXCLUDECLIPRECT;
-       EMRINTERSECTCLIPRECT = record
-            emr : EMR;
-            rclClip : RECTL;
-         end;
-       PEMRINTERSECTCLIPRECT = ^EMRINTERSECTCLIPRECT;
-       PANOSE = record
-            bFamilyType : BYTE;
-            bSerifStyle : BYTE;
-            bWeight : BYTE;
-            bProportion : BYTE;
-            bContrast : BYTE;
-            bStrokeVariation : BYTE;
-            bArmStyle : BYTE;
-            bLetterform : BYTE;
-            bMidline : BYTE;
-            bXHeight : BYTE;
-         end;
-       EXTLOGFONT = record
-            elfLogFont : LOGFONT;
-            elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
-            elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
-            elfVersion : DWORD;
-            elfStyleSize : DWORD;
-            elfMatch : DWORD;
-            elfReserved : DWORD;
-            elfVendorId : array[0..(ELF_VENDOR_SIZE)-1] of BYTE;
-            elfCulture : DWORD;
-            elfPanose : PANOSE;
-         end;
-       EMREXTCREATEFONTINDIRECTW = record
-            emr : EMR;
-            ihFont : DWORD;
-            elfw : EXTLOGFONT;
-         end;
-       PEMREXTCREATEFONTINDIRECTW = record
-            emr : EMR;
-            ihFont : DWORD;
-            elfw : EXTLOGFONT;
-         end;
-       EXTLOGPEN = record
-            elpPenStyle : UINT;
-            elpWidth : UINT;
-            elpBrushStyle : UINT;
-            elpColor : COLORREF;
-            elpHatch : LONG;
-            elpNumEntries : DWORD;
-            elpStyleEntry : array[0..(1)-1] of DWORD;
-         end;
-       EMREXTCREATEPEN = record
-            emr : EMR;
-            ihPen : DWORD;
-            offBmi : DWORD;
-            cbBmi : DWORD;
-            offBits : DWORD;
-            cbBits : DWORD;
-            elp : EXTLOGPEN;
-         end;
-       PEMREXTCREATEPEN = ^EMREXTCREATEPEN;
-       EMREXTFLOODFILL = record
-            emr : EMR;
-            ptlStart : POINTL;
-            crColor : COLORREF;
-            iMode : DWORD;
-         end;
-       PEMREXTFLOODFILL = ^EMREXTFLOODFILL;
-       EMREXTSELECTCLIPRGN = record
-            emr : EMR;
-            cbRgnData : DWORD;
-            iMode : DWORD;
-            RgnData : array[0..(1)-1] of BYTE;
-         end;
-       PEMREXTSELECTCLIPRGN = ^EMREXTSELECTCLIPRGN;
-       EMRTEXT = record
-            ptlReference : POINTL;
-            nChars : DWORD;
-            offString : DWORD;
-            fOptions : DWORD;
-            rcl : RECTL;
-            offDx : DWORD;
-         end;
-       PEMRTEXT = ^EMRTEXT;
-       EMREXTTEXTOUTA = record
-            emr : EMR;
-            rclBounds : RECTL;
-            iGraphicsMode : DWORD;
-            exScale : FLOAT;
-            eyScale : FLOAT;
-            emrtext : EMRTEXT;
-         end;
-       PEMREXTTEXTOUTA = ^EMREXTTEXTOUTA;
-       EMREXTTEXTOUTW = record
-            emr : EMR;
-            rclBounds : RECTL;
-            iGraphicsMode : DWORD;
-            exScale : FLOAT;
-            eyScale : FLOAT;
-            emrtext : EMRTEXT;
-         end;
-       PEMREXTTEXTOUTW = ^EMREXTTEXTOUTW;
-       EMRFILLPATH = record
-            emr : EMR;
-            rclBounds : RECTL;
-         end;
-       PEMRFILLPATH = ^EMRFILLPATH;
-       EMRSTROKEANDFILLPATH = record
-            emr : EMR;
-            rclBounds : RECTL;
-         end;
-       PEMRSTROKEANDFILLPATH = ^EMRSTROKEANDFILLPATH;
-       EMRSTROKEPATH = record
-            emr : EMR;
-            rclBounds : RECTL;
-         end;
-       PEMRSTROKEPATH = ^EMRSTROKEPATH;
-       EMRFILLRGN = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cbRgnData : DWORD;
-            ihBrush : DWORD;
-            RgnData : array[0..(1)-1] of BYTE;
-         end;
-       PEMRFILLRGN = ^EMRFILLRGN;
-       EMRFORMAT = record
-            dSignature : DWORD;
-            nVersion : DWORD;
-            cbData : DWORD;
-            offData : DWORD;
-         end;
-       SIZE = record
-            cx : LONG;
-            cy : LONG;
-         end;
-       PSIZE = ^SIZE;
-       LPSIZE = ^SIZE;
-       SIZEL = record
-            cx : LONG;
-            cy : LONG;
-         end;
-       PSIZEL = ^SIZEL;
-       LPSIZEL = ^SIZEL;
-       EMRFRAMERGN = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cbRgnData : DWORD;
-            ihBrush : DWORD;
-            szlStroke : SIZEL;
-            RgnData : array[0..0] of BYTE;
-         end;
-       PEMRFRAMERGN = ^EMRFRAMERGN;
-       EMRGDICOMMENT = record
-            emr : EMR;
-            cbData : DWORD;
-            Data : array[0..0] of BYTE;
-         end;
-       PEMRGDICOMMENT = ^EMRGDICOMMENT;
-       EMRINVERTRGN = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cbRgnData : DWORD;
-            RgnData : array[0..(1)-1] of BYTE;
-         end;
-       PEMRINVERTRGN = ^EMRINVERTRGN;
-       EMRPAINTRGN = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cbRgnData : DWORD;
-            RgnData : array[0..(1)-1] of BYTE;
-         end;
-       PEMRPAINTRGN = ^EMRPAINTRGN;
-       EMRLINETO = record
-            emr : EMR;
-            ptl : POINTL;
-         end;
-       PEMRLINETO = ^EMRLINETO;
-       EMRMOVETOEX = record
-            emr : EMR;
-            ptl : POINTL;
-         end;
-       PEMRMOVETOEX = ^EMRMOVETOEX;
-       EMRMASKBLT = record
-            emr : EMR;
-            rclBounds : RECTL;
-            xDest : LONG;
-            yDest : LONG;
-            cxDest : LONG;
-            cyDest : LONG;
-            dwRop : DWORD;
-            xSrc : LONG;
-            ySrc : LONG;
-            xformSrc : XFORM;
-            crBkColorSrc : COLORREF;
-            iUsageSrc : DWORD;
-            offBmiSrc : DWORD;
-            cbBmiSrc : DWORD;
-            offBitsSrc : DWORD;
-            cbBitsSrc : DWORD;
-            xMask : LONG;
-            yMask : LONG;
-            iUsageMask : DWORD;
-            offBmiMask : DWORD;
-            cbBmiMask : DWORD;
-            offBitsMask : DWORD;
-            cbBitsMask : DWORD;
-         end;
-       PEMRMASKBLT = ^EMRMASKBLT;
-       EMRMODIFYWORLDTRANSFORM = record
-            emr : EMR;
-            xform : XFORM;
-            iMode : DWORD;
-         end;
-       PEMRMODIFYWORLDTRANSFORM = ^EMRMODIFYWORLDTRANSFORM;
-       EMROFFSETCLIPRGN = record
-            emr : EMR;
-            ptlOffset : POINTL;
-         end;
-       PEMROFFSETCLIPRGN = ^EMROFFSETCLIPRGN;
-       EMRPLGBLT = record
-            emr : EMR;
-            rclBounds : RECTL;
-            aptlDest : array[0..2] of POINTL;
-            xSrc : LONG;
-            ySrc : LONG;
-            cxSrc : LONG;
-            cySrc : LONG;
-            xformSrc : XFORM;
-            crBkColorSrc : COLORREF;
-            iUsageSrc : DWORD;
-            offBmiSrc : DWORD;
-            cbBmiSrc : DWORD;
-            offBitsSrc : DWORD;
-            cbBitsSrc : DWORD;
-            xMask : LONG;
-            yMask : LONG;
-            iUsageMask : DWORD;
-            offBmiMask : DWORD;
-            cbBmiMask : DWORD;
-            offBitsMask : DWORD;
-            cbBitsMask : DWORD;
-         end;
-       PEMRPLGBLT = ^EMRPLGBLT;
-       EMRPOLYDRAW = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cptl : DWORD;
-            aptl : array[0..0] of POINTL;
-            abTypes : array[0..0] of BYTE;
-         end;
-       PEMRPOLYDRAW = ^EMRPOLYDRAW;
-       EMRPOLYDRAW16 = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cpts : DWORD;
-            apts : array[0..0] of POINTS;
-            abTypes : array[0..0] of BYTE;
-         end;
-       PEMRPOLYDRAW16 = ^EMRPOLYDRAW16;
-       EMRPOLYLINE = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cptl : DWORD;
-            aptl : array[0..0] of POINTL;
-         end;
-       PEMRPOLYLINE = ^EMRPOLYLINE;
-       EMRPOLYBEZIER = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cptl : DWORD;
-            aptl : array[0..0] of POINTL;
-         end;
-       PEMRPOLYBEZIER = ^EMRPOLYBEZIER;
-       EMRPOLYGON = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cptl : DWORD;
-            aptl : array[0..0] of POINTL;
-         end;
-       PEMRPOLYGON = ^EMRPOLYGON;
-       EMRPOLYBEZIERTO = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cptl : DWORD;
-            aptl : array[0..0] of POINTL;
-         end;
-       PEMRPOLYBEZIERTO = ^EMRPOLYBEZIERTO;
-       EMRPOLYLINETO = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cptl : DWORD;
-            aptl : array[0..0] of POINTL;
-         end;
-       PEMRPOLYLINETO = ^EMRPOLYLINETO;
-       EMRPOLYLINE16 = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cpts : DWORD;
-            apts : array[0..0] of POINTL;
-         end;
-       PEMRPOLYLINE16 = ^EMRPOLYLINE16;
-       EMRPOLYBEZIER16 = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cpts : DWORD;
-            apts : array[0..0] of POINTL;
-         end;
-       PEMRPOLYBEZIER16 = ^EMRPOLYBEZIER16;
-       EMRPOLYGON16 = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cpts : DWORD;
-            apts : array[0..0] of POINTL;
-         end;
-       PEMRPOLYGON16 = ^EMRPOLYGON16;
-       EMRPOLYBEZIERTO16 = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cpts : DWORD;
-            apts : array[0..0] of POINTL;
-         end;
-       PEMRPOLYBEZIERTO16 = ^EMRPOLYBEZIERTO16;
-       EMRPOLYLINETO16 = record
-            emr : EMR;
-            rclBounds : RECTL;
-            cpts : DWORD;
-            apts : array[0..0] of POINTL;
-         end;
-       PEMRPOLYLINETO16 = ^EMRPOLYLINETO16;
-       EMRPOLYPOLYLINE = record
-            emr : EMR;
-            rclBounds : RECTL;
-            nPolys : DWORD;
-            cptl : DWORD;
-            aPolyCounts : array[0..0] of DWORD;
-            aptl : array[0..0] of POINTL;
-         end;
-       PEMRPOLYPOLYLINE = ^EMRPOLYPOLYLINE;
-       EMRPOLYPOLYGON = record
-            emr : EMR;
-            rclBounds : RECTL;
-            nPolys : DWORD;
-            cptl : DWORD;
-            aPolyCounts : array[0..(1)-1] of DWORD;
-            aptl : array[0..(1)-1] of POINTL;
-         end;
-       PEMRPOLYPOLYGON = ^EMRPOLYPOLYGON;
-       EMRPOLYPOLYLINE16 = record
-            emr : EMR;
-            rclBounds : RECTL;
-            nPolys : DWORD;
-            cpts : DWORD;
-            aPolyCounts : array[0..(1)-1] of DWORD;
-            apts : array[0..(1)-1] of POINTS;
-         end;
-       PEMRPOLYPOLYLINE16 = ^EMRPOLYPOLYLINE16;
-       EMRPOLYPOLYGON16 = record
-            emr : EMR;
-            rclBounds : RECTL;
-            nPolys : DWORD;
-            cpts : DWORD;
-            aPolyCounts : array[0..(1)-1] of DWORD;
-            apts : array[0..(1)-1] of POINTS;
-         end;
-       PEMRPOLYPOLYGON16 = ^EMRPOLYPOLYGON16;
-       EMRPOLYTEXTOUTA = record
-            emr : EMR;
-            rclBounds : RECTL;
-            iGraphicsMode : DWORD;
-            exScale : FLOAT;
-            eyScale : FLOAT;
-            cStrings : LONG;
-            aemrtext : array[0..(1)-1] of EMRTEXT;
-         end;
-       PEMRPOLYTEXTOUTA = ^EMRPOLYTEXTOUTA;
-       EMRPOLYTEXTOUTW = record
-            emr : EMR;
-            rclBounds : RECTL;
-            iGraphicsMode : DWORD;
-            exScale : FLOAT;
-            eyScale : FLOAT;
-            cStrings : LONG;
-            aemrtext : array[0..(1)-1] of EMRTEXT;
-         end;
-       PEMRPOLYTEXTOUTW = ^EMRPOLYTEXTOUTW;
-       EMRRESIZEPALETTE = record
-            emr : EMR;
-            ihPal : DWORD;
-            cEntries : DWORD;
-         end;
-       PEMRRESIZEPALETTE = ^EMRRESIZEPALETTE;
-       EMRRESTOREDC = record
-            emr : EMR;
-            iRelative : LONG;
-         end;
-       PEMRRESTOREDC = ^EMRRESTOREDC;
-       EMRROUNDRECT = record
-            emr : EMR;
-            rclBox : RECTL;
-            szlCorner : SIZEL;
-         end;
-       PEMRROUNDRECT = ^EMRROUNDRECT;
-       EMRSCALEVIEWPORTEXTEX = record
-            emr : EMR;
-            xNum : LONG;
-            xDenom : LONG;
-            yNum : LONG;
-            yDenom : LONG;
-         end;
-       PEMRSCALEVIEWPORTEXTEX = ^EMRSCALEVIEWPORTEXTEX;
-       EMRSCALEWINDOWEXTEX = record
-            emr : EMR;
-            xNum : LONG;
-            xDenom : LONG;
-            yNum : LONG;
-            yDenom : LONG;
-         end;
-       PEMRSCALEWINDOWEXTEX = ^EMRSCALEWINDOWEXTEX;
-       EMRSELECTCOLORSPACE = record
-            emr : EMR;
-            ihCS : DWORD;
-         end;
-       PEMRSELECTCOLORSPACE = ^EMRSELECTCOLORSPACE;
-       EMRDELETECOLORSPACE = record
-            emr : EMR;
-            ihCS : DWORD;
-         end;
-       PEMRDELETECOLORSPACE = ^EMRDELETECOLORSPACE;
-       EMRSELECTOBJECT = record
-            emr : EMR;
-            ihObject : DWORD;
-         end;
-       PEMRSELECTOBJECT = ^EMRSELECTOBJECT;
-       EMRDELETEOBJECT = record
-            emr : EMR;
-            ihObject : DWORD;
-         end;
-       PEMRDELETEOBJECT = ^EMRDELETEOBJECT;
-       EMRSELECTPALETTE = record
-            emr : EMR;
-            ihPal : DWORD;
-         end;
-       PEMRSELECTPALETTE = ^EMRSELECTPALETTE;
-       EMRSETARCDIRECTION = record
-            emr : EMR;
-            iArcDirection : DWORD;
-         end;
-       PEMRSETARCDIRECTION = ^EMRSETARCDIRECTION;
-            emr : EMR;
-            iArcDirection : DWORD;
-         end;
-       EMRSETBKCOLOR = record
-            emr : EMR;
-            crColor : COLORREF;
-         end;
-       PEMRSETBKCOLOR = ^EMRSETBKCOLOR;
-       EMRSETTEXTCOLOR = record
-            emr : EMR;
-            crColor : COLORREF;
-         end;
-       PEMRSETTEXTCOLOR = ^EMRSETTEXTCOLOR;
-       EMRSETCOLORADJUSTMENT = record
-            emr : EMR;
-            ColorAdjustment : COLORADJUSTMENT;
-         end;
-       PEMRSETCOLORADJUSTMENT = ^EMRSETCOLORADJUSTMENT;
-       EMRSETDIBITSTODEVICE = record
-            emr : EMR;
-            rclBounds : RECTL;
-            xDest : LONG;
-            yDest : LONG;
-            xSrc : LONG;
-            ySrc : LONG;
-            cxSrc : LONG;
-            cySrc : LONG;
-            offBmiSrc : DWORD;
-            cbBmiSrc : DWORD;
-            offBitsSrc : DWORD;
-            cbBitsSrc : DWORD;
-            iUsageSrc : DWORD;
-            iStartScan : DWORD;
-            cScans : DWORD;
-         end;
-       PEMRSETDIBITSTODEVICE = ^EMRSETDIBITSTODEVICE;
-       EMRSETMAPPERFLAGS = record
-            emr : EMR;
-            dwFlags : DWORD;
-         end;
-       PEMRSETMAPPERFLAGS = ^EMRSETMAPPERFLAGS;
-       EMRSETMITERLIMIT = record
-            emr : EMR;
-            eMiterLimit : FLOAT;
-         end;
-       PEMRSETMITERLIMIT = ^EMRSETMITERLIMIT;
-       EMRSETPALETTEENTRIES = record
-            emr : EMR;
-            ihPal : DWORD;
-            iStart : DWORD;
-            cEntries : DWORD;
-            aPalEntries : array[0..0] of PALETTEENTRY;
-         end;
-       PEMRSETPALETTEENTRIES = ^EMRSETPALETTEENTRIES;
-       EMRSETPIXELV = record
-            emr : EMR;
-            ptlPixel : POINTL;
-            crColor : COLORREF;
-         end;
-       PEMRSETPIXELV = ^record
-            emr : EMR;
-            ptlPixel : POINTL;
-            crColor : COLORREF;
-         end;
-       EMRSETVIEWPORTEXTEX = record
-            emr : EMR;
-            szlExtent : SIZEL;
-         end;
-       PEMRSETVIEWPORTEXTEX = ^EMRSETVIEWPORTEXTEX;
-       EMRSETWINDOWEXTEX = record
-            emr : EMR;
-            szlExtent : SIZEL;
-         end;
-       PEMRSETWINDOWEXTEX = ^EMRSETWINDOWEXTEX;
-       EMRSETVIEWPORTORGEX = record
-            emr : EMR;
-            ptlOrigin : POINTL;
-         end;
-       PEMRSETVIEWPORTORGEX = ^EMRSETVIEWPORTORGEX;
-       EMRSETWINDOWORGEX = record
-            emr : EMR;
-            ptlOrigin : POINTL;
-         end;
-       PEMRSETWINDOWORGEX = ^EMRSETWINDOWORGEX;
-       EMRSETBRUSHORGEX = record
-            emr : EMR;
-            ptlOrigin : POINTL;
-         end;
-       PEMRSETBRUSHORGEX = ^EMRSETBRUSHORGEX;
-       EMRSETWORLDTRANSFORM = record
-            emr : EMR;
-            xform : XFORM;
-         end;
-       PEMRSETWORLDTRANSFORM = ^EMRSETWORLDTRANSFORM;
-       EMRSTRETCHBLT = record
-            emr : EMR;
-            rclBounds : RECTL;
-            xDest : LONG;
-            yDest : LONG;
-            cxDest : LONG;
-            cyDest : LONG;
-            dwRop : DWORD;
-            xSrc : LONG;
-            ySrc : LONG;
-            xformSrc : XFORM;
-            crBkColorSrc : COLORREF;
-            iUsageSrc : DWORD;
-            offBmiSrc : DWORD;
-            cbBmiSrc : DWORD;
-            offBitsSrc : DWORD;
-            cbBitsSrc : DWORD;
-            cxSrc : LONG;
-            cySrc : LONG;
-         end;
-       PEMRSTRETCHBLT = ^EMRSTRETCHBLT;
-       EMRSTRETCHDIBITS = record
-            emr : EMR;
-            rclBounds : RECTL;
-            xDest : LONG;
-            yDest : LONG;
-            xSrc : LONG;
-            ySrc : LONG;
-            cxSrc : LONG;
-            cySrc : LONG;
-            offBmiSrc : DWORD;
-            cbBmiSrc : DWORD;
-            offBitsSrc : DWORD;
-            cbBitsSrc : DWORD;
-            iUsageSrc : DWORD;
-            dwRop : DWORD;
-            cxDest : LONG;
-            cyDest : LONG;
-         end;
-       PEMRSTRETCHDIBITS = ^EMRSTRETCHDIBITS;
-       EMRABORTPATH = record
-            emr : EMR;
-         end;
-       PEMRABORTPATH = ^EMRABORTPATH;
-       EMRBEGINPATH = record
-            emr : EMR;
-         end;
-       PEMRBEGINPATH = ^EMRBEGINPATH;
-       EMRENDPATH = record
-            emr : EMR;
-         end;
-       PEMRENDPATH = ^EMRENDPATH;
-       EMRCLOSEFIGURE = record
-            emr : EMR;
-         end;
-       PEMRCLOSEFIGURE = ^EMRCLOSEFIGURE;
-       EMRFLATTENPATH = record
-            emr : EMR;
-         end;
-       PEMRFLATTENPATH = ^EMRFLATTENPATH;
-       EMRWIDENPATH = record
-            emr : EMR;
-         end;
-       PEMRWIDENPATH = ^EMRWIDENPATH;
-       EMRSETMETARGN = record
-            emr : EMR;
-         end;
-       PEMRSETMETARGN = ^EMRSETMETARGN;
-       EMRSAVEDC = record
-            emr : EMR;
-         end;
-       PEMRSAVEDC = ^EMRSAVEDC;
-       EMRREALIZEPALETTE = record
-            emr : EMR;
-         end;
-       PEMRREALIZEPALETTE = ^EMRREALIZEPALETTE;
-       EMRSELECTCLIPPATH = record
-            emr : EMR;
-            iMode : DWORD;
-         end;
-       PEMRSELECTCLIPPATH = ^EMRSELECTCLIPPATH;
-       EMRSETBKMODE = record
-            emr : EMR;
-            iMode : DWORD;
-         end;
-       PEMRSETBKMODE = ^EMRSETBKMODE;
-       EMRSETMAPMODE = record
-            emr : EMR;
-            iMode : DWORD;
-         end;
-       PEMRSETMAPMODE = ^EMRSETMAPMODE;
-       EMRSETPOLYFILLMODE = record
-            emr : EMR;
-            iMode : DWORD;
-         end;
-       PEMRSETPOLYFILLMODE = ^EMRSETPOLYFILLMODE;
-       EMRSETROP2 = record
-            emr : EMR;
-            iMode : DWORD;
-         end;
-       PEMRSETROP2 = ^EMRSETROP2;
-       EMRSETSTRETCHBLTMODE = record
-            emr : EMR;
-            iMode : DWORD;
-         end;
-       PEMRSETSTRETCHBLTMODE = ^EMRSETSTRETCHBLTMODE;
-       EMRSETTEXTALIGN = record
-            emr : EMR;
-            iMode : DWORD;
-         end;
-       PEMRSETTEXTALIGN = ^EMRSETTEXTALIGN;
-       EMRENABLEICM = record
-            emr : EMR;
-            iMode : DWORD;
-         end;
-       PEMRENABLEICM = ^EMRENABLEICM;
-       NMHDR = record
-            hwndFrom : HWND;
-            idFrom : UINT;
-            code : UINT;
-         end;
-       ENCORRECTTEXT = record
-            nmhdr : NMHDR;
-            chrg : CHARRANGE;
-            seltyp : WORD;
-         end;
-       ENDROPFILES = record
-            nmhdr : NMHDR;
-            hDrop : HANDLE;
-            cp : LONG;
-            fProtected : WINBOOL;
-         end;
-       ENSAVECLIPBOARD = record
-            nmhdr : NMHDR;
-            cObjectCount : LONG;
-            cch : LONG;
-         end;
-       ENOLEOPFAILED = record
-            nmhdr : NMHDR;
-            iob : LONG;
-            lOper : LONG;
-            hr : HRESULT;
-         end;
-       ENHMETAHEADER = record
-            iType : DWORD;
-            nSize : DWORD;
-            rclBounds : RECTL;
-            rclFrame : RECTL;
-            dSignature : DWORD;
-            nVersion : DWORD;
-            nBytes : DWORD;
-            nRecords : DWORD;
-            nHandles : WORD;
-            sReserved : WORD;
-            nDescription : DWORD;
-            offDescription : DWORD;
-            nPalEntries : DWORD;
-            szlDevice : SIZEL;
-            szlMillimeters : SIZEL;
-         end;
-       LPENHMETAHEADER = ^ENHMETAHEADER;
-       ENHMETARECORD = record
-            iType : DWORD;
-            nSize : DWORD;
-            dParm : array[0..0] of DWORD;
-         end;
-       ENPROTECTED = record
-            nmhdr : NMHDR;
-            msg : UINT;
-            wParam : WPARAM;
-            lParam : LPARAM;
-            chrg : CHARRANGE;
-         end;
-       SERVICE_STATUS = record
-            dwServiceType : DWORD;
-            dwCurrentState : DWORD;
-            dwControlsAccepted : DWORD;
-            dwWin32ExitCode : DWORD;
-            dwServiceSpecificExitCode : DWORD;
-            dwCheckPoint : DWORD;
-            dwWaitHint : DWORD;
-         end;
-       LPSERVICE_STATUS = ^SERVICE_STATUS;
-       ENUM_SERVICE_STATUS = record
-            lpServiceName : LPTSTR;
-            lpDisplayName : LPTSTR;
-            ServiceStatus : SERVICE_STATUS;
-         end;
-       LPENUM_SERVICE_STATUS = ^ENUM_SERVICE_STATUS;
-       ENUMLOGFONT = record
-            elfLogFont : LOGFONT;
-            elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
-            elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
-         end;
-       ENUMLOGFONTEX = record
-            elfLogFont : LOGFONT;
-            elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
-            elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
-            elfScript : array[0..(LF_FACESIZE)-1] of BCHAR;
-         end;
-    { }
-    { Then follow:}
-    { }
-    { TCHAR SourceName[] }
-    { TCHAR Computername[] }
-    { SID   UserSid }
-    { TCHAR Strings[] }
-    { BYTE  Data[] }
-    { CHAR  Pad[] }
-    { DWORD Length; }
-    { }
-       EVENTLOGRECORD = record
-            Length : DWORD;
-            Reserved : DWORD;
-            RecordNumber : DWORD;
-            TimeGenerated : DWORD;
-            TimeWritten : DWORD;
-            EventID : DWORD;
-            EventType : WORD;
-            NumStrings : WORD;
-            EventCategory : WORD;
-            ReservedFlags : WORD;
-            ClosingRecordNumber : DWORD;
-            StringOffset : DWORD;
-            UserSidLength : DWORD;
-            UserSidOffset : DWORD;
-            DataLength : DWORD;
-            DataOffset : DWORD;
-         end;
-       EVENTMSG = record
-            message : UINT;
-            paramL : UINT;
-            paramH : UINT;
-            time : DWORD;
-            hwnd : HWND;
-         end;
-       EXCEPTION_POINTERS = record
-            ExceptionRecord : PEXCEPTION_RECORD;
-            ContextRecord : PCONTEXT;
-         end;
-       PEXCEPTION_POINTERS = ^EXCEPTION_POINTERS;
-       LPEXCEPTION_POINTERS = ^EXCEPTION_POINTERS;
-       EXT_BUTTON = record
-            idCommand : WORD;
-            idsHelp : WORD;
-            fsStyle : WORD;
-         end;
-       LPEXT_BUTTON = ^EXT_BUTTON;
-       FILTERKEYS = record
-            cbSize : UINT;
-            dwFlags : DWORD;
-            iWaitMSec : DWORD;
-            iDelayMSec : DWORD;
-            iRepeatMSec : DWORD;
-            iBounceMSec : DWORD;
-         end;
-       FIND_NAME_BUFFER = record
-            length : UCHAR;
-            access_control : UCHAR;
-            frame_control : UCHAR;
-            destination_addr : array[0..5] of UCHAR;
-            source_addr : array[0..5] of UCHAR;
-            routing_info : array[0..17] of UCHAR;
-         end;
-       FIND_NAME_HEADER = record
-            node_count : WORD;
-            reserved : UCHAR;
-            unique_group : UCHAR;
-         end;
-       FINDREPLACE = record
-            lStructSize : DWORD;
-            hwndOwner : HWND;
-            hInstance : HINSTANCE;
-            Flags : DWORD;
-            lpstrFindWhat : LPTSTR;
-            lpstrReplaceWith : LPTSTR;
-            wFindWhatLen : WORD;
-            wReplaceWithLen : WORD;
-            lCustData : LPARAM;
-            lpfnHook : LPFRHOOKPROC;
-            lpTemplateName : LPCTSTR;
-         end;
-       LPFINDREPLACE = ^FINDREPLACE;
-       FINDTEXT = record
-            chrg : CHARRANGE;
-            lpstrText : LPSTR;
-         end;
-       FINDTEXTEX = record
-            chrg : CHARRANGE;
-            lpstrText : LPSTR;
-            chrgText : CHARRANGE;
-         end;
-       FMS_GETDRIVEINFO = record
-            dwTotalSpace : DWORD;
-            dwFreeSpace : DWORD;
-            szPath : array[0..(260)-1] of TCHAR;
-            szVolume : array[0..(14)-1] of TCHAR;
-            szShare : array[0..(128)-1] of TCHAR;
-         end;
-       FMS_GETFILESEL = record
-            ftTime : FILETIME;
-            dwSize : DWORD;
-            bAttr : BYTE;
-            szName : array[0..(260)-1] of TCHAR;
-         end;
-       FMS_LOAD = record
-            dwSize : DWORD;
-            szMenuName : array[0..(MENU_TEXT_LEN)-1] of TCHAR;
-            hMenu : HMENU;
-            wMenuDelta : UINT;
-         end;
-       FMS_TOOLBARLOAD = record
-            dwSize : DWORD;
-            lpButtons : LPEXT_BUTTON;
-            cButtons : WORD;
-            cBitmaps : WORD;
-            idBitmap : WORD;
-            hBitmap : HBITMAP;
-         end;
-       FOCUS_EVENT_RECORD = record
-            bSetFocus : WINBOOL;
-         end;
-       FORM_INFO_1 = record
-            Flags : DWORD;
-            pName : LPTSTR;
-            Size : SIZEL;
-            ImageableArea : RECTL;
-         end;
-       FORMAT_PARAMETERS = record
-            MediaType : MEDIA_TYPE;
-            StartCylinderNumber : DWORD;
-            EndCylinderNumber : DWORD;
-            StartHeadNumber : DWORD;
-            EndHeadNumber : DWORD;
-         end;
-       FORMATRANGE = record
-            hdc : HDC;
-            hdcTarget : HDC;
-            rc : RECT;
-            rcPage : RECT;
-            chrg : CHARRANGE;
-         end;
-       GCP_RESULTS = record
-            lStructSize : DWORD;
-            lpOutString : LPTSTR;
-            lpOrder : ^UINT;
-            lpDx : ^INT;
-            lpCaretPos : ^INT;
-            lpClass : LPTSTR;
-            lpGlyphs : ^UINT;
-            nGlyphs : UINT;
-            nMaxFit : UINT;
-         end;
-       LPGCP_RESULTS = ^GCP_RESULTS;
-       GENERIC_MAPPING = record
-            GenericRead : ACCESS_MASK;
-            GenericWrite : ACCESS_MASK;
-            GenericExecute : ACCESS_MASK;
-            GenericAll : ACCESS_MASK;
-         end;
-       PGENERIC_MAPPING = ^GENERIC_MAPPING;
-       GLYPHMETRICS = record
-            gmBlackBoxX : UINT;
-            gmBlackBoxY : UINT;
-            gmptGlyphOrigin : POINT;
-            gmCellIncX : integer;
-            gmCellIncY : integer;
-         end;
-       LPGLYPHMETRICS = ^GLYPHMETRICS;
-       HANDLETABLE = record
-            objectHandle : array[0..0] of HGDIOBJ;
-         end;
-       LPHANDLETABLE = ^HANDLETABLE;
-       HD_HITTESTINFO = record
-            pt : POINT;
-            flags : UINT;
-            iItem : longint;
-         end;
-       HD_ITEM = record
-            mask : UINT;
-            cxy : longint;
-            pszText : LPTSTR;
-            hbm : HBITMAP;
-            cchTextMax : longint;
-            fmt : longint;
-            lParam : LPARAM;
-         end;
-       WINDOWPOS = record
-            hwnd : HWND;
-            hwndInsertAfter : HWND;
-            x : longint;
-            y : longint;
-            cx : longint;
-            cy : longint;
-            flags : UINT;
-         end;
-       PWINDOWPOS = ^WINDOWPOS;
-       LPWINDOWPOS = ^WINDOWPOS;
-       HD_LAYOUT = record
-            prc : ^RECT;
-            pwpos : ^WINDOWPOS;
-         end;
-       HD_NOTIFY = record
-            hdr : NMHDR;
-            iItem : longint;
-            iButton : longint;
-            pitem : ^HD_ITEM;
-         end;
-       HELPINFO = record
-            cbSize : UINT;
-            iContextType : longint;
-            iCtrlId : longint;
-            hItemHandle : HANDLE;
-            dwContextId : DWORD;
-            MousePos : POINT;
-         end;
-       LPHELPINFO = ^HELPINFO;
-       HELPWININFO = record
-            wStructSize : longint;
-            x : longint;
-            y : longint;
-            dx : longint;
-            dy : longint;
-            wMax : longint;
-            rgchMember : array[0..(2)-1] of TCHAR;
-         end;
-       HIGHCONTRAST = record
-            cbSize : UINT;
-            dwFlags : DWORD;
-            lpszDefaultScheme : LPTSTR;
-         end;
-       LPHIGHCONTRAST = ^HIGHCONTRAST;
-       HSZPAIR = record
-            hszSvc : HSZ;
-            hszTopic : HSZ;
-         end;
-       ICONINFO = record
-            fIcon : WINBOOL;
-            xHotspot : DWORD;
-            yHotspot : DWORD;
-            hbmMask : HBITMAP;
-            hbmColor : HBITMAP;
-         end;
-       PICONINFO = ^ICONINFO;
-       ICONMETRICS = record
-            cbSize : UINT;
-            iHorzSpacing : longint;
-            iVertSpacing : longint;
-            iTitleWrap : longint;
-            lfFont : LOGFONT;
-         end;
-       LPICONMETRICS = ^ICONMETRICS;
-       IMAGEINFO = record
-            hbmImage : HBITMAP;
-            hbmMask : HBITMAP;
-            Unused1 : longint;
-            Unused2 : longint;
-            rcImage : RECT;
-         end;
-       KEY_EVENT_RECORD = record
-            bKeyDown : WINBOOL;
-            wRepeatCount : WORD;
-            wVirtualKeyCode : WORD;
-            wVirtualScanCode : WORD;
-            uChar : record
-                case longint of
-                   0 : ( UnicodeChar:WCHAR );
-                   1 : ( AsciiChar:CHAR );
-              end;
-            dwControlKeyState : DWORD;
-         end;
-       MOUSE_EVENT_RECORD = record
-            dwMousePosition : COORD;
-            dwButtonState : DWORD;
-            dwControlKeyState : DWORD;
-            dwEventFlags : DWORD;
-         end;
-       WINDOW_BUFFER_SIZE_RECORD = record
-            dwSize : COORD;
-         end;
-       MENU_EVENT_RECORD = record
-            dwCommandId : UINT;
-         end;
-       PMENU_EVENT_RECORD = ^MENU_EVENT_RECORD;
-       INPUT_RECORD = record
-            EventType : WORD;
-            Event : record
-                case longint of
-                   0 : ( KeyEvent:KEY_EVENT_RECORD );
-                   1 : ( MouseEvent:MOUSE_EVENT_RECORD );
-                   2 : ( WindowBufferSizeEvent:WINDOW_BUFFER_SIZE_RECORD );
-                   3 : ( MenuEvent:MENU_EVENT_RECORD );
-                   4 : ( FocusEvent:FOCUS_EVENT_RECORD );
-              end;
-         end;
-       PINPUT_RECORD = ^INPUT_RECORD;
-       SYSTEMTIME = record
-            wYear : WORD;
-            wMonth : WORD;
-            wDayOfWeek : WORD;
-            wDay : WORD;
-            wHour : WORD;
-            wMinute : WORD;
-            wSecond : WORD;
-            wMilliseconds : WORD;
-         end;
-       LPSYSTEMTIME = ^SYSTEMTIME;
-       JOB_INFO_1 = record
-            JobId : DWORD;
-            pPrinterName : LPTSTR;
-            pMachineName : LPTSTR;
-            pUserName : LPTSTR;
-            pDocument : LPTSTR;
-            pDatatype : LPTSTR;
-            pStatus : LPTSTR;
-            Status : DWORD;
-            Priority : DWORD;
-            Position : DWORD;
-            TotalPages : DWORD;
-            PagesPrinted : DWORD;
-            Submitted : SYSTEMTIME;
-         end;
-       SID_IDENTIFIER_AUTHORITY = record
-            Value : array[0..5] of BYTE;
-         end;
-       PSID_IDENTIFIER_AUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
-       LPSID_IDENTIFIER_AUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
-       SID = record
-            Revision : BYTE;
-            SubAuthorityCount : BYTE;
-            IdentifierAuthority : SID_IDENTIFIER_AUTHORITY;
-            SubAuthority : array[0..(ANYSIZE_ARRAY)-1] of DWORD;
-         end;
-       PSID = ^SID;
-       SECURITY_DESCRIPTOR_CONTROL = WORD;
-       PSECURITY_DESCRIPTOR_CONTROL = ^WORD;
-       SECURITY_DESCRIPTOR = record
-            Revision : BYTE;
-            Sbz1 : BYTE;
-            Control : SECURITY_DESCRIPTOR_CONTROL;
-            Owner : PSID;
-            Group : PSID;
-            Sacl : PACL;
-            Dacl : PACL;
-         end;
-       PSECURITY_DESCRIPTOR = ^SECURITY_DESCRIPTOR;
-       JOB_INFO_2 = record
-            JobId : DWORD;
-            pPrinterName : LPTSTR;
-            pMachineName : LPTSTR;
-            pUserName : LPTSTR;
-            pDocument : LPTSTR;
-            pNotifyName : LPTSTR;
-            pDatatype : LPTSTR;
-            pPrintProcessor : LPTSTR;
-            pParameters : LPTSTR;
-            pDriverName : LPTSTR;
-            pDevMode : LPDEVMODE;
-            pStatus : LPTSTR;
-            pSecurityDescriptor : PSECURITY_DESCRIPTOR;
-            Status : DWORD;
-            Priority : DWORD;
-            Position : DWORD;
-            StartTime : DWORD;
-            UntilTime : DWORD;
-            TotalPages : DWORD;
-            Size : DWORD;
-            Submitted : SYSTEMTIME;
-            Time : DWORD;
-            PagesPrinted : DWORD;
-         end;
-       KERNINGPAIR = record
-            wFirst : WORD;
-            wSecond : WORD;
-            iKernAmount : longint;
-         end;
-       LPKERNINGPAIR = ^KERNINGPAIR;
-       LANA_ENUM = record
-            length : UCHAR;
-            lana : array[0..(MAX_LANA)-1] of UCHAR;
-         end;
-       LOCALESIGNATURE = record
-            lsUsb : array[0..(4)-1] of DWORD;
-            lsCsbDefault : array[0..(2)-1] of DWORD;
-            lsCsbSupported : array[0..(2)-1] of DWORD;
-         end;
-       LOCALGROUP_MEMBERS_INFO_0 = record
-            lgrmi0_sid : PSID;
-         end;
-       LOCALGROUP_MEMBERS_INFO_3 = record
-            lgrmi3_domainandname : LPWSTR;
-         end;
-       FXPT16DOT16 = longint;
-       LPFXPT16DOT16 = ^longint;
-       LUID = LARGE_INTEGER;
-       PLUID = ^LARGE_INTEGER;
-       LUID_AND_ATTRIBUTES = record
-            Luid : LUID;
-            Attributes : DWORD;
-         end;
-       LUID_AND_ATTRIBUTES_ARRAY = array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
-       PLUID_AND_ATTRIBUTES_ARRAY = ^LUID_AND_ATTRIBUTES_ARRAY;
-       LV_COLUMN = record
-            mask : UINT;
-            fmt : longint;
-            cx : longint;
-            pszText : LPTSTR;
-            cchTextMax : longint;
-            iSubItem : longint;
-         end;
-       LV_ITEM = record
-            mask : UINT;
-            iItem : longint;
-            iSubItem : longint;
-            state : UINT;
-            stateMask : UINT;
-            pszText : LPTSTR;
-            cchTextMax : longint;
-            iImage : longint;
-            lParam : LPARAM;
-         end;
-       LV_DISPINFO = record
-            hdr : NMHDR;
-            item : LV_ITEM;
-         end;
-       LV_FINDINFO = record
-            flags : UINT;
-            psz : LPCTSTR;
-            lParam : LPARAM;
-            pt : POINT;
-            vkDirection : UINT;
-         end;
-       LV_HITTESTINFO = record
-            pt : POINT;
-            flags : UINT;
-            iItem : longint;
-         end;
-       LV_KEYDOWN = record
-            hdr : NMHDR;
-            wVKey : WORD;
-            flags : UINT;
-         end;
-       MAT2 = record
-            eM11 : FIXED;
-            eM12 : FIXED;
-            eM21 : FIXED;
-            eM22 : FIXED;
-         end;
-       MDICREATESTRUCT = record
-            szClass : LPCTSTR;
-            szTitle : LPCTSTR;
-            hOwner : HANDLE;
-            x : longint;
-            y : longint;
-            cx : longint;
-            cy : longint;
-            style : DWORD;
-            lParam : LPARAM;
-         end;
-       MEASUREITEMSTRUCT = record
-            CtlType : UINT;
-            CtlID : UINT;
-            itemID : UINT;
-            itemWidth : UINT;
-            itemHeight : UINT;
-            itemData : DWORD;
-         end;
-       MEMORY_BASIC_INFORMATION = record
-            BaseAddress : PVOID;
-            AllocationBase : PVOID;
-            AllocationProtect : DWORD;
-            RegionSize : DWORD;
-            State : DWORD;
-            Protect : DWORD;
-            Type : DWORD;
-         end;
-       PMEMORY_BASIC_INFORMATION = ^MEMORY_BASIC_INFORMATION;
-       MEMORYSTATUS = record
-            dwLength : DWORD;
-            dwMemoryLoad : DWORD;
-            dwTotalPhys : DWORD;
-            dwAvailPhys : DWORD;
-            dwTotalPageFile : DWORD;
-            dwAvailPageFile : DWORD;
-            dwTotalVirtual : DWORD;
-            dwAvailVirtual : DWORD;
-         end;
-       LPMEMORYSTATUS = ^MEMORYSTATUS;
-       MENUEX_TEMPLATE_HEADER = record
-            wVersion : WORD;
-            wOffset : WORD;
-            dwHelpId : DWORD;
-         end;
-       MENUEX_TEMPLATE_ITEM = record
-            dwType : DWORD;
-            dwState : DWORD;
-            uId : UINT;
-            bResInfo : BYTE;
-            szText : array[0..(1)-1] of WCHAR;
-            dwHelpId : DWORD;
-         end;
-       MENUITEMINFO = record
-            cbSize : UINT;
-            fMask : UINT;
-            fType : UINT;
-            fState : UINT;
-            wID : UINT;
-            hSubMenu : HMENU;
-            hbmpChecked : HBITMAP;
-            hbmpUnchecked : HBITMAP;
-            dwItemData : DWORD;
-            dwTypeData : LPTSTR;
-            cch : UINT;
-         end;
-       LPMENUITEMINFO = ^MENUITEMINFO;
-       LPCMENUITEMINFO = ^MENUITEMINFO;
-       MENUITEMTEMPLATE = record
-            mtOption : WORD;
-            mtID : WORD;
-            mtString : array[0..0] of WCHAR;
-         end;
-       MENUITEMTEMPLATEHEADER = record
-            versionNumber : WORD;
-            offset : WORD;
-         end;
-       MENUTEMPLATE = VOID;
-       LPMENUTEMPLATE = ^VOID;
-       METAFILEPICT = record
-            mm : LONG;
-            xExt : LONG;
-            yExt : LONG;
-            hMF : HMETAFILE;
-         end;
-       METAHEADER = record
-            mtType : WORD;
-            mtHeaderSize : WORD;
-            mtVersion : WORD;
-            mtSize : DWORD;
-            mtNoObjects : WORD;
-            mtMaxRecord : DWORD;
-            mtNoParameters : WORD;
-         end;
-       METARECORD = record
-            rdSize : DWORD;
-            rdFunction : WORD;
-            rdParm : array[0..0] of WORD;
-         end;
-       LPMETARECORD = ^METARECORD;
-       MINIMIZEDMETRICS = record
-            cbSize : UINT;
-            iWidth : longint;
-            iHorzGap : longint;
-            iVertGap : longint;
-            iArrange : longint;
-         end;
-       LPMINIMIZEDMETRICS = ^MINIMIZEDMETRICS;
-       MINMAXINFO = record
-            ptReserved : POINT;
-            ptMaxSize : POINT;
-            ptMaxPosition : POINT;
-            ptMinTrackSize : POINT;
-            ptMaxTrackSize : POINT;
-         end;
-       MODEMDEVCAPS = record
-            dwActualSize : DWORD;
-            dwRequiredSize : DWORD;
-            dwDevSpecificOffset : DWORD;
-            dwDevSpecificSize : DWORD;
-            dwModemProviderVersion : DWORD;
-            dwModemManufacturerOffset : DWORD;
-            dwModemManufacturerSize : DWORD;
-            dwModemModelOffset : DWORD;
-            dwModemModelSize : DWORD;
-            dwModemVersionOffset : DWORD;
-            dwModemVersionSize : DWORD;
-            dwDialOptions : DWORD;
-            dwCallSetupFailTimer : DWORD;
-            dwInactivityTimeout : DWORD;
-            dwSpeakerVolume : DWORD;
-            dwSpeakerMode : DWORD;
-            dwModemOptions : DWORD;
-            dwMaxDTERate : DWORD;
-            dwMaxDCERate : DWORD;
-            abVariablePortion : array[0..0] of BYTE;
-         end;
-       PMODEMDEVCAPS = ^MODEMDEVCAPS;
-       LPMODEMDEVCAPS = ^MODEMDEVCAPS;
-       MODEMSETTINGS = record
-            dwActualSize : DWORD;
-            dwRequiredSize : DWORD;
-            dwDevSpecificOffset : DWORD;
-            dwDevSpecificSize : DWORD;
-            dwCallSetupFailTimer : DWORD;
-            dwInactivityTimeout : DWORD;
-            dwSpeakerVolume : DWORD;
-            dwSpeakerMode : DWORD;
-            dwPreferredModemOptions : DWORD;
-            dwNegotiatedModemOptions : DWORD;
-            dwNegotiatedDCERate : DWORD;
-            abVariablePortion : array[0..0] of BYTE;
-         end;
-       PMODEMSETTINGS = ^MODEMSETTINGS;
-       LPMODEMSETTINGS = ^MODEMSETTINGS;
-       MONCBSTRUCT = record
-            cb : UINT;
-            dwTime : DWORD;
-            hTask : HANDLE;
-            dwRet : DWORD;
-            wType : UINT;
-            wFmt : UINT;
-            hConv : HCONV;
-            hsz1 : HSZ;
-            hsz2 : HSZ;
-            hData : HDDEDATA;
-            dwData1 : DWORD;
-            dwData2 : DWORD;
-            cc : CONVCONTEXT;
-            cbData : DWORD;
-            Data : array[0..7] of DWORD;
-         end;
-       MONCONVSTRUCT = record
-            cb : UINT;
-            fConnect : WINBOOL;
-            dwTime : DWORD;
-            hTask : HANDLE;
-            hszSvc : HSZ;
-            hszTopic : HSZ;
-            hConvClient : HCONV;
-            hConvServer : HCONV;
-         end;
-       MONERRSTRUCT = record
-            cb : UINT;
-            wLastError : UINT;
-            dwTime : DWORD;
-            hTask : HANDLE;
-         end;
-       MONHSZSTRUCT = record
-            cb : UINT;
-            fsAction : WINBOOL;
-            dwTime : DWORD;
-            hsz : HSZ;
-            hTask : HANDLE;
-            str : array[0..(1)-1] of TCHAR;
-         end;
-       MONITOR_INFO_1 = record
-            pName : LPTSTR;
-         end;
-       MONITOR_INFO_2 = record
-            pName : LPTSTR;
-            pEnvironment : LPTSTR;
-            pDLLName : LPTSTR;
-         end;
-       MONLINKSTRUCT = record
-            cb : UINT;
-            dwTime : DWORD;
-            hTask : HANDLE;
-            fEstablished : WINBOOL;
-            fNoData : WINBOOL;
-            hszSvc : HSZ;
-            hszTopic : HSZ;
-            hszItem : HSZ;
-            wFmt : UINT;
-            fServer : WINBOOL;
-            hConvServer : HCONV;
-            hConvClient : HCONV;
-         end;
-       MONMSGSTRUCT = record
-            cb : UINT;
-            hwndTo : HWND;
-            dwTime : DWORD;
-            hTask : HANDLE;
-            wMsg : UINT;
-            wParam : WPARAM;
-            lParam : LPARAM;
-            dmhd : DDEML_MSG_HOOK_DATA;
-         end;
-       MOUSEHOOKSTRUCT = record
-            pt : POINT;
-            hwnd : HWND;
-            wHitTestCode : UINT;
-            dwExtraInfo : DWORD;
-         end;
-       MOUSEKEYS = record
-            cbSize : DWORD;
-            dwFlags : DWORD;
-            iMaxSpeed : DWORD;
-            iTimeToMaxSpeed : DWORD;
-            iCtrlSpeed : DWORD;
-            dwReserved1 : DWORD;
-            dwReserved2 : DWORD;
-         end;
-       MSG = record
-            hwnd : HWND;
-            message : UINT;
-            wParam : WPARAM;
-            lParam : LPARAM;
-            time : DWORD;
-            pt : POINT;
-         end;
-       LPMSG = ^MSG;
-       MSGBOXCALLBACK = procedure(lpHelpInfo:LPHELPINFO);
-       MSGBOXPARAMS = record
-            cbSize : UINT;
-            hwndOwner : HWND;
-            hInstance : HINSTANCE;
-            lpszText : LPCSTR;
-            lpszCaption : LPCSTR;
-            dwStyle : DWORD;
-            lpszIcon : LPCSTR;
-            dwContextHelpId : DWORD;
-            lpfnMsgBoxCallback : MSGBOXCALLBACK;
-            dwLanguageId : DWORD;
-         end;
-       PMSGBOXPARAMS = ^MSGBOXPARAMS;
-       LPMSGBOXPARAMS = ^MSGBOXPARAMS;
-       MSGFILTER = record
-            nmhdr : NMHDR;
-            msg : UINT;
-            wParam : WPARAM;
-            lParam : LPARAM;
-         end;
-       MULTIKEYHELP = record
-            mkSize : DWORD;
-            mkKeylist : TCHAR;
-            szKeyphrase : array[0..(1)-1] of TCHAR;
-         end;
-       NAME_BUFFER = record
-            name : array[0..(NCBNAMSZ)-1] of UCHAR;
-            name_num : UCHAR;
-            name_flags : UCHAR;
-         end;
-       NCB = record
-            ncb_command : UCHAR;
-            ncb_retcode : UCHAR;
-            ncb_lsn : UCHAR;
-            ncb_num : UCHAR;
-            ncb_buffer : PUCHAR;
-            ncb_length : WORD;
-            ncb_callname : array[0..(NCBNAMSZ)-1] of UCHAR;
-            ncb_name : array[0..(NCBNAMSZ)-1] of UCHAR;
-            ncb_rto : UCHAR;
-            ncb_sto : UCHAR;
-            ncb_post : procedure(_para1:^*);
-            ncb_lana_num : UCHAR;
-            ncb_cmd_cplt : UCHAR;
-            ncb_reserve : array[0..(10)-1] of UCHAR;
-            ncb_event : HANDLE;
-         end;
-       NCCALCSIZE_PARAMS = record
-            rgrc : array[0..(3)-1] of RECT;
-            lppos : PWINDOWPOS;
-         end;
-       NDDESHAREINFO = record
-            lRevision : LONG;
-            lpszShareName : LPTSTR;
-            lShareType : LONG;
-            lpszAppTopicList : LPTSTR;
-            fSharedFlag : LONG;
-            fService : LONG;
-            fStartAppFlag : LONG;
-            nCmdShow : LONG;
-            qModifyId : array[0..(2)-1] of LONG;
-            cNumItems : LONG;
-            lpszItemList : LPTSTR;
-         end;
-       NETRESOURCE = record
-            dwScope : DWORD;
-            dwType : DWORD;
-            dwDisplayType : DWORD;
-            dwUsage : DWORD;
-            lpLocalName : LPTSTR;
-            lpRemoteName : LPTSTR;
-            lpComment : LPTSTR;
-            lpProvider : LPTSTR;
-         end;
-       LPNETRESOURCE = ^NETRESOURCE;
-       NEWCPLINFO = record
-            dwSize : DWORD;
-            dwFlags : DWORD;
-            dwHelpContext : DWORD;
-            lData : LONG;
-            hIcon : HICON;
-            szName : array[0..31] of TCHAR;
-            szInfo : array[0..(63] of TCHAR;
-            szHelpFile : array[0..127] of TCHAR;
-         end;
-       NEWTEXTMETRIC = record
-            tmHeight : LONG;
-            tmAscent : LONG;
-            tmDescent : LONG;
-            tmInternalLeading : LONG;
-            tmExternalLeading : LONG;
-            tmAveCharWidth : LONG;
-            tmMaxCharWidth : LONG;
-            tmWeight : LONG;
-            tmOverhang : LONG;
-            tmDigitizedAspectX : LONG;
-            tmDigitizedAspectY : LONG;
-            tmFirstChar : BCHAR;
-            tmLastChar : BCHAR;
-            tmDefaultChar : BCHAR;
-            tmBreakChar : BCHAR;
-            tmItalic : BYTE;
-            tmUnderlined : BYTE;
-            tmStruckOut : BYTE;
-            tmPitchAndFamily : BYTE;
-            tmCharSet : BYTE;
-            ntmFlags : DWORD;
-            ntmSizeEM : UINT;
-            ntmCellHeight : UINT;
-            ntmAvgWidth : UINT;
-         end;
-       NEWTEXTMETRICEX = record
-            ntmentm : NEWTEXTMETRIC;
-            ntmeFontSignature : FONTSIGNATURE;
-         end;
-       NM_LISTVIEW = record
-            hdr : NMHDR;
-            iItem : longint;
-            iSubItem : longint;
-            uNewState : UINT;
-            uOldState : UINT;
-            uChanged : UINT;
-            ptAction : POINT;
-            lParam : LPARAM;
-         end;
-       HTREEITEM = ^*;
-       TV_ITEM = record
-            mask : UINT;
-            hItem : HTREEITEM;
-            state : UINT;
-            stateMask : UINT;
-            pszText : LPTSTR;
-            cchTextMax : longint;
-            iImage : longint;
-            iSelectedImage : longint;
-            cChildren : longint;
-            lParam : LPARAM;
-         end;
-       LPTV_ITEM = ^TV_ITEM;
-       NM_TREEVIEW = record
-            hdr : NMHDR;
-            action : UINT;
-            itemOld : TV_ITEM;
-            itemNew : TV_ITEM;
-            ptDrag : POINT;
-         end;
-       LPNM_TREEVIEW = ^NM_TREEVIEW;
-       NM_UPDOWNW = record
-            hdr : NMHDR;
-            iPos : longint;
-            iDelta : longint;
-         end;
-       NONCLIENTMETRICS = record
-            cbSize : UINT;
-            iBorderWidth : longint;
-            iScrollWidth : longint;
-            iScrollHeight : longint;
-            iCaptionWidth : longint;
-            iCaptionHeight : longint;
-            lfCaptionFont : LOGFONT;
-            iSmCaptionWidth : longint;
-            iSmCaptionHeight : longint;
-            lfSmCaptionFont : LOGFONT;
-            iMenuWidth : longint;
-            iMenuHeight : longint;
-            lfMenuFont : LOGFONT;
-            lfStatusFont : LOGFONT;
-            lfMessageFont : LOGFONT;
-         end;
-       LPNONCLIENTMETRICS = ^NONCLIENTMETRICS;
-       SERVICE_ADDRESS = record
-            dwAddressType : DWORD;
-            dwAddressFlags : DWORD;
-            dwAddressLength : DWORD;
-            dwPrincipalLength : DWORD;
-            lpAddress : ^BYTE;
-            lpPrincipal : ^BYTE;
-         end;
-       SERVICE_ADDRESSES = record
-            dwAddressCount : DWORD;
-            Addresses : array[0..0] of SERVICE_ADDRESS;
-         end;
-       LPSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
-       GUID = record
-            Data1 : cardinal;
-            Data2 : word;
-            Data3 : word;
-            Data4 : array[0..7] of char;
-         end;
-       LPGUID = ^GUID;
-       CLSID = GUID;
-       LPCLSID = ^GUID;
-       SERVICE_INFO = record
-            lpServiceType : LPGUID;
-            lpServiceName : LPTSTR;
-            lpComment : LPTSTR;
-            lpLocale : LPTSTR;
-            dwDisplayHint : DWORD;
-            dwVersion : DWORD;
-            dwTime : DWORD;
-            lpMachineName : LPTSTR;
-            lpServiceAddress : LPSERVICE_ADDRESSES;
-            ServiceSpecificInfo : BLOB;
-         end;
-       NS_SERVICE_INFO = record
-            dwNameSpace : DWORD;
-            ServiceInfo : SERVICE_INFO;
-         end;
-       NUMBERFMT = record
-            NumDigits : UINT;
-            LeadingZero : UINT;
-            Grouping : UINT;
-            lpDecimalSep : LPTSTR;
-            lpThousandSep : LPTSTR;
-            NegativeOrder : UINT;
-         end;
-       OFSTRUCT = record
-            cBytes : BYTE;
-            fFixedDisk : BYTE;
-            nErrCode : WORD;
-            Reserved1 : WORD;
-            Reserved2 : WORD;
-            szPathName : array[0..(OFS_MAXPATHNAME)-1] of CHAR;
-         end;
-       LPOFSTRUCT = ^OFSTRUCT;
-       OPENFILENAME = record
-            lStructSize : DWORD;
-            hwndOwner : HWND;
-            hInstance : HINSTANCE;
-            lpstrFilter : LPCTSTR;
-            lpstrCustomFilter : LPTSTR;
-            nMaxCustFilter : DWORD;
-            nFilterIndex : DWORD;
-            lpstrFile : LPTSTR;
-            nMaxFile : DWORD;
-            lpstrFileTitle : LPTSTR;
-            nMaxFileTitle : DWORD;
-            lpstrInitialDir : LPCTSTR;
-            lpstrTitle : LPCTSTR;
-            Flags : DWORD;
-            nFileOffset : WORD;
-            nFileExtension : WORD;
-            lpstrDefExt : LPCTSTR;
-            lCustData : DWORD;
-            lpfnHook : LPOFNHOOKPROC;
-            lpTemplateName : LPCTSTR;
-         end;
-       LPOPENFILENAME = ^OPENFILENAME;
-       OFNOTIFY = record
-            hdr : NMHDR;
-            lpOFN : LPOPENFILENAME;
-            pszFile : LPTSTR;
-         end;
-       LPOFNOTIFY = ^OFNOTIFY;
-       OSVERSIONINFO = record
-            dwOSVersionInfoSize : DWORD;
-            dwMajorVersion : DWORD;
-            dwMinorVersion : DWORD;
-            dwBuildNumber : DWORD;
-            dwPlatformId : DWORD;
-            szCSDVersion : array[0..(128)-1] of TCHAR;
-         end;
-       POSVERSIONINFO = ^OSVERSIONINFO;
-       LPOSVERSIONINFO = ^OSVERSIONINFO;
-       TEXTMETRIC = record
-            tmHeight : LONG;
-            tmAscent : LONG;
-            tmDescent : LONG;
-            tmInternalLeading : LONG;
-            tmExternalLeading : LONG;
-            tmAveCharWidth : LONG;
-            tmMaxCharWidth : LONG;
-            tmWeight : LONG;
-            tmOverhang : LONG;
-            tmDigitizedAspectX : LONG;
-            tmDigitizedAspectY : LONG;
-            tmFirstChar : BCHAR;
-            tmLastChar : BCHAR;
-            tmDefaultChar : BCHAR;
-            tmBreakChar : BCHAR;
-            tmItalic : BYTE;
-            tmUnderlined : BYTE;
-            tmStruckOut : BYTE;
-            tmPitchAndFamily : BYTE;
-            tmCharSet : BYTE;
-         end;
-       LPTEXTMETRIC = ^TEXTMETRIC;
-       OUTLINETEXTMETRIC = record
-            otmSize : UINT;
-            otmTextMetrics : TEXTMETRIC;
-            otmFiller : BYTE;
-            otmPanoseNumber : PANOSE;
-            otmfsSelection : UINT;
-            otmfsType : UINT;
-            otmsCharSlopeRise : longint;
-            otmsCharSlopeRun : longint;
-            otmItalicAngle : longint;
-            otmEMSquare : UINT;
-            otmAscent : longint;
-            otmDescent : longint;
-            otmLineGap : UINT;
-            otmsCapEmHeight : UINT;
-            otmsXHeight : UINT;
-            otmrcFontBox : RECT;
-            otmMacAscent : longint;
-            otmMacDescent : longint;
-            otmMacLineGap : UINT;
-            otmusMinimumPPEM : UINT;
-            otmptSubscriptSize : POINT;
-            otmptSubscriptOffset : POINT;
-            otmptSuperscriptSize : POINT;
-            otmptSuperscriptOffset : POINT;
-            otmsStrikeoutSize : UINT;
-            otmsStrikeoutPosition : longint;
-            otmsUnderscoreSize : longint;
-            otmsUnderscorePosition : longint;
-            otmpFamilyName : PSTR;
-            otmpFaceName : PSTR;
-            otmpStyleName : PSTR;
-            otmpFullName : PSTR;
-         end;
-       LPOUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
-       OVERLAPPED = record
-            Internal : DWORD;
-            InternalHigh : DWORD;
-            Offset : DWORD;
-            OffsetHigh : DWORD;
-            hEvent : HANDLE;
-         end;
-       LPOVERLAPPED = ^OVERLAPPED;
-       PAGESETUPDLG = record
-            lStructSize : DWORD;
-            hwndOwner : HWND;
-            hDevMode : HGLOBAL;
-            hDevNames : HGLOBAL;
-            Flags : DWORD;
-            ptPaperSize : POINT;
-            rtMinMargin : RECT;
-            rtMargin : RECT;
-            hInstance : HINSTANCE;
-            lCustData : LPARAM;
-            lpfnPageSetupHook : LPPAGESETUPHOOK;
-            lpfnPagePaintHook : LPPAGEPAINTHOOK;
-            lpPageSetupTemplateName : LPCTSTR;
-            hPageSetupTemplate : HGLOBAL;
-         end;
-       LPPAGESETUPDLG = ^PAGESETUPDLG;
-       PAINTSTRUCT = record
-            hdc : HDC;
-            fErase : WINBOOL;
-            rcPaint : RECT;
-            fRestore : WINBOOL;
-            fIncUpdate : WINBOOL;
-            rgbReserved : array[0..(32)-1] of BYTE;
-         end;
-       LPPAINTSTRUCT = ^PAINTSTRUCT;
-       PARAFORMAT = record
-            cbSize : UINT;
-            dwMask : DWORD;
-            wNumbering : WORD;
-            wReserved : WORD;
-            dxStartIndent : LONG;
-            dxRightIndent : LONG;
-            dxOffset : LONG;
-            wAlignment : WORD;
-            cTabCount : SHORT;
-            rgxTabs : array[0..(MAX_TAB_STOPS)-1] of LONG;
-         end;
-       PERF_COUNTER_BLOCK = record
-            ByteLength : DWORD;
-         end;
-       PERF_COUNTER_DEFINITION = record
-            ByteLength : DWORD;
-            CounterNameTitleIndex : DWORD;
-            CounterNameTitle : LPWSTR;
-            CounterHelpTitleIndex : DWORD;
-            CounterHelpTitle : LPWSTR;
-            DefaultScale : DWORD;
-            DetailLevel : DWORD;
-            CounterType : DWORD;
-            CounterSize : DWORD;
-            CounterOffset : DWORD;
-         end;
-       PERF_DATA_BLOCK = record
-            Signature : array[0..(4)-1] of WCHAR;
-            LittleEndian : DWORD;
-            Version : DWORD;
-            Revision : DWORD;
-            TotalByteLength : DWORD;
-            HeaderLength : DWORD;
-            NumObjectTypes : DWORD;
-            DefaultObject : DWORD;
-            SystemTime : SYSTEMTIME;
-            PerfTime : LARGE_INTEGER;
-            PerfFreq : LARGE_INTEGER;
-            PerfTime100nSec : LARGE_INTEGER;
-            SystemNameLength : DWORD;
-            SystemNameOffset : DWORD;
-         end;
-       PERF_INSTANCE_DEFINITION = record
-            ByteLength : DWORD;
-            ParentObjectTitleIndex : DWORD;
-            ParentObjectInstance : DWORD;
-            UniqueID : DWORD;
-            NameOffset : DWORD;
-            NameLength : DWORD;
-         end;
-       PERF_OBJECT_TYPE = record
-            TotalByteLength : DWORD;
-            DefinitionLength : DWORD;
-            HeaderLength : DWORD;
-            ObjectNameTitleIndex : DWORD;
-            ObjectNameTitle : LPWSTR;
-            ObjectHelpTitleIndex : DWORD;
-            ObjectHelpTitle : LPWSTR;
-            DetailLevel : DWORD;
-            NumCounters : DWORD;
-            DefaultCounter : DWORD;
-            NumInstances : DWORD;
-            CodePage : DWORD;
-            PerfTime : LARGE_INTEGER;
-            PerfFreq : LARGE_INTEGER;
-         end;
-       POLYTEXT = record
-            x : longint;
-            y : longint;
-            n : UINT;
-            lpstr : LPCTSTR;
-            uiFlags : UINT;
-            rcl : RECT;
-            pdx : ^longint;
-         end;
-       PORT_INFO_1 = record
-            pName : LPTSTR;
-         end;
-       PORT_INFO_2 = record
-            pPortName : LPSTR;
-            pMonitorName : LPSTR;
-            pDescription : LPSTR;
-            fPortType : DWORD;
-            Reserved : DWORD;
-         end;
-       PREVENT_MEDIA_REMOVAL = record
-            PreventMediaRemoval : BOOLEAN;
-         end;
-       PRINTDLG = record
-            lStructSize : DWORD;
-            hwndOwner : HWND;
-            hDevMode : HANDLE;
-            hDevNames : HANDLE;
-            hDC : HDC;
-            Flags : DWORD;
-            nFromPage : WORD;
-            nToPage : WORD;
-            nMinPage : WORD;
-            nMaxPage : WORD;
-            nCopies : WORD;
-            hInstance : HINSTANCE;
-            lCustData : DWORD;
-            lpfnPrintHook : LPPRINTHOOKPROC;
-            lpfnSetupHook : LPSETUPHOOKPROC;
-            lpPrintTemplateName : LPCTSTR;
-            lpSetupTemplateName : LPCTSTR;
-            hPrintTemplate : HANDLE;
-            hSetupTemplate : HANDLE;
-         end;
-       LPPRINTDLG = ^PRINTDLG;
-       PRINTER_DEFAULTS = record
-            pDatatype : LPTSTR;
-            pDevMode : LPDEVMODE;
-            DesiredAccess : ACCESS_MASK;
-         end;
-       PRINTER_INFO_1 = record
-            Flags : DWORD;
-            pDescription : LPTSTR;
-            pName : LPTSTR;
-            pComment : LPTSTR;
-         end;
-       PRINTER_INFO_2 = record
-            pServerName : LPTSTR;
-            pPrinterName : LPTSTR;
-            pShareName : LPTSTR;
-            pPortName : LPTSTR;
-            pDriverName : LPTSTR;
-            pComment : LPTSTR;
-            pLocation : LPTSTR;
-            pDevMode : LPDEVMODE;
-            pSepFile : LPTSTR;
-            pPrintProcessor : LPTSTR;
-            pDatatype : LPTSTR;
-            pParameters : LPTSTR;
-            pSecurityDescriptor : PSECURITY_DESCRIPTOR;
-            Attributes : DWORD;
-            Priority : DWORD;
-            DefaultPriority : DWORD;
-            StartTime : DWORD;
-            UntilTime : DWORD;
-            Status : DWORD;
-            cJobs : DWORD;
-            AveragePPM : DWORD;
-         end;
-       PRINTER_INFO_3 = record
-            pSecurityDescriptor : PSECURITY_DESCRIPTOR;
-         end;
-       PRINTER_INFO_4 = record
-            pPrinterName : LPTSTR;
-            pServerName : LPTSTR;
-            Attributes : DWORD;
-         end;
-       PRINTER_INFO_5 = record
-            pPrinterName : LPTSTR;
-            pPortName : LPTSTR;
-            Attributes : DWORD;
-            DeviceNotSelectedTimeout : DWORD;
-            TransmissionRetryTimeout : DWORD;
-         end;
-       PRINTER_NOTIFY_INFO_DATA = record
-            Type : WORD;
-            Field : WORD;
-            Reserved : DWORD;
-            Id : DWORD;
-            NotifyData : record
-                case longint of
-                   0 : ( adwData:array[0..(2)-1] of DWORD );
-                   1 : ( Data:record
-                        cbBuf : DWORD;
-                        pBuf : LPVOID;
-                     end );
-              end;
-         end;
-       PRINTER_NOTIFY_INFO = record
-            Version : DWORD;
-            Flags : DWORD;
-            Count : DWORD;
-            aData : array[0..(1)-1] of PRINTER_NOTIFY_INFO_DATA;
-         end;
-       PRINTER_NOTIFY_OPTIONS_TYPE = record
-            Type : WORD;
-            Reserved0 : WORD;
-            Reserved1 : DWORD;
-            Reserved2 : DWORD;
-            Count : DWORD;
-            pFields : PWORD;
-         end;
-       PPRINTER_NOTIFY_OPTIONS_TYPE = ^PRINTER_NOTIFY_OPTIONS_TYPE;
-       PRINTER_NOTIFY_OPTIONS = record
-            Version : DWORD;
-            Flags : DWORD;
-            Count : DWORD;
-            pTypes : PPRINTER_NOTIFY_OPTIONS_TYPE;
-         end;
-       PRINTPROCESSOR_INFO_1 = record
-            pName : LPTSTR;
-         end;
-       PRIVILEGE_SET = record
-            PrivilegeCount : DWORD;
-            Control : DWORD;
-            Privilege : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
-         end;
-       PPRIVILEGE_SET = ^PRIVILEGE_SET;
-       LPPRIVILEGE_SET = ^PRIVILEGE_SET;
-       PROCESS_HEAPENTRY = record
-            lpData : PVOID;
-            cbData : DWORD;
-            cbOverhead : BYTE;
-            iRegionIndex : BYTE;
-            wFlags : WORD;
-            dwCommittedSize : DWORD;
-            dwUnCommittedSize : DWORD;
-            lpFirstBlock : LPVOID;
-            lpLastBlock : LPVOID;
-            hMem : HANDLE;
-         end;
-       LPPROCESS_HEAP_ENTRY = ^PROCESS_HEAP_ENTRY;
-       PROCESS_INFORMATION = record
-            hProcess : HANDLE;
-            hThread : HANDLE;
-            dwProcessId : DWORD;
-            dwThreadId : DWORD;
-         end;
-       LPPROCESS_INFORMATION = ^PROCESS_INFORMATION;
-       LPFNPSPCALLBACK = function(_para1:HWND; _para2:UINT; _para3:LPVOID):UINT;
-       PROPSHEETPAGE = record
-            dwSize : DWORD;
-            dwFlags : DWORD;
-            hInstance : HINSTANCE;
-            u1 : record
-                case longint of
-                   0 : ( pszTemplate:LPCTSTR );
-                   1 : ( pResource:LPCDLGTEMPLATE );
-              end;
-            u2 : record
-                case longint of
-                   0 : ( hIcon:HICON );
-                   1 : ( pszIcon:LPCTSTR );
-              end;
-            pszTitle : LPCTSTR;
-            pfnDlgProc : DLGPROC;
-            lParam : LPARAM;
-            pfnCallback : LPFNPSPCALLBACK;
-            pcRefParent : ^UINT;
-         end;
-       LPPROPSHEETPAGE = ^PROPSHEETPAGE;
-       LPCPROPSHEETPAGE = ^PROPSHEETPAGE;
-       HPROPSHEETPAGE = ^*;
-       PROPSHEETHEADER = record
-            dwSize : DWORD;
-            dwFlags : DWORD;
-            hwndParent : HWND;
-            hInstance : HINSTANCE;
-            u1 : record
-                case longint of
-                   0 : ( hIcon:HICON );
-                   1 : ( pszIcon:LPCTSTR );
-              end;
-            pszCaption : LPCTSTR;
-            nPages : UINT;
-            u2 : record
-                case longint of
-                   0 : ( nStartPage:UINT );
-                   1 : ( pStartPage:LPCTSTR );
-              end;
-            u3 : record
-                case longint of
-                   0 : ( ppsp:LPCPROPSHEETPAGE );
-                   1 : ( phpage:^HPROPSHEETPAGE );
-              end;
-            pfnCallback : PFNPROPSHEETCALLBACK;
-         end;
-       LPPROPSHEETHEADER = ^PROPSHEETHEADER;
-       LPCPROPSHEETHEADER = ^PROPSHEETHEADER;
-    { PropertySheet callbacks}
-       LPFNADDPROPSHEETPAGE = function(_para1:HPROPSHEETPAGE; _para2:LPARAM):WINBOOL;
-       LPFNADDPROPSHEETPAGES = function(_para1:LPVOID; _para2:LPFNADDPROPSHEETPAGE; _para3:LPARAM):WINBOOL;
-       PROTOCOL_INFO = record
-            dwServiceFlags : DWORD;
-            iAddressFamily : INT;
-            iMaxSockAddr : INT;
-            iMinSockAddr : INT;
-            iSocketType : INT;
-            iProtocol : INT;
-            dwMessageSize : DWORD;
-            lpProtocol : LPTSTR;
-         end;
-       PROVIDOR_INFO_1 = record
-            pName : LPTSTR;
-            pEnvironment : LPTSTR;
-            pDLLName : LPTSTR;
-         end;
-       PSHNOTIFY = record
-            hdr : NMHDR;
-            lParam : LPARAM;
-         end;
-       LPPSHNOTIFY = ^PSHNOTIFY;
-       PUNCTUATION = record
-            iSize : UINT;
-            szPunctuation : LPSTR;
-         end;
-       QUERY_SERVICE_CONFIG = record
-            dwServiceType : DWORD;
-            dwStartType : DWORD;
-            dwErrorControl : DWORD;
-            lpBinaryPathName : LPTSTR;
-            lpLoadOrderGroup : LPTSTR;
-            dwTagId : DWORD;
-            lpDependencies : LPTSTR;
-            lpServiceStartName : LPTSTR;
-            lpDisplayName : LPTSTR;
-         end;
-       LPQUERY_SERVICE_CONFIG = ^QUERY_SERVICE_CONFIG;
-       QUERY_SERVICE_LOCK_STATUS = record
-            fIsLocked : DWORD;
-            lpLockOwner : LPTSTR;
-            dwLockDuration : DWORD;
-         end;
-       LPQUERY_SERVICE_LOCK_STATUS = ^QUERY_SERVICE_LOCK_STATUS;
-       RASAMB = record
-            dwSize : DWORD;
-            dwError : DWORD;
-            szNetBiosError : array[0..((NETBIOS_NAME_LEN) + (1))-1] of TCHAR;
-            bLana : BYTE;
-         end;
-       RASCONN = record
-            dwSize : DWORD;
-            hrasconn : HRASCONN;
-            szEntryName : array[0..((RAS_MaxEntryName) + (1))-1] of TCHAR;
-            szDeviceType : array[0..((RAS_MaxDeviceType) + (1))-1] of CHAR;
-            szDeviceName : array[0..((RAS_MaxDeviceName) + (1))-1] of CHAR;
-         end;
-       RASCONNSTATUS = record
-            dwSize : DWORD;
-            rasconnstate : RASCONNSTATE;
-            dwError : DWORD;
-            szDeviceType : array[0..((RAS_MaxDeviceType) + (1))-1] of TCHAR;
-            szDeviceName : array[0..((RAS_MaxDeviceName) + (1))-1] of TCHAR;
-         end;
-       RASDIALEXTENSIONS = record
-            dwSize : DWORD;
-            dwfOptions : DWORD;
-            hwndParent : HWND;
-            reserved : DWORD;
-         end;
-       RASDIALPARAMS = record
-            dwSize : DWORD;
-            szEntryName : array[0..((RAS_MaxEntryName) + (1))-1] of TCHAR;
-            szPhoneNumber : array[0..((RAS_MaxPhoneNumber) + (1))-1] of TCHAR;
-            szCallbackNumber : array[0..((RAS_MaxCallbackNumber) + (1))-1] of TCHAR;
-            szUserName : array[0..((UNLEN) + (1))-1] of TCHAR;
-            szPassword : array[0..((PWLEN) + (1))-1] of TCHAR;
-            szDomain : array[0..((DNLEN) + (1))-1] of TCHAR;
-         end;
-       RASENTRYNAME = record
-            dwSize : DWORD;
-            szEntryName : array[0..((RAS_MaxEntryName) + (1))-1] of TCHAR;
-         end;
-       RASPPPIP = record
-            dwSize : DWORD;
-            dwError : DWORD;
-            szIpAddress : array[0..((RAS_MaxIpAddress) + (1))-1] of TCHAR;
-         end;
-       RASPPPIPX = record
-            dwSize : DWORD;
-            dwError : DWORD;
-            szIpxAddress : array[0..((RAS_MaxIpxAddress) + (1))-1] of TCHAR;
-         end;
-       RASPPPNBF = record
-            dwSize : DWORD;
-            dwError : DWORD;
-            dwNetBiosError : DWORD;
-            szNetBiosError : array[0..((NETBIOS_NAME_LEN) + (1))-1] of TCHAR;
-            szWorkstationName : array[0..((NETBIOS_NAME_LEN) + (1))-1] of TCHAR;
-            bLana : BYTE;
-         end;
-       RASTERIZER_STATUS = record
-            nSize : integer;
-            wFlags : integer;
-            nLanguageID : integer;
-         end;
-       LPRASTERIZER_STATUS = ^RASTERIZER_STATUS;
-       REASSIGN_BLOCKS = record
-            Reserved : WORD;
-            Count : WORD;
-            BlockNumber : array[0..(1)-1] of DWORD;
-         end;
-       REMOTE_NAME_INFO = record
-            lpUniversalName : LPTSTR;
-            lpConnectionName : LPTSTR;
-            lpRemainingPath : LPTSTR;
-         end;
-    { TODO: OLE}
-    {typedef struct _reobject { }
-    {  DWORD  cbStruct;           }
-    {  LONG   cp;                 }
-    {  CLSID  clsid;              }
-    {  LPOLEOBJECT      poleobj;  }
-    {  LPSTORAGE        pstg;     }
-    {  LPOLECLIENTSITE  polesite; }
-    {  SIZEL  sizel;              }
-    {  DWORD  dvaspect;           }
-    {  DWORD  dwFlags;            }
-    {  DWORD  dwUser;             }
-    {} REOBJECT; }
-       REPASTESPECIAL = record
-            dwAspect : DWORD;
-            dwParam : DWORD;
-         end;
-       REQRESIZE = record
-            nmhdr : NMHDR;
-            rc : RECT;
-         end;
-       RGNDATAHEADER = record
-            dwSize : DWORD;
-            iType : DWORD;
-            nCount : DWORD;
-            nRgnSize : DWORD;
-            rcBound : RECT;
-         end;
-       RGNDATA = record
-            rdh : RGNDATAHEADER;
-            Buffer : array[0..(1)-1] of char;
-         end;
-       LPRGNDATA = ^RGNDATA;
-       SCROLLINFO = record
-            cbSize : UINT;
-            fMask : UINT;
-            nMin : longint;
-            nMax : longint;
-            nPage : UINT;
-            nPos : longint;
-            nTrackPos : longint;
-         end;
-       LPSCROLLINFO = ^SCROLLINFO;
-       LPCSCROLLINFO = ^SCROLLINFO;
-       SECURITY_ATTRIBUTES = record
-            nLength : DWORD;
-            lpSecurityDescriptor : LPVOID;
-            bInheritHandle : WINBOOL;
-         end;
-       LPSECURITY_ATTRIBUTES = ^SECURITY_ATTRIBUTES;
-       SECURITY_INFORMATION = DWORD;
-       PSECURITY_INFORMATION = ^DWORD;
-       SELCHANGE = record
-            nmhdr : NMHDR;
-            chrg : CHARRANGE;
-            seltyp : WORD;
-         end;
-       SERIALKEYS = record
-            cbSize : DWORD;
-            dwFlags : DWORD;
-            lpszActivePort : LPSTR;
-            lpszPort : LPSTR;
-            iBaudRate : DWORD;
-            iPortState : DWORD;
-         end;
-       LPSERIALKEYS = ^SERIALKEYS;
-       SERVICE_TABLE_ENTRY = record
-            lpServiceName : LPTSTR;
-            lpServiceProc : LPSERVICE_MAIN_FUNCTION;
-         end;
-       LPSERVICE_TABLE_ENTRY = ^SERVICE_TABLE_ENTRY;
-       SERVICE_TYPE_VALUE_ABS = record
-            dwNameSpace : DWORD;
-            dwValueType : DWORD;
-            dwValueSize : DWORD;
-            lpValueName : LPTSTR;
-            lpValue : PVOID;
-         end;
-       SERVICE_TYPE_INFO_ABS = record
-            lpTypeName : LPTSTR;
-            dwValueCount : DWORD;
-            Values : array[0..(1)-1] of SERVICE_TYPE_VALUE_ABS;
-         end;
-       SESSION_BUFFER = record
-            lsn : UCHAR;
-            state : UCHAR;
-            local_name : array[0..(NCBNAMSZ)-1] of UCHAR;
-            remote_name : array[0..(NCBNAMSZ)-1] of UCHAR;
-            rcvs_outstanding : UCHAR;
-            sends_outstanding : UCHAR;
-         end;
-       SESSION_HEADER = record
-            sess_name : UCHAR;
-            num_sess : UCHAR;
-            rcv_dg_outstanding : UCHAR;
-            rcv_any_outstanding : UCHAR;
-         end;
-       SET_PARTITION_INFORMATION = record
-            PartitionType : BYTE;
-         end;
-       SHFILEINFO = record
-            hIcon : HICON;
-            iIcon : longint;
-            dwAttributes : DWORD;
-            szDisplayName : array[0..(MAX_PATH)-1] of char;
-            szTypeName : array[0..(80)-1] of char;
-         end;
-       FILEOP_FLAGS = WORD;
-       SHFILEOPSTRUCT = record
-            hwnd : HWND;
-            wFunc : UINT;
-            pFrom : LPCSTR;
-            pTo : LPCSTR;
-            fFlags : FILEOP_FLAGS;
-            fAnyOperationsAborted : WINBOOL;
-            hNameMappings : LPVOID;
-            lpszProgressTitle : LPCSTR;
-         end;
-       LPSHFILEOPSTRUCT = ^SHFILEOPSTRUCT;
-       SHNAMEMAPPING = record
-            pszOldPath : LPSTR;
-            pszNewPath : LPSTR;
-            cchOldPath : longint;
-            cchNewPath : longint;
-         end;
-       LPSHNAMEMAPPING = ^SHNAMEMAPPING;
-       SID_AND_ATTRIBUTES = record
-            Sid : PSID;
-            Attributes : DWORD;
-         end;
-       SID_AND_ATTRIBUTES_ARRAY = array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES;
-       PSID_AND_ATTRIBUTES_ARRAY = ^SID_AND_ATTRIBUTES_ARRAY;
-       SINGLE_LIST_ENTRY = record
-            Next : ^*;
-         end;
-       SOUNDSENTRY = record
-            cbSize : UINT;
-            dwFlags : DWORD;
-            iFSTextEffect : DWORD;
-            iFSTextEffectMSec : DWORD;
-            iFSTextEffectColorBits : DWORD;
-            iFSGrafEffect : DWORD;
-            iFSGrafEffectMSec : DWORD;
-            iFSGrafEffectColor : DWORD;
-            iWindowsEffect : DWORD;
-            iWindowsEffectMSec : DWORD;
-            lpszWindowsEffectDLL : LPTSTR;
-            iWindowsEffectOrdinal : DWORD;
-         end;
-       LPSOUNDSENTRY = ^SOUNDSENTRY;
-       STARTUPINFO = record
-            cb : DWORD;
-            lpReserved : LPTSTR;
-            lpDesktop : LPTSTR;
-            lpTitle : LPTSTR;
-            dwX : DWORD;
-            dwY : DWORD;
-            dwXSize : DWORD;
-            dwYSize : DWORD;
-            dwXCountChars : DWORD;
-            dwYCountChars : DWORD;
-            dwFillAttribute : DWORD;
-            dwFlags : DWORD;
-            wShowWindow : WORD;
-            cbReserved2 : WORD;
-            lpReserved2 : LPBYTE;
-            hStdInput : HANDLE;
-            hStdOutput : HANDLE;
-            hStdError : HANDLE;
-         end;
-       LPSTARTUPINFO = ^STARTUPINFO;
-       STICKYKEYS = record
-            cbSize : DWORD;
-            dwFlags : DWORD;
-         end;
-       LPSTICKYKEYS = ^STICKYKEYS;
-       STRRET = record
-            uType : UINT;
-            DUMMYUNIONNAME : record
-                case longint of
-                   0 : ( pOleStr:LPWSTR );
-                   1 : ( uOffset:UINT );
-                   2 : ( cStr:array[0..(MAX_PATH)-1] of char );
-              end;
-         end;
-       LPSTRRET = ^STRRET;
-       STYLEBUF = record
-            dwStyle : DWORD;
-            szDescription : array[0..(32)-1] of CHAR;
-         end;
-       LPSTYLEBUF = ^record
-            dwStyle : DWORD;
-            szDescription : array[0..(32)-1] of CHAR;
-         end;
-       STYLESTRUCT = record
-            styleOld : DWORD;
-            styleNew : DWORD;
-         end;
-       LPSTYLESTRUCT = ^record
-            styleOld : DWORD;
-            styleNew : DWORD;
-         end;
-       SYSTEM_AUDIT_ACE = record
-            Header : ACE_HEADER;
-            Mask : ACCESS_MASK;
-            SidStart : DWORD;
-         end;
-       SYSTEM_INFO = record
-            wProcessorArchitecture : WORD;
-            wReserved : WORD;
-            dwPageSize : DWORD;
-            lpMinimumApplicationAddress : LPVOID;
-            lpMaximumApplicationAddress : LPVOID;
-            dwActiveProcessorMask : DWORD;
-            dwNumberOfProcessors : DWORD;
-            dwProcessorType : DWORD;
-            dwAllocationGranularity : DWORD;
-            wProcessorLevel : WORD;
-            wProcessorRevision : WORD;
-         end;
-       LPSYSTEM_INFO = ^record
-            wProcessorArchitecture : WORD;
-            wReserved : WORD;
-            dwPageSize : DWORD;
-            lpMinimumApplicationAddress : LPVOID;
-            lpMaximumApplicationAddress : LPVOID;
-            dwActiveProcessorMask : DWORD;
-            dwNumberOfProcessors : DWORD;
-            dwProcessorType : DWORD;
-            dwAllocationGranularity : DWORD;
-            wProcessorLevel : WORD;
-            wProcessorRevision : WORD;
-         end;
-       SYSTEM_POWER_STATUS = record
-            ACLineStatus : BYTE;
-            BatteryFlag : BYTE;
-            BatteryLifePercent : BYTE;
-            Reserved1 : BYTE;
-            BatteryLifeTime : DWORD;
-            BatteryFullLifeTime : DWORD;
-         end;
-       LPSYSTEM_POWER_STATUS = ^*;
-       TAPE_ERASE = record
-            Type : ULONG;
-         end;
-       TAPE_GET_DRIVE_PARAMETERS = record
-            ECC : BOOLEAN;
-            Compression : BOOLEAN;
-            DataPadding : BOOLEAN;
-            ReportSetmarks : BOOLEAN;
-            DefaultBlockSize : ULONG;
-            MaximumBlockSize : ULONG;
-            MinimumBlockSize : ULONG;
-            MaximumPartitionCount : ULONG;
-            FeaturesLow : ULONG;
-            FeaturesHigh : ULONG;
-            EOTWarningZoneSize : ULONG;
-         end;
-       TAPE_GET_MEDIA_PARAMETERS = record
-            Capacity : LARGE_INTEGER;
-            Remaining : LARGE_INTEGER;
-            BlockSize : DWORD;
-            PartitionCount : DWORD;
-            WriteProtected : BOOLEAN;
-         end;
-       TAPE_GET_POSITION = record
-            Type : ULONG;
-            Partition : ULONG;
-            OffsetLow : ULONG;
-            OffsetHigh : ULONG;
-         end;
-       TAPE_PREPARE = record
-            Operation : ULONG;
-         end;
-       TAPE_SET_DRIVE_PARAMETERS = record
-            ECC : BOOLEAN;
-            Compression : BOOLEAN;
-            DataPadding : BOOLEAN;
-            ReportSetmarks : BOOLEAN;
-            EOTWarningZoneSize : ULONG;
-         end;
-       TAPE_SET_MEDIA_PARAMETERS = record
-            BlockSize : ULONG;
-         end;
-       TAPE_SET_POSITION = record
-            Method : ULONG;
-            Partition : ULONG;
-            OffsetLow : ULONG;
-            OffsetHigh : ULONG;
-         end;
-       TAPE_WRITE_MARKS = record
-            Type : ULONG;
-            Count : ULONG;
-         end;
-       TBADDBITMAP = record
-            hInst : HINSTANCE;
-            nID : UINT;
-         end;
-       LPTBADDBITMAP = ^record
-            hInst : HINSTANCE;
-            nID : UINT;
-         end;
-       TBBUTTON = record
-            iBitmap : longint;
-            idCommand : longint;
-            fsState : BYTE;
-            fsStyle : BYTE;
-            dwData : DWORD;
-            iString : longint;
-         end;
-       PTBBUTTON = ^record
-            iBitmap : longint;
-            idCommand : longint;
-            fsState : BYTE;
-            fsStyle : BYTE;
-            dwData : DWORD;
-            iString : longint;
-         end;
-       LPTBBUTTON = ^record
-            iBitmap : longint;
-            idCommand : longint;
-            fsState : BYTE;
-            fsStyle : BYTE;
-            dwData : DWORD;
-            iString : longint;
-         end;
-       LPCTBBUTTON = ^TBBUTTON;
-       TBNOTIFY = record
-            hdr : NMHDR;
-            iItem : longint;
-            tbButton : TBBUTTON;
-            cchText : longint;
-            pszText : LPTSTR;
-         end;
-       LPTBNOTIFY = ^record
-            hdr : NMHDR;
-            iItem : longint;
-            tbButton : TBBUTTON;
-            cchText : longint;
-            pszText : LPTSTR;
-         end;
-       TBSAVEPARAMS = record
-            hkr : HKEY;
-            pszSubKey : LPCTSTR;
-            pszValueName : LPCTSTR;
-         end;
-       TC_HITTESTINFO = record
-            pt : POINT;
-            flags : UINT;
-         end;
-       TC_ITEM = record
-            mask : UINT;
-            lpReserved1 : UINT;
-            lpReserved2 : UINT;
-            pszText : LPTSTR;
-            cchTextMax : longint;
-            iImage : longint;
-            lParam : LPARAM;
-         end;
-       TC_ITEMHEADER = record
-            mask : UINT;
-            lpReserved1 : UINT;
-            lpReserved2 : UINT;
-            pszText : LPTSTR;
-            cchTextMax : longint;
-            iImage : longint;
-         end;
-       TC_KEYDOWN = record
-            hdr : NMHDR;
-            wVKey : WORD;
-            flags : UINT;
-         end;
-       TEXTRANGE = record
-            chrg : CHARRANGE;
-            lpstrText : LPSTR;
-         end;
-       TIME_ZONE_INFORMATION = record
-            Bias : LONG;
-            StandardName : array[0..(32)-1] of WCHAR;
-            StandardDate : SYSTEMTIME;
-            StandardBias : LONG;
-            DaylightName : array[0..(32)-1] of WCHAR;
-            DaylightDate : SYSTEMTIME;
-            DaylightBias : LONG;
-         end;
-       LPTIME_ZONE_INFORMATION = ^record
-            Bias : LONG;
-            StandardName : array[0..(32)-1] of WCHAR;
-            StandardDate : SYSTEMTIME;
-            StandardBias : LONG;
-            DaylightName : array[0..(32)-1] of WCHAR;
-            DaylightDate : SYSTEMTIME;
-            DaylightBias : LONG;
-         end;
-       TOGGLEKEYS = record
-            cbSize : DWORD;
-            dwFlags : DWORD;
-         end;
-       TOKEN_SOURCE = record
-            SourceName : array[0..(8)-1] of CHAR;
-            SourceIdentifier : LUID;
-         end;
-       TOKEN_CONTROL = record
-            TokenId : LUID;
-            AuthenticationId : LUID;
-            ModifiedId : LUID;
-            TokenSource : TOKEN_SOURCE;
-         end;
-       TOKEN_DEFAULT_DACL = record
-            DefaultDacl : PACL;
-         end;
-       TOKEN_GROUPS = record
-            GroupCount : DWORD;
-            Groups : array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES;
-         end;
-       PTOKEN_GROUPS = ^record
-            GroupCount : DWORD;
-            Groups : array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES;
-         end;
-       LPTOKEN_GROUPS = ^record
-            GroupCount : DWORD;
-            Groups : array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES;
-         end;
-       TOKEN_OWNER = record
-            Owner : PSID;
-         end;
-       TOKEN_PRIMARY_GROUP = record
-            PrimaryGroup : PSID;
-         end;
-       TOKEN_PRIVILEGES = record
-            PrivilegeCount : DWORD;
-            Privileges : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
-         end;
-       PTOKEN_PRIVILEGES = ^record
-            PrivilegeCount : DWORD;
-            Privileges : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
-         end;
-       LPTOKEN_PRIVILEGES = ^record
-            PrivilegeCount : DWORD;
-            Privileges : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
-         end;
-       TOKEN_STATISTICS = record
-            TokenId : LUID;
-            AuthenticationId : LUID;
-            ExpirationTime : LARGE_INTEGER;
-            TokenType : TOKEN_TYPE;
-            ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
-            DynamicCharged : DWORD;
-            DynamicAvailable : DWORD;
-            GroupCount : DWORD;
-            PrivilegeCount : DWORD;
-            ModifiedId : LUID;
-         end;
-       TOKEN_USER = record
-            User : SID_AND_ATTRIBUTES;
-         end;
-       TOOLINFO = record
-            cbSize : UINT;
-            uFlags : UINT;
-            hwnd : HWND;
-            uId : UINT;
-            rect : RECT;
-            hinst : HINSTANCE;
-            lpszText : LPTSTR;
-         end;
-       PTOOLINFO = ^record
-            cbSize : UINT;
-            uFlags : UINT;
-            hwnd : HWND;
-            uId : UINT;
-            rect : RECT;
-            hinst : HINSTANCE;
-            lpszText : LPTSTR;
-         end;
-       LPTOOLINFO = ^record
-            cbSize : UINT;
-            uFlags : UINT;
-            hwnd : HWND;
-            uId : UINT;
-            rect : RECT;
-            hinst : HINSTANCE;
-            lpszText : LPTSTR;
-         end;
-       TOOLTIPTEXT = record
-            hdr : NMHDR;
-            lpszText : LPTSTR;
-            szText : array[0..(80)-1] of char;
-            hinst : HINSTANCE;
-            uFlags : UINT;
-         end;
-       LPTOOLTIPTEXT = ^record
-            hdr : NMHDR;
-            lpszText : LPTSTR;
-            szText : array[0..(80)-1] of char;
-            hinst : HINSTANCE;
-            uFlags : UINT;
-         end;
-       TPMPARAMS = record
-            cbSize : UINT;
-            rcExclude : RECT;
-         end;
-       LPTPMPARAMS = ^record
-            cbSize : UINT;
-            rcExclude : RECT;
-         end;
-       TRANSMIT_FILE_BUFFERS = record
-            Head : PVOID;
-            HeadLength : DWORD;
-            Tail : PVOID;
-            TailLength : DWORD;
-         end;
-       TTHITTESTINFO = record
-            hwnd : HWND;
-            pt : POINT;
-            ti : TOOLINFO;
-         end;
-       LPHITTESTINFO = ^record
-            hwnd : HWND;
-            pt : POINT;
-            ti : TOOLINFO;
-         end;
-       TTPOLYCURVE = record
-            wType : WORD;
-            cpfx : WORD;
-            apfx : array[0..(1)-1] of POINTFX;
-         end;
-       LPTTPOLYCURVE = ^record
-            wType : WORD;
-            cpfx : WORD;
-            apfx : array[0..(1)-1] of POINTFX;
-         end;
-       TTPOLYGONHEADER = record
-            cb : DWORD;
-            dwType : DWORD;
-            pfxStart : POINTFX;
-         end;
-       LPTTPOLYGONHEADER = ^record
-            cb : DWORD;
-            dwType : DWORD;
-            pfxStart : POINTFX;
-         end;
-       TV_DISPINFO = record
-            hdr : NMHDR;
-            item : TV_ITEM;
-         end;
-       TV_HITTESTINFO = record
-            pt : POINT;
-            flags : UINT;
-            hItem : HTREEITEM;
-         end;
-       LPTV_HITTESTINFO = ^record
-            pt : POINT;
-            flags : UINT;
-            hItem : HTREEITEM;
-         end;
-       TV_INSERTSTRUCT = record
-            hParent : HTREEITEM;
-            hInsertAfter : HTREEITEM;
-            item : TV_ITEM;
-         end;
-       LPTV_INSERTSTRUCT = ^record
-            hParent : HTREEITEM;
-            hInsertAfter : HTREEITEM;
-            item : TV_ITEM;
-         end;
-       TV_KEYDOWN = record
-            hdr : NMHDR;
-            wVKey : WORD;
-            flags : UINT;
-         end;
-       TV_SORTCB = record
-            hParent : HTREEITEM;
-            lpfnCompare : PFNTVCOMPARE;
-            lParam : LPARAM;
-         end;
-       LPTV_SORTCB = ^record
-            hParent : HTREEITEM;
-            lpfnCompare : PFNTVCOMPARE;
-            lParam : LPARAM;
-         end;
-       UDACCEL = record
-            nSec : UINT;
-            nInc : UINT;
-         end;
-       ULARGE_INTEGER = record
-            LowPart : DWORD;
-            HighPart : DWORD;
-         end;
-       PULARGE_INTEGER = ^record
-            LowPart : DWORD;
-            HighPart : DWORD;
-         end;
-       UNIVERSAL_NAME_INFO = record
-            lpUniversalName : LPTSTR;
-         end;
-       USEROBJECTFLAGS = record
-            fInherit : WINBOOL;
-            fReserved : WINBOOL;
-            dwFlags : DWORD;
-         end;
-       VALENT = record
-            ve_valuename : LPTSTR;
-            ve_valuelen : DWORD;
-            ve_valueptr : DWORD;
-            ve_type : DWORD;
-         end;
-       PVALENT = ^record
-            ve_valuename : LPTSTR;
-            ve_valuelen : DWORD;
-            ve_valueptr : DWORD;
-            ve_type : DWORD;
-         end;
-       VERIFY_INFORMATION = record
-            StartingOffset : LARGE_INTEGER;
-            Length : DWORD;
-         end;
-       VS_FIXEDFILEINFO = record
-            dwSignature : DWORD;
-            dwStrucVersion : DWORD;
-            dwFileVersionMS : DWORD;
-            dwFileVersionLS : DWORD;
-            dwProductVersionMS : DWORD;
-            dwProductVersionLS : DWORD;
-            dwFileFlagsMask : DWORD;
-            dwFileFlags : DWORD;
-            dwFileOS : DWORD;
-            dwFileType : DWORD;
-            dwFileSubtype : DWORD;
-            dwFileDateMS : DWORD;
-            dwFileDateLS : DWORD;
-         end;
-       WIN32_FIND_DATA = record
-            dwFileAttributes : DWORD;
-            ftCreationTime : FILETIME;
-            ftLastAccessTime : FILETIME;
-            ftLastWriteTime : FILETIME;
-            nFileSizeHigh : DWORD;
-            nFileSizeLow : DWORD;
-            dwReserved0 : DWORD;
-            dwReserved1 : DWORD;
-            cFileName : array[0..(MAX_PATH)-1] of TCHAR;
-            cAlternateFileName : array[0..(14)-1] of TCHAR;
-         end;
-       LPWIN32_FIND_DATA = ^record
-            dwFileAttributes : DWORD;
-            ftCreationTime : FILETIME;
-            ftLastAccessTime : FILETIME;
-            ftLastWriteTime : FILETIME;
-            nFileSizeHigh : DWORD;
-            nFileSizeLow : DWORD;
-            dwReserved0 : DWORD;
-            dwReserved1 : DWORD;
-            cFileName : array[0..(MAX_PATH)-1] of TCHAR;
-            cAlternateFileName : array[0..(14)-1] of TCHAR;
-         end;
-       WIN32_STREAM_ID = record
-            dwStreamId : DWORD;
-            dwStreamAttributes : DWORD;
-            Size : LARGE_INTEGER;
-            dwStreamNameSize : DWORD;
-            cStreamName : ^WCHAR;
-         end;
-       WINDOWPLACEMENT = record
-            length : UINT;
-            flags : UINT;
-            showCmd : UINT;
-            ptMinPosition : POINT;
-            ptMaxPosition : POINT;
-            rcNormalPosition : RECT;
-         end;
-       WNDCLASS = record
-            style : UINT;
-            lpfnWndProc : WNDPROC;
-            cbClsExtra : longint;
-            cbWndExtra : longint;
-            hInstance : HANDLE;
-            hIcon : HICON;
-            hCursor : HCURSOR;
-            hbrBackground : HBRUSH;
-            lpszMenuName : LPCTSTR;
-            lpszClassName : LPCTSTR;
-         end;
-       LPWNDCLASS = ^record
-            style : UINT;
-            lpfnWndProc : WNDPROC;
-            cbClsExtra : longint;
-            cbWndExtra : longint;
-            hInstance : HANDLE;
-            hIcon : HICON;
-            hCursor : HCURSOR;
-            hbrBackground : HBRUSH;
-            lpszMenuName : LPCTSTR;
-            lpszClassName : LPCTSTR;
-         end;
-       WNDCLASSEX = record
-            cbSize : UINT;
-            style : UINT;
-            lpfnWndProc : WNDPROC;
-            cbClsExtra : longint;
-            cbWndExtra : longint;
-            hInstance : HANDLE;
-            hIcon : HICON;
-            hCursor : HCURSOR;
-            hbrBackground : HBRUSH;
-            lpszMenuName : LPCTSTR;
-            lpszClassName : LPCTSTR;
-            hIconSm : HICON;
-         end;
-       LPWNDCLASSEX = ^record
-            cbSize : UINT;
-            style : UINT;
-            lpfnWndProc : WNDPROC;
-            cbClsExtra : longint;
-            cbWndExtra : longint;
-            hInstance : HANDLE;
-            hIcon : HICON;
-            hCursor : HCURSOR;
-            hbrBackground : HBRUSH;
-            lpszMenuName : LPCTSTR;
-            lpszClassName : LPCTSTR;
-            hIconSm : HICON;
-         end;
-       CONNECTDLGSTRUCT = record
-            cbStructure : DWORD;
-            hwndOwner : HWND;
-            lpConnRes : LPNETRESOURCE;
-            dwFlags : DWORD;
-            dwDevNum : DWORD;
-         end;
-       LPCONNECTDLGSTRUCT = ^record
-            cbStructure : DWORD;
-            hwndOwner : HWND;
-            lpConnRes : LPNETRESOURCE;
-            dwFlags : DWORD;
-            dwDevNum : DWORD;
-         end;
-       DISCDLGSTRUCT = record
-            cbStructure : DWORD;
-            hwndOwner : HWND;
-            lpLocalName : LPTSTR;
-            lpRemoteName : LPTSTR;
-            dwFlags : DWORD;
-         end;
-       LPDISCDLGSTRUCT = ^record
-            cbStructure : DWORD;
-            hwndOwner : HWND;
-            lpLocalName : LPTSTR;
-            lpRemoteName : LPTSTR;
-            dwFlags : DWORD;
-         end;
-       NETINFOSTRUCT = record
-            cbStructure : DWORD;
-            dwProviderVersion : DWORD;
-            dwStatus : DWORD;
-            dwCharacteristics : DWORD;
-            dwHandle : DWORD;
-            wNetType : WORD;
-            dwPrinters : DWORD;
-            dwDrives : DWORD;
-         end;
-       LPNETINFOSTRUCT = ^record
-            cbStructure : DWORD;
-            dwProviderVersion : DWORD;
-            dwStatus : DWORD;
-            dwCharacteristics : DWORD;
-            dwHandle : DWORD;
-            wNetType : WORD;
-            dwPrinters : DWORD;
-            dwDrives : DWORD;
-         end;
-       NETCONNECTINFOSTRUCT = record
-            cbStructure : DWORD;
-            dwFlags : DWORD;
-            dwSpeed : DWORD;
-            dwDelay : DWORD;
-            dwOptDataSize : DWORD;
-         end;
-       LPNETCONNECTINFOSTRUCT = ^record
-            cbStructure : DWORD;
-            dwFlags : DWORD;
-            dwSpeed : DWORD;
-            dwDelay : DWORD;
-            dwOptDataSize : DWORD;
-         end;
-       ENUMMETAFILEPROC = function(_para1:HDC; _para2:HANDLETABLE; _para3:METARECORD; _para4:longint; _para5:LPARAM):longint;
-       ENHMETAFILEPROC = function(_para1:HDC; _para2:HANDLETABLE; _para3:ENHMETARECORD; _para4:longint; _para5:LPARAM):longint;
-       ENUMFONTSPROC = function(_para1:LPLOGFONT; _para2:LPTEXTMETRIC; _para3:DWORD; _para4:LPARAM):longint;
-       FONTENUMPROC = function(_para1:^ENUMLOGFONT; _para2:^NEWTEXTMETRIC; _para3:longint; _para4:LPARAM):longint;
-       FONTENUMEXPROC = function(_para1:^ENUMLOGFONTEX; _para2:^NEWTEXTMETRICEX; _para3:longint; _para4:LPARAM):longint;
-       LPOVERLAPPED_COMPLETION_ROUTINE = function(_para1:DWORD; _para2:DWORD; _para3:LPOVERLAPPED):VOID;
-    {
-      Structures for the extensions to OpenGL
-      }
-       POINTFLOAT = record
-            x : FLOAT;
-            y : FLOAT;
-         end;
-       PPOINTFLOAT = ^record
-            x : FLOAT;
-            y : FLOAT;
-         end;
-       GLYPHMETRICSFLOAT = record
-            gmfBlackBoxX : FLOAT;
-            gmfBlackBoxY : FLOAT;
-            gmfptGlyphOrigin : POINTFLOAT;
-            gmfCellIncX : FLOAT;
-            gmfCellIncY : FLOAT;
-         end;
-       PGLYPHMETRICSFLOAT = ^record
-            gmfBlackBoxX : FLOAT;
-            gmfBlackBoxY : FLOAT;
-            gmfptGlyphOrigin : POINTFLOAT;
-            gmfCellIncX : FLOAT;
-            gmfCellIncY : FLOAT;
-         end;
-       LPGLYPHMETRICSFLOAT = ^record
-            gmfBlackBoxX : FLOAT;
-            gmfBlackBoxY : FLOAT;
-            gmfptGlyphOrigin : POINTFLOAT;
-            gmfCellIncX : FLOAT;
-            gmfCellIncY : FLOAT;
-         end;
-       LAYERPLANEDESCRIPTOR = record
-            nSize : WORD;
-            nVersion : WORD;
-            dwFlags : DWORD;
-            iPixelType : BYTE;
-            cColorBits : BYTE;
-            cRedBits : BYTE;
-            cRedShift : BYTE;
-            cGreenBits : BYTE;
-            cGreenShift : BYTE;
-            cBlueBits : BYTE;
-            cBlueShift : BYTE;
-            cAlphaBits : BYTE;
-            cAlphaShift : BYTE;
-            cAccumBits : BYTE;
-            cAccumRedBits : BYTE;
-            cAccumGreenBits : BYTE;
-            cAccumBlueBits : BYTE;
-            cAccumAlphaBits : BYTE;
-            cDepthBits : BYTE;
-            cStencilBits : BYTE;
-            cAuxBuffers : BYTE;
-            iLayerPlane : BYTE;
-            bReserved : BYTE;
-            crTransparent : COLORREF;
-         end;
-       PLAYERPLANEDESCRIPTOR = ^record
-            nSize : WORD;
-            nVersion : WORD;
-            dwFlags : DWORD;
-            iPixelType : BYTE;
-            cColorBits : BYTE;
-            cRedBits : BYTE;
-            cRedShift : BYTE;
-            cGreenBits : BYTE;
-            cGreenShift : BYTE;
-            cBlueBits : BYTE;
-            cBlueShift : BYTE;
-            cAlphaBits : BYTE;
-            cAlphaShift : BYTE;
-            cAccumBits : BYTE;
-            cAccumRedBits : BYTE;
-            cAccumGreenBits : BYTE;
-            cAccumBlueBits : BYTE;
-            cAccumAlphaBits : BYTE;
-            cDepthBits : BYTE;
-            cStencilBits : BYTE;
-            cAuxBuffers : BYTE;
-            iLayerPlane : BYTE;
-            bReserved : BYTE;
-            crTransparent : COLORREF;
-         end;
-       LPLAYERPLANEDESCRIPTOR = ^record
-            nSize : WORD;
-            nVersion : WORD;
-            dwFlags : DWORD;
-            iPixelType : BYTE;
-            cColorBits : BYTE;
-            cRedBits : BYTE;
-            cRedShift : BYTE;
-            cGreenBits : BYTE;
-            cGreenShift : BYTE;
-            cBlueBits : BYTE;
-            cBlueShift : BYTE;
-            cAlphaBits : BYTE;
-            cAlphaShift : BYTE;
-            cAccumBits : BYTE;
-            cAccumRedBits : BYTE;
-            cAccumGreenBits : BYTE;
-            cAccumBlueBits : BYTE;
-            cAccumAlphaBits : BYTE;
-            cDepthBits : BYTE;
-            cStencilBits : BYTE;
-            cAuxBuffers : BYTE;
-            iLayerPlane : BYTE;
-            bReserved : BYTE;
-            crTransparent : COLORREF;
-         end;
-       PIXELFORMATDESCRIPTOR = record
-            nSize : WORD;
-            nVersion : WORD;
-            dwFlags : DWORD;
-            iPixelType : BYTE;
-            cColorBits : BYTE;
-            cRedBits : BYTE;
-            cRedShift : BYTE;
-            cGreenBits : BYTE;
-            cGreenShift : BYTE;
-            cBlueBits : BYTE;
-            cBlueShift : BYTE;
-            cAlphaBits : BYTE;
-            cAlphaShift : BYTE;
-            cAccumBits : BYTE;
-            cAccumRedBits : BYTE;
-            cAccumGreenBits : BYTE;
-            cAccumBlueBits : BYTE;
-            cAccumAlphaBits : BYTE;
-            cDepthBits : BYTE;
-            cStencilBits : BYTE;
-            cAuxBuffers : BYTE;
-            iLayerType : BYTE;
-            bReserved : BYTE;
-            dwLayerMask : DWORD;
-            dwVisibleMask : DWORD;
-            dwDamageMask : DWORD;
-         end;
-       PPIXELFORMATDESCRIPTOR = ^record
-            nSize : WORD;
-            nVersion : WORD;
-            dwFlags : DWORD;
-            iPixelType : BYTE;
-            cColorBits : BYTE;
-            cRedBits : BYTE;
-            cRedShift : BYTE;
-            cGreenBits : BYTE;
-            cGreenShift : BYTE;
-            cBlueBits : BYTE;
-            cBlueShift : BYTE;
-            cAlphaBits : BYTE;
-            cAlphaShift : BYTE;
-            cAccumBits : BYTE;
-            cAccumRedBits : BYTE;
-            cAccumGreenBits : BYTE;
-            cAccumBlueBits : BYTE;
-            cAccumAlphaBits : BYTE;
-            cDepthBits : BYTE;
-            cStencilBits : BYTE;
-            cAuxBuffers : BYTE;
-            iLayerType : BYTE;
-            bReserved : BYTE;
-            dwLayerMask : DWORD;
-            dwVisibleMask : DWORD;
-            dwDamageMask : DWORD;
-         end;
-       LPPIXELFORMATDESCRIPTOR = ^record
-            nSize : WORD;
-            nVersion : WORD;
-            dwFlags : DWORD;
-            iPixelType : BYTE;
-            cColorBits : BYTE;
-            cRedBits : BYTE;
-            cRedShift : BYTE;
-            cGreenBits : BYTE;
-            cGreenShift : BYTE;
-            cBlueBits : BYTE;
-            cBlueShift : BYTE;
-            cAlphaBits : BYTE;
-            cAlphaShift : BYTE;
-            cAccumBits : BYTE;
-            cAccumRedBits : BYTE;
-            cAccumGreenBits : BYTE;
-            cAccumBlueBits : BYTE;
-            cAccumAlphaBits : BYTE;
-            cDepthBits : BYTE;
-            cStencilBits : BYTE;
-            cAuxBuffers : BYTE;
-            iLayerType : BYTE;
-            bReserved : BYTE;
-            dwLayerMask : DWORD;
-            dwVisibleMask : DWORD;
-            dwDamageMask : DWORD;
-         end;
+     _TC_ITEMHEADER = TC_ITEMHEADER;
+
+     TC_KEYDOWN = record
+          hdr : NMHDR;
+          wVKey : WORD;
+          flags : UINT;
+       end;
+
+     _TC_KEYDOWN = TC_KEYDOWN;
+
+     TEXTRANGE = record
+          chrg : CHARRANGE;
+          lpstrText : LPSTR;
+       end;
+
+     _textrange = TEXTRANGE;
+
+     TIME_ZONE_INFORMATION = record
+          Bias : LONG;
+          StandardName : array[0..31] of WCHAR;
+          StandardDate : SYSTEMTIME;
+          StandardBias : LONG;
+          DaylightName : array[0..31] of WCHAR;
+          DaylightDate : SYSTEMTIME;
+          DaylightBias : LONG;
+       end;
+
+     LPTIME_ZONE_INFORMATION = ^TIME_ZONE_INFORMATION;
+
+     _TIME_ZONE_INFORMATION = TIME_ZONE_INFORMATION;
+
+     TOGGLEKEYS = record
+          cbSize : DWORD;
+          dwFlags : DWORD;
+       end;
+
+     tagTOGGLEKEYS = TOGGLEKEYS;
+
+     TOKEN_SOURCE = record
+          SourceName : array[0..7] of CHAR;
+          SourceIdentifier : LUID;
+       end;
+
+     _TOKEN_SOURCE = TOKEN_SOURCE;
+
+     TOKEN_CONTROL = record
+          TokenId : LUID;
+          AuthenticationId : LUID;
+          ModifiedId : LUID;
+          TokenSource : TOKEN_SOURCE;
+       end;
+
+     _TOKEN_CONTROL = TOKEN_CONTROL;
+
+     TOKEN_DEFAULT_DACL = record
+          DefaultDacl : PACL;
+       end;
+
+     _TOKEN_DEFAULT_DACL = TOKEN_DEFAULT_DACL;
+
+     TOKEN_GROUPS = record
+          GroupCount : DWORD;
+          Groups : array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES;
+       end;
+
+     PTOKEN_GROUPS = ^TOKEN_GROUPS;
+
+     LPTOKEN_GROUPS = ^TOKEN_GROUPS;
+
+     _TOKEN_GROUPS = TOKEN_GROUPS;
+
+     TOKEN_OWNER = record
+          Owner : PSID;
+       end;
+
+     _TOKEN_OWNER = TOKEN_OWNER;
+
+     TOKEN_PRIMARY_GROUP = record
+          PrimaryGroup : PSID;
+       end;
+
+     _TOKEN_PRIMARY_GROUP = TOKEN_PRIMARY_GROUP;
+
+     TOKEN_PRIVILEGES = record
+          PrivilegeCount : DWORD;
+          Privileges : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
+       end;
+
+     PTOKEN_PRIVILEGES = ^TOKEN_PRIVILEGES;
+
+     LPTOKEN_PRIVILEGES = ^TOKEN_PRIVILEGES;
+
+     _TOKEN_PRIVILEGES = TOKEN_PRIVILEGES;
+
+     TOKEN_STATISTICS = record
+          TokenId : LUID;
+          AuthenticationId : LUID;
+          ExpirationTime : LARGE_INTEGER;
+          TokenType : TOKEN_TYPE;
+          ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
+          DynamicCharged : DWORD;
+          DynamicAvailable : DWORD;
+          GroupCount : DWORD;
+          PrivilegeCount : DWORD;
+          ModifiedId : LUID;
+       end;
+
+     _TOKEN_STATISTICS = TOKEN_STATISTICS;
+
+     TOKEN_USER = record
+          User : SID_AND_ATTRIBUTES;
+       end;
+
+     _TOKEN_USER = TOKEN_USER;
+
+     TOOLINFO = record
+          cbSize : UINT;
+          uFlags : UINT;
+          hwnd : HWND;
+          uId : UINT;
+          rect : RECT;
+          hinst : HINSTANCE;
+          lpszText : LPTSTR;
+       end;
+
+     PTOOLINFO = ^TOOLINFO;
+
+     LPTOOLINFO = ^TOOLINFO;
+
+     TOOLTIPTEXT = record
+          hdr : NMHDR;
+          lpszText : LPTSTR;
+          szText : array[0..79] of char;
+          hinst : HINSTANCE;
+          uFlags : UINT;
+       end;
+
+     LPTOOLTIPTEXT = ^TOOLTIPTEXT;
+
+     TPMPARAMS = record
+          cbSize : UINT;
+          rcExclude : RECT;
+       end;
+
+     LPTPMPARAMS = ^TPMPARAMS;
+
+     tagTPMPARAMS = TPMPARAMS;
+
+     TRANSMIT_FILE_BUFFERS = record
+          Head : PVOID;
+          HeadLength : DWORD;
+          Tail : PVOID;
+          TailLength : DWORD;
+       end;
+
+     _TRANSMIT_FILE_BUFFERS = TRANSMIT_FILE_BUFFERS;
+
+     TTHITTESTINFO = record
+          hwnd : HWND;
+          pt : POINT;
+          ti : TOOLINFO;
+       end;
+
+     LPHITTESTINFO = ^TTHITTESTINFO;
+
+     _TT_HITTESTINFO = TTHITTESTINFO;
+
+     TTPOLYCURVE = record
+          wType : WORD;
+          cpfx : WORD;
+          apfx : array[0..0] of POINTFX;
+       end;
+
+     LPTTPOLYCURVE = ^TTPOLYCURVE;
+
+     tagTTPOLYCURVE = TTPOLYCURVE;
+
+     TTPOLYGONHEADER = record
+          cb : DWORD;
+          dwType : DWORD;
+          pfxStart : POINTFX;
+       end;
+
+     LPTTPOLYGONHEADER = ^TTPOLYGONHEADER;
+
+     _TTPOLYGONHEADER = TTPOLYGONHEADER;
+
+     TV_DISPINFO = record
+          hdr : NMHDR;
+          item : TV_ITEM;
+       end;
+
+     _TV_DISPINFO = TV_DISPINFO;
+
+     TV_HITTESTINFO = record
+          pt : POINT;
+          flags : UINT;
+          hItem : HTREEITEM;
+       end;
+
+     LPTV_HITTESTINFO = ^TV_HITTESTINFO;
+
+     _TVHITTESTINFO = TV_HITTESTINFO;
+
+     TV_INSERTSTRUCT = record
+          hParent : HTREEITEM;
+          hInsertAfter : HTREEITEM;
+          item : TV_ITEM;
+       end;
+
+     LPTV_INSERTSTRUCT = ^TV_INSERTSTRUCT;
+
+     _TV_INSERTSTRUCT = TV_INSERTSTRUCT;
+
+     TV_KEYDOWN = record
+          hdr : NMHDR;
+          wVKey : WORD;
+          flags : UINT;
+       end;
+
+     _TV_KEYDOWN = TV_KEYDOWN;
+
+     TV_SORTCB = record
+          hParent : HTREEITEM;
+          lpfnCompare : PFNTVCOMPARE;
+          lParam : LPARAM;
+       end;
+
+     LPTV_SORTCB = ^TV_SORTCB;
+
+     _TV_SORTCB = TV_SORTCB;
+
+     UDACCEL = record
+          nSec : UINT;
+          nInc : UINT;
+       end;
+
+     ULARGE_INTEGER = record
+          LowPart : DWORD;
+          HighPart : DWORD;
+       end;
+
+     PULARGE_INTEGER = ^ULARGE_INTEGER;
+
+     _ULARGE_INTEGER = ULARGE_INTEGER;
+
+     UNIVERSAL_NAME_INFO = record
+          lpUniversalName : LPTSTR;
+       end;
+
+     _UNIVERSAL_NAME_INFO = UNIVERSAL_NAME_INFO;
+
+     USEROBJECTFLAGS = record
+          fInherit : WINBOOL;
+          fReserved : WINBOOL;
+          dwFlags : DWORD;
+       end;
+
+     tagUSEROBJECTFLAGS = USEROBJECTFLAGS;
+
+     VALENT = record
+          ve_valuename : LPTSTR;
+          ve_valuelen : DWORD;
+          ve_valueptr : DWORD;
+          ve_type : DWORD;
+       end;
+
+     PVALENT = ^VALENT;
+
+     value_ent = VALENT;
+
+     VERIFY_INFORMATION = record
+          StartingOffset : LARGE_INTEGER;
+          Length : DWORD;
+       end;
+
+     _VERIFY_INFORMATION = VERIFY_INFORMATION;
+
+     VS_FIXEDFILEINFO = record
+          dwSignature : DWORD;
+          dwStrucVersion : DWORD;
+          dwFileVersionMS : DWORD;
+          dwFileVersionLS : DWORD;
+          dwProductVersionMS : DWORD;
+          dwProductVersionLS : DWORD;
+          dwFileFlagsMask : DWORD;
+          dwFileFlags : DWORD;
+          dwFileOS : DWORD;
+          dwFileType : DWORD;
+          dwFileSubtype : DWORD;
+          dwFileDateMS : DWORD;
+          dwFileDateLS : DWORD;
+       end;
+
+     _VS_FIXEDFILEINFO = VS_FIXEDFILEINFO;
+
+     WIN32_FIND_DATA = record
+          dwFileAttributes : DWORD;
+          ftCreationTime : FILETIME;
+          ftLastAccessTime : FILETIME;
+          ftLastWriteTime : FILETIME;
+          nFileSizeHigh : DWORD;
+          nFileSizeLow : DWORD;
+          dwReserved0 : DWORD;
+          dwReserved1 : DWORD;
+          cFileName : array[0..(MAX_PATH)-1] of TCHAR;
+          cAlternateFileName : array[0..13] of TCHAR;
+       end;
+
+     LPWIN32_FIND_DATA = ^WIN32_FIND_DATA;
+
+     PWIN32_FIND_DATA = ^WIN32_FIND_DATA;
+
+     _WIN32_FIND_DATA = WIN32_FIND_DATA;
+
+     WIN32_STREAM_ID = record
+          dwStreamId : DWORD;
+          dwStreamAttributes : DWORD;
+          Size : LARGE_INTEGER;
+          dwStreamNameSize : DWORD;
+          cStreamName : ^WCHAR;
+       end;
+
+     _WIN32_STREAM_ID = WIN32_STREAM_ID;
+
+     WINDOWPLACEMENT = record
+          length : UINT;
+          flags : UINT;
+          showCmd : UINT;
+          ptMinPosition : POINT;
+          ptMaxPosition : POINT;
+          rcNormalPosition : RECT;
+       end;
+
+     _WINDOWPLACEMENT = WINDOWPLACEMENT;
+
+     WNDCLASS = record
+          style : UINT;
+          lpfnWndProc : WNDPROC;
+          cbClsExtra : longint;
+          cbWndExtra : longint;
+          hInstance : HANDLE;
+          hIcon : HICON;
+          hCursor : HCURSOR;
+          hbrBackground : HBRUSH;
+          lpszMenuName : LPCTSTR;
+          lpszClassName : LPCTSTR;
+       end;
+
+     LPWNDCLASS = ^WNDCLASS;
+
+     _WNDCLASS = WNDCLASS;
+
+     WNDCLASSEX = record
+          cbSize : UINT;
+          style : UINT;
+          lpfnWndProc : WNDPROC;
+          cbClsExtra : longint;
+          cbWndExtra : longint;
+          hInstance : HANDLE;
+          _hIcon : HICON;
+          hCursor : HCURSOR;
+          hbrBackground : HBRUSH;
+          lpszMenuName : LPCTSTR;
+          lpszClassName : LPCTSTR;
+          hIconSm : HICON;
+       end;
+
+     LPWNDCLASSEX = ^WNDCLASSEX;
+
+     _WNDCLASSEX = WNDCLASSEX;
+
+     CONNECTDLGSTRUCT = record
+          cbStructure : DWORD;
+          hwndOwner : HWND;
+          lpConnRes : LPNETRESOURCE;
+          dwFlags : DWORD;
+          dwDevNum : DWORD;
+       end;
+
+     LPCONNECTDLGSTRUCT = ^CONNECTDLGSTRUCT;
+
+     _CONNECTDLGSTRUCT = CONNECTDLGSTRUCT;
+
+     DISCDLGSTRUCT = record
+          cbStructure : DWORD;
+          hwndOwner : HWND;
+          lpLocalName : LPTSTR;
+          lpRemoteName : LPTSTR;
+          dwFlags : DWORD;
+       end;
+
+     LPDISCDLGSTRUCT = ^DISCDLGSTRUCT;
+
+     _DISCDLGSTRUCT = DISCDLGSTRUCT;
+
+     NETINFOSTRUCT = record
+          cbStructure : DWORD;
+          dwProviderVersion : DWORD;
+          dwStatus : DWORD;
+          dwCharacteristics : DWORD;
+          dwHandle : DWORD;
+          wNetType : WORD;
+          dwPrinters : DWORD;
+          dwDrives : DWORD;
+       end;
+
+     LPNETINFOSTRUCT = ^NETINFOSTRUCT;
+
+     _NETINFOSTRUCT = NETINFOSTRUCT;
+
+     NETCONNECTINFOSTRUCT = record
+          cbStructure : DWORD;
+          dwFlags : DWORD;
+          dwSpeed : DWORD;
+          dwDelay : DWORD;
+          dwOptDataSize : DWORD;
+       end;
+
+     LPNETCONNECTINFOSTRUCT = ^NETCONNECTINFOSTRUCT;
+
+     _NETCONNECTINFOSTRUCT = NETCONNECTINFOSTRUCT;
+
+     ENUMMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:METARECORD; _para4:longint; _para5:LPARAM):longint;
+
+     ENHMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:ENHMETARECORD; _para4:longint; _para5:LPARAM):longint;
+
+     ENUMFONTSPROC = function (_para1:LPLOGFONT; _para2:LPTEXTMETRIC; _para3:DWORD; _para4:LPARAM):longint;
+
+     FONTENUMPROC = function (var _para1:ENUMLOGFONT; var _para2:NEWTEXTMETRIC; _para3:longint; _para4:LPARAM):longint;
+
+     FONTENUMEXPROC = function (var _para1:ENUMLOGFONTEX;var _para2:NEWTEXTMETRICEX; _para3:longint; _para4:LPARAM):longint;
+
+     LPOVERLAPPED_COMPLETION_ROUTINE = procedure (_para1:DWORD; _para2:DWORD; _para3:LPOVERLAPPED);
+  {
+    Structures for the extensions to OpenGL
+     }
+
+     POINTFLOAT = record
+          x : FLOAT;
+          y : FLOAT;
+       end;
+
+     PPOINTFLOAT = ^POINTFLOAT;
+
+     _POINTFLOAT = POINTFLOAT;
+
+     GLYPHMETRICSFLOAT = record
+          gmfBlackBoxX : FLOAT;
+          gmfBlackBoxY : FLOAT;
+          gmfptGlyphOrigin : POINTFLOAT;
+          gmfCellIncX : FLOAT;
+          gmfCellIncY : FLOAT;
+       end;
+
+     PGLYPHMETRICSFLOAT = ^GLYPHMETRICSFLOAT;
 
+     LPGLYPHMETRICSFLOAT = ^GLYPHMETRICSFLOAT;
+
+     _GLYPHMETRICSFLOAT = GLYPHMETRICSFLOAT;
+
+     LAYERPLANEDESCRIPTOR = record
+          nSize : WORD;
+          nVersion : WORD;
+          dwFlags : DWORD;
+          iPixelType : BYTE;
+          cColorBits : BYTE;
+          cRedBits : BYTE;
+          cRedShift : BYTE;
+          cGreenBits : BYTE;
+          cGreenShift : BYTE;
+          cBlueBits : BYTE;
+          cBlueShift : BYTE;
+          cAlphaBits : BYTE;
+          cAlphaShift : BYTE;
+          cAccumBits : BYTE;
+          cAccumRedBits : BYTE;
+          cAccumGreenBits : BYTE;
+          cAccumBlueBits : BYTE;
+          cAccumAlphaBits : BYTE;
+          cDepthBits : BYTE;
+          cStencilBits : BYTE;
+          cAuxBuffers : BYTE;
+          iLayerPlane : BYTE;
+          bReserved : BYTE;
+          crTransparent : COLORREF;
+       end;
+
+     PLAYERPLANEDESCRIPTOR = ^LAYERPLANEDESCRIPTOR;
+
+     LPLAYERPLANEDESCRIPTOR = ^LAYERPLANEDESCRIPTOR;
+
+     tagLAYERPLANEDESCRIPTOR = LAYERPLANEDESCRIPTOR;
+
+     PIXELFORMATDESCRIPTOR = record
+          nSize : WORD;
+          nVersion : WORD;
+          dwFlags : DWORD;
+          iPixelType : BYTE;
+          cColorBits : BYTE;
+          cRedBits : BYTE;
+          cRedShift : BYTE;
+          cGreenBits : BYTE;
+          cGreenShift : BYTE;
+          cBlueBits : BYTE;
+          cBlueShift : BYTE;
+          cAlphaBits : BYTE;
+          cAlphaShift : BYTE;
+          cAccumBits : BYTE;
+          cAccumRedBits : BYTE;
+          cAccumGreenBits : BYTE;
+          cAccumBlueBits : BYTE;
+          cAccumAlphaBits : BYTE;
+          cDepthBits : BYTE;
+          cStencilBits : BYTE;
+          cAuxBuffers : BYTE;
+          iLayerType : BYTE;
+          bReserved : BYTE;
+          dwLayerMask : DWORD;
+          dwVisibleMask : DWORD;
+          dwDamageMask : DWORD;
+       end;
+
+     PPIXELFORMATDESCRIPTOR = ^PIXELFORMATDESCRIPTOR;
+
+     LPPIXELFORMATDESCRIPTOR = ^PIXELFORMATDESCRIPTOR;
+
+     tagPIXELFORMATDESCRIPTOR = PIXELFORMATDESCRIPTOR;
+
+     USER_INFO_2 = record
+          usri2_name : LPWSTR;
+          usri2_password : LPWSTR;
+          usri2_password_age : DWORD;
+          usri2_priv : DWORD;
+          usri2_home_dir : LPWSTR;
+          usri2_comment : LPWSTR;
+          usri2_flags : DWORD;
+          usri2_script_path : LPWSTR;
+          usri2_auth_flags : DWORD;
+          usri2_full_name : LPWSTR;
+          usri2_usr_comment : LPWSTR;
+          usri2_parms : LPWSTR;
+          usri2_workstations : LPWSTR;
+          usri2_last_logon : DWORD;
+          usri2_last_logoff : DWORD;
+          usri2_acct_expires : DWORD;
+          usri2_max_storage : DWORD;
+          usri2_units_per_week : DWORD;
+          usri2_logon_hours : PBYTE;
+          usri2_bad_pw_count : DWORD;
+          usri2_num_logons : DWORD;
+          usri2_logon_server : LPWSTR;
+          usri2_country_code : DWORD;
+          usri2_code_page : DWORD;
+       end;
+
+     PUSER_INFO_2 = ^USER_INFO_2;
+
+     LPUSER_INFO_2 = ^USER_INFO_2;
+
+     USER_INFO_0 = record
+          usri0_name : LPWSTR;
+       end;
+
+     PUSER_INFO_0 = ^USER_INFO_0;
+
+     LPUSER_INFO_0 = ^USER_INFO_0;
+
+     USER_INFO_3 = record
+          usri3_name : LPWSTR;
+          usri3_password : LPWSTR;
+          usri3_password_age : DWORD;
+          usri3_priv : DWORD;
+          usri3_home_dir : LPWSTR;
+          usri3_comment : LPWSTR;
+          usri3_flags : DWORD;
+          usri3_script_path : LPWSTR;
+          usri3_auth_flags : DWORD;
+          usri3_full_name : LPWSTR;
+          usri3_usr_comment : LPWSTR;
+          usri3_parms : LPWSTR;
+          usri3_workstations : LPWSTR;
+          usri3_last_logon : DWORD;
+          usri3_last_logoff : DWORD;
+          usri3_acct_expires : DWORD;
+          usri3_max_storage : DWORD;
+          usri3_units_per_week : DWORD;
+          usri3_logon_hours : PBYTE;
+          usri3_bad_pw_count : DWORD;
+          usri3_num_logons : DWORD;
+          usri3_logon_server : LPWSTR;
+          usri3_country_code : DWORD;
+          usri3_code_page : DWORD;
+          usri3_user_id : DWORD;
+          usri3_primary_group_id : DWORD;
+          usri3_profile : LPWSTR;
+          usri3_home_dir_drive : LPWSTR;
+          usri3_password_expired : DWORD;
+       end;
+
+     PUSER_INFO_3 = ^USER_INFO_3;
+
+     LPUSER_INFO_3 = ^USER_INFO_3;
+
+     GROUP_INFO_2 = record
+          grpi2_name : LPWSTR;
+          grpi2_comment : LPWSTR;
+          grpi2_group_id : DWORD;
+          grpi2_attributes : DWORD;
+       end;
+
+     PGROUP_INFO_2 = ^GROUP_INFO_2;
+
+     LOCALGROUP_INFO_0 = record
+          lgrpi0_name : LPWSTR;
+       end;
+
+     PLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
+
+     LPLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
+  { PE executable header.   }
+  { Magic number, 0x5a4d  }
+  { Bytes on last page of file, 0x90  }
+  { Pages in file, 0x3  }
+  { Relocations, 0x0  }
+  { Size of header in paragraphs, 0x4  }
+  { Minimum extra paragraphs needed, 0x0  }
+  { Maximum extra paragraphs needed, 0xFFFF  }
+  { Initial (relative) SS value, 0x0  }
+  { Initial SP value, 0xb8  }
+  { Checksum, 0x0  }
+  { Initial IP value, 0x0  }
+  { Initial (relative) CS value, 0x0  }
+  { File address of relocation table, 0x40  }
+  { Overlay number, 0x0  }
+  { Reserved words, all 0x0  }
+  { OEM identifier (for e_oeminfo), 0x0  }
+  { OEM information; e_oemid specific, 0x0  }
+  { Reserved words, all 0x0  }
+  { File address of new exe header, 0x80  }
+  { We leave out the next two fields, since they aren't in the
+       Windows header file.   }
+  { DWORD dos_message[16];   text which always follows dos header  }
+  { DWORD nt_signature;      required NT signature, 0x4550  }
+
+     IMAGE_DOS_HEADER = record
+          e_magic : WORD;
+          e_cblp : WORD;
+          e_cp : WORD;
+          e_crlc : WORD;
+          e_cparhdr : WORD;
+          e_minalloc : WORD;
+          e_maxalloc : WORD;
+          e_ss : WORD;
+          e_sp : WORD;
+          e_csum : WORD;
+          e_ip : WORD;
+          e_cs : WORD;
+          e_lfarlc : WORD;
+          e_ovno : WORD;
+          e_res : array[0..3] of WORD;
+          e_oemid : WORD;
+          e_oeminfo : WORD;
+          e_res2 : array[0..9] of WORD;
+          e_lfanew : LONG;
+       end;
+
+     PIMAGE_DOS_HEADER = ^IMAGE_DOS_HEADER;
+{ C++ end of extern C conditionnal removed }
+  { __cplusplus  }
+{$endif}
+  { _GNU_H_WINDOWS32_STRUCTURES  }
+
+
+{$endif read_interface}
+
+{$ifndef windows_include_files}
   implementation
 
-end.
+    const External_library='kernel32'; {Setup as you need!}
+
+{$endif not windows_include_files}
+
+{$ifdef read_implementation}
+
+  function fBinary(var a : DCB) : DWORD;
+    begin
+       fBinary:=(a.flag0 and bm_DCB_fBinary) shr bp_DCB_fBinary;
+    end;
+
+  procedure set_fBinary(var a : DCB; __fBinary : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fBinary shl bp_DCB_fBinary) and bm_DCB_fBinary);
+    end;
+
+  function fParity(var a : DCB) : DWORD;
+    begin
+       fParity:=(a.flag0 and bm_DCB_fParity) shr bp_DCB_fParity;
+    end;
+
+  procedure set_fParity(var a : DCB; __fParity : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fParity shl bp_DCB_fParity) and bm_DCB_fParity);
+    end;
+
+  function fOutxCtsFlow(var a : DCB) : DWORD;
+    begin
+       fOutxCtsFlow:=(a.flag0 and bm_DCB_fOutxCtsFlow) shr bp_DCB_fOutxCtsFlow;
+    end;
+
+  procedure set_fOutxCtsFlow(var a : DCB; __fOutxCtsFlow : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fOutxCtsFlow shl bp_DCB_fOutxCtsFlow) and bm_DCB_fOutxCtsFlow);
+    end;
+
+  function fOutxDsrFlow(var a : DCB) : DWORD;
+    begin
+       fOutxDsrFlow:=(a.flag0 and bm_DCB_fOutxDsrFlow) shr bp_DCB_fOutxDsrFlow;
+    end;
+
+  procedure set_fOutxDsrFlow(var a : DCB; __fOutxDsrFlow : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fOutxDsrFlow shl bp_DCB_fOutxDsrFlow) and bm_DCB_fOutxDsrFlow);
+    end;
+
+  function fDtrControl(var a : DCB) : DWORD;
+    begin
+       fDtrControl:=(a.flag0 and bm_DCB_fDtrControl) shr bp_DCB_fDtrControl;
+    end;
+
+  procedure set_fDtrControl(var a : DCB; __fDtrControl : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fDtrControl shl bp_DCB_fDtrControl) and bm_DCB_fDtrControl);
+    end;
+
+  function fDsrSensitivity(var a : DCB) : DWORD;
+    begin
+       fDsrSensitivity:=(a.flag0 and bm_DCB_fDsrSensitivity) shr bp_DCB_fDsrSensitivity;
+    end;
+
+  procedure set_fDsrSensitivity(var a : DCB; __fDsrSensitivity : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fDsrSensitivity shl bp_DCB_fDsrSensitivity) and bm_DCB_fDsrSensitivity);
+    end;
+
+  function fTXContinueOnXoff(var a : DCB) : DWORD;
+    begin
+       fTXContinueOnXoff:=(a.flag0 and bm_DCB_fTXContinueOnXoff) shr bp_DCB_fTXContinueOnXoff;
+    end;
+
+  procedure set_fTXContinueOnXoff(var a : DCB; __fTXContinueOnXoff : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fTXContinueOnXoff shl bp_DCB_fTXContinueOnXoff) and bm_DCB_fTXContinueOnXoff);
+    end;
+
+  function fOutX(var a : DCB) : DWORD;
+    begin
+       fOutX:=(a.flag0 and bm_DCB_fOutX) shr bp_DCB_fOutX;
+    end;
+
+  procedure set_fOutX(var a : DCB; __fOutX : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fOutX shl bp_DCB_fOutX) and bm_DCB_fOutX);
+    end;
+
+  function fInX(var a : DCB) : DWORD;
+    begin
+       fInX:=(a.flag0 and bm_DCB_fInX) shr bp_DCB_fInX;
+    end;
+
+  procedure set_fInX(var a : DCB; __fInX : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fInX shl bp_DCB_fInX) and bm_DCB_fInX);
+    end;
+
+  function fErrorChar(var a : DCB) : DWORD;
+    begin
+       fErrorChar:=(a.flag0 and bm_DCB_fErrorChar) shr bp_DCB_fErrorChar;
+    end;
+
+  procedure set_fErrorChar(var a : DCB; __fErrorChar : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fErrorChar shl bp_DCB_fErrorChar) and bm_DCB_fErrorChar);
+    end;
+
+  function fNull(var a : DCB) : DWORD;
+    begin
+       fNull:=(a.flag0 and bm_DCB_fNull) shr bp_DCB_fNull;
+    end;
+
+  procedure set_fNull(var a : DCB; __fNull : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fNull shl bp_DCB_fNull) and bm_DCB_fNull);
+    end;
+
+  function fRtsControl(var a : DCB) : DWORD;
+    begin
+       fRtsControl:=(a.flag0 and bm_DCB_fRtsControl) shr bp_DCB_fRtsControl;
+    end;
+
+  procedure set_fRtsControl(var a : DCB; __fRtsControl : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fRtsControl shl bp_DCB_fRtsControl) and bm_DCB_fRtsControl);
+    end;
+
+  function fAbortOnError(var a : DCB) : DWORD;
+    begin
+       fAbortOnError:=(a.flag0 and bm_DCB_fAbortOnError) shr bp_DCB_fAbortOnError;
+    end;
+
+  procedure set_fAbortOnError(var a : DCB; __fAbortOnError : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fAbortOnError shl bp_DCB_fAbortOnError) and bm_DCB_fAbortOnError);
+    end;
+
+  function fDummy2(var a : DCB) : DWORD;
+    begin
+       fDummy2:=(a.flag0 and bm_DCB_fDummy2) shr bp_DCB_fDummy2;
+    end;
+
+  procedure set_fDummy2(var a : DCB; __fDummy2 : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fDummy2 shl bp_DCB_fDummy2) and bm_DCB_fDummy2);
+    end;
+
+  function fCtsHold(var a : COMSTAT) : DWORD;
+    begin
+       fCtsHold:=(a.flag0 and bm_COMSTAT_fCtsHold) shr bp_COMSTAT_fCtsHold;
+    end;
+
+  procedure set_fCtsHold(var a : COMSTAT; __fCtsHold : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fCtsHold shl bp_COMSTAT_fCtsHold) and bm_COMSTAT_fCtsHold);
+    end;
+
+  function fDsrHold(var a : COMSTAT) : DWORD;
+    begin
+       fDsrHold:=(a.flag0 and bm_COMSTAT_fDsrHold) shr bp_COMSTAT_fDsrHold;
+    end;
+
+  procedure set_fDsrHold(var a : COMSTAT; __fDsrHold : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fDsrHold shl bp_COMSTAT_fDsrHold) and bm_COMSTAT_fDsrHold);
+    end;
+
+  function fRlsdHold(var a : COMSTAT) : DWORD;
+    begin
+       fRlsdHold:=(a.flag0 and bm_COMSTAT_fRlsdHold) shr bp_COMSTAT_fRlsdHold;
+    end;
 
+  procedure set_fRlsdHold(var a : COMSTAT; __fRlsdHold : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fRlsdHold shl bp_COMSTAT_fRlsdHold) and bm_COMSTAT_fRlsdHold);
+    end;
+
+  function fXoffHold(var a : COMSTAT) : DWORD;
+    begin
+       fXoffHold:=(a.flag0 and bm_COMSTAT_fXoffHold) shr bp_COMSTAT_fXoffHold;
+    end;
+
+  procedure set_fXoffHold(var a : COMSTAT; __fXoffHold : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fXoffHold shl bp_COMSTAT_fXoffHold) and bm_COMSTAT_fXoffHold);
+    end;
+
+  function fXoffSent(var a : COMSTAT) : DWORD;
+    begin
+       fXoffSent:=(a.flag0 and bm_COMSTAT_fXoffSent) shr bp_COMSTAT_fXoffSent;
+    end;
+
+  procedure set_fXoffSent(var a : COMSTAT; __fXoffSent : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fXoffSent shl bp_COMSTAT_fXoffSent) and bm_COMSTAT_fXoffSent);
+    end;
+
+  function fEof(var a : COMSTAT) : DWORD;
+    begin
+       fEof:=(a.flag0 and bm_COMSTAT_fEof) shr bp_COMSTAT_fEof;
+    end;
+
+  procedure set_fEof(var a : COMSTAT; __fEof : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fEof shl bp_COMSTAT_fEof) and bm_COMSTAT_fEof);
+    end;
+
+  function fTxim(var a : COMSTAT) : DWORD;
+    begin
+       fTxim:=(a.flag0 and bm_COMSTAT_fTxim) shr bp_COMSTAT_fTxim;
+    end;
+
+  procedure set_fTxim(var a : COMSTAT; __fTxim : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fTxim shl bp_COMSTAT_fTxim) and bm_COMSTAT_fTxim);
+    end;
+
+  function fReserved(var a : COMSTAT) : DWORD;
+    begin
+       fReserved:=(a.flag0 and bm_COMSTAT_fReserved) shr bp_COMSTAT_fReserved;
+    end;
+
+  procedure set_fReserved(var a : COMSTAT; __fReserved : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fReserved shl bp_COMSTAT_fReserved) and bm_COMSTAT_fReserved);
+    end;
+
+  function bAppReturnCode(var a : DDEACK) : word;
+    begin
+       bAppReturnCode:=(a.flag0 and bm_DDEACK_bAppReturnCode) shr bp_DDEACK_bAppReturnCode;
+    end;
+
+  procedure set_bAppReturnCode(var a : DDEACK; __bAppReturnCode : word);
+    begin
+       a.flag0:=a.flag0 or ((__bAppReturnCode shl bp_DDEACK_bAppReturnCode) and bm_DDEACK_bAppReturnCode);
+    end;
+
+  function reserved(var a : DDEACK) : word;
+    begin
+       reserved:=(a.flag0 and bm_DDEACK_reserved) shr bp_DDEACK_reserved;
+    end;
+
+  procedure set_reserved(var a : DDEACK; __reserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__reserved shl bp_DDEACK_reserved) and bm_DDEACK_reserved);
+    end;
+
+  function fBusy(var a : DDEACK) : word;
+    begin
+       fBusy:=(a.flag0 and bm_DDEACK_fBusy) shr bp_DDEACK_fBusy;
+    end;
+
+  procedure set_fBusy(var a : DDEACK; __fBusy : word);
+    begin
+       a.flag0:=a.flag0 or ((__fBusy shl bp_DDEACK_fBusy) and bm_DDEACK_fBusy);
+    end;
+
+  function fAck(var a : DDEACK) : word;
+    begin
+       fAck:=(a.flag0 and bm_DDEACK_fAck) shr bp_DDEACK_fAck;
+    end;
+
+  procedure set_fAck(var a : DDEACK; __fAck : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAck shl bp_DDEACK_fAck) and bm_DDEACK_fAck);
+    end;
+
+  function reserved(var a : DDEADVISE) : word;
+    begin
+       reserved:=(a.flag0 and bm_DDEADVISE_reserved) shr bp_DDEADVISE_reserved;
+    end;
+
+  procedure set_reserved(var a : DDEADVISE; __reserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__reserved shl bp_DDEADVISE_reserved) and bm_DDEADVISE_reserved);
+    end;
+
+  function fDeferUpd(var a : DDEADVISE) : word;
+    begin
+       fDeferUpd:=(a.flag0 and bm_DDEADVISE_fDeferUpd) shr bp_DDEADVISE_fDeferUpd;
+    end;
+
+  procedure set_fDeferUpd(var a : DDEADVISE; __fDeferUpd : word);
+    begin
+       a.flag0:=a.flag0 or ((__fDeferUpd shl bp_DDEADVISE_fDeferUpd) and bm_DDEADVISE_fDeferUpd);
+    end;
+
+  function fAckReq(var a : DDEADVISE) : word;
+    begin
+       fAckReq:=(a.flag0 and bm_DDEADVISE_fAckReq) shr bp_DDEADVISE_fAckReq;
+    end;
+
+  procedure set_fAckReq(var a : DDEADVISE; __fAckReq : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDEADVISE_fAckReq) and bm_DDEADVISE_fAckReq);
+    end;
+
+  function unused(var a : DDEDATA) : word;
+    begin
+       unused:=(a.flag0 and bm_DDEDATA_unused) shr bp_DDEDATA_unused;
+    end;
+
+  procedure set_unused(var a : DDEDATA; __unused : word);
+    begin
+       a.flag0:=a.flag0 or ((__unused shl bp_DDEDATA_unused) and bm_DDEDATA_unused);
+    end;
+
+  function fResponse(var a : DDEDATA) : word;
+    begin
+       fResponse:=(a.flag0 and bm_DDEDATA_fResponse) shr bp_DDEDATA_fResponse;
+    end;
+
+  procedure set_fResponse(var a : DDEDATA; __fResponse : word);
+    begin
+       a.flag0:=a.flag0 or ((__fResponse shl bp_DDEDATA_fResponse) and bm_DDEDATA_fResponse);
+    end;
+
+  function fRelease(var a : DDEDATA) : word;
+    begin
+       fRelease:=(a.flag0 and bm_DDEDATA_fRelease) shr bp_DDEDATA_fRelease;
+    end;
+
+  procedure set_fRelease(var a : DDEDATA; __fRelease : word);
+    begin
+       a.flag0:=a.flag0 or ((__fRelease shl bp_DDEDATA_fRelease) and bm_DDEDATA_fRelease);
+    end;
+
+  function reserved(var a : DDEDATA) : word;
+    begin
+       reserved:=(a.flag0 and bm_DDEDATA_reserved) shr bp_DDEDATA_reserved;
+    end;
+
+  procedure set_reserved(var a : DDEDATA; __reserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__reserved shl bp_DDEDATA_reserved) and bm_DDEDATA_reserved);
+    end;
+
+  function fAckReq(var a : DDEDATA) : word;
+    begin
+       fAckReq:=(a.flag0 and bm_DDEDATA_fAckReq) shr bp_DDEDATA_fAckReq;
+    end;
+
+  procedure set_fAckReq(var a : DDEDATA; __fAckReq : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDEDATA_fAckReq) and bm_DDEDATA_fAckReq);
+    end;
+
+  function unused(var a : DDELN) : word;
+    begin
+       unused:=(a.flag0 and bm_DDELN_unused) shr bp_DDELN_unused;
+    end;
+
+  procedure set_unused(var a : DDELN; __unused : word);
+    begin
+       a.flag0:=a.flag0 or ((__unused shl bp_DDELN_unused) and bm_DDELN_unused);
+    end;
+
+  function fRelease(var a : DDELN) : word;
+    begin
+       fRelease:=(a.flag0 and bm_DDELN_fRelease) shr bp_DDELN_fRelease;
+    end;
+
+  procedure set_fRelease(var a : DDELN; __fRelease : word);
+    begin
+       a.flag0:=a.flag0 or ((__fRelease shl bp_DDELN_fRelease) and bm_DDELN_fRelease);
+    end;
+
+  function fDeferUpd(var a : DDELN) : word;
+    begin
+       fDeferUpd:=(a.flag0 and bm_DDELN_fDeferUpd) shr bp_DDELN_fDeferUpd;
+    end;
+
+  procedure set_fDeferUpd(var a : DDELN; __fDeferUpd : word);
+    begin
+       a.flag0:=a.flag0 or ((__fDeferUpd shl bp_DDELN_fDeferUpd) and bm_DDELN_fDeferUpd);
+    end;
+
+  function fAckReq(var a : DDELN) : word;
+    begin
+       fAckReq:=(a.flag0 and bm_DDELN_fAckReq) shr bp_DDELN_fAckReq;
+    end;
+
+  procedure set_fAckReq(var a : DDELN; __fAckReq : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDELN_fAckReq) and bm_DDELN_fAckReq);
+    end;
+
+  function unused(var a : DDEPOKE) : word;
+    begin
+       unused:=(a.flag0 and bm_DDEPOKE_unused) shr bp_DDEPOKE_unused;
+    end;
+
+  procedure set_unused(var a : DDEPOKE; __unused : word);
+    begin
+       a.flag0:=a.flag0 or ((__unused shl bp_DDEPOKE_unused) and bm_DDEPOKE_unused);
+    end;
+
+  function fRelease(var a : DDEPOKE) : word;
+    begin
+       fRelease:=(a.flag0 and bm_DDEPOKE_fRelease) shr bp_DDEPOKE_fRelease;
+    end;
+
+  procedure set_fRelease(var a : DDEPOKE; __fRelease : word);
+    begin
+       a.flag0:=a.flag0 or ((__fRelease shl bp_DDEPOKE_fRelease) and bm_DDEPOKE_fRelease);
+    end;
+
+  function fReserved(var a : DDEPOKE) : word;
+    begin
+       fReserved:=(a.flag0 and bm_DDEPOKE_fReserved) shr bp_DDEPOKE_fReserved;
+    end;
+
+  procedure set_fReserved(var a : DDEPOKE; __fReserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__fReserved shl bp_DDEPOKE_fReserved) and bm_DDEPOKE_fReserved);
+    end;
+
+  function unused(var a : DDEUP) : word;
+    begin
+       unused:=(a.flag0 and bm_DDEUP_unused) shr bp_DDEUP_unused;
+    end;
+
+  procedure set_unused(var a : DDEUP; __unused : word);
+    begin
+       a.flag0:=a.flag0 or ((__unused shl bp_DDEUP_unused) and bm_DDEUP_unused);
+    end;
+
+  function fAck(var a : DDEUP) : word;
+    begin
+       fAck:=(a.flag0 and bm_DDEUP_fAck) shr bp_DDEUP_fAck;
+    end;
+
+  procedure set_fAck(var a : DDEUP; __fAck : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAck shl bp_DDEUP_fAck) and bm_DDEUP_fAck);
+    end;
+
+  function fRelease(var a : DDEUP) : word;
+    begin
+       fRelease:=(a.flag0 and bm_DDEUP_fRelease) shr bp_DDEUP_fRelease;
+    end;
+
+  procedure set_fRelease(var a : DDEUP; __fRelease : word);
+    begin
+       a.flag0:=a.flag0 or ((__fRelease shl bp_DDEUP_fRelease) and bm_DDEUP_fRelease);
+    end;
+
+  function fReserved(var a : DDEUP) : word;
+    begin
+       fReserved:=(a.flag0 and bm_DDEUP_fReserved) shr bp_DDEUP_fReserved;
+    end;
+
+  procedure set_fReserved(var a : DDEUP; __fReserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__fReserved shl bp_DDEUP_fReserved) and bm_DDEUP_fReserved);
+    end;
+
+  function fAckReq(var a : DDEUP) : word;
+    begin
+       fAckReq:=(a.flag0 and bm_DDEUP_fAckReq) shr bp_DDEUP_fAckReq;
+    end;
+
+  procedure set_fAckReq(var a : DDEUP; __fAckReq : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDEUP_fAckReq) and bm_DDEUP_fAckReq);
+    end;
+
+
+{$endif read_implementation}
+
+
+{$ifndef windows_include_files}
+end.
+{$endif not windows_include_files}
 {
   $Log$
-  Revision 1.3  1998-06-25 08:41:48  florian
+  Revision 1.4  1998-08-31 11:53:59  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+  Revision 1.3  1998/06/25 08:41:48  florian
     * better rtti
 
   Revision 1.2  1998/05/06 12:36:50  michael

+ 21 - 8
rtl/win32/syswin32.pp

@@ -243,10 +243,24 @@ end;
    { memory functions }
    function GlobalAlloc(mode,size:longint):longint;
      external 'kernel32' name 'GlobalAlloc';
+   function GlobalReAlloc(mode,size:longint):longint;
+     external 'kernel32' name 'GlobalReAlloc';
+   function GlobalHandle(p:pointer):longint;
+     external 'kernel32' name 'GlobalHandle';
    function GlobalLock(handle:longint):pointer;
      external 'kernel32' name 'GlobalLock';
+   function GlobalUnlock(h:longint):longint;
+     external 'kernel32' name 'GlobalUnlock';
+   function GlobalFree(h:longint):longint;
+     external 'kernel32' name 'GlobalFree';
    function GlobalSize(h:longint):longint;
      external 'kernel32' name 'GlobalSize';
+   procedure GlobalMemoryStatus(p:pointer);
+     external 'kernel32' name 'GlobalMemoryStatus';
+   function LocalAlloc(uFlags : UINT;uBytes :UINT) : HLOCAL;
+     external 'kernel32' name 'LocalAlloc';
+   function LocalFree(hMem:HLOCAL):HLOCAL;
+     external 'kernel32' name 'LocalFree';
 
 function Sbrk(size : longint):longint;
 var
@@ -254,13 +268,9 @@ var
 begin
   h:=GlobalAlloc(258,size);
   l:=longint(GlobalLock(h));
-{$ifdef SYSTEMDEBUG}  
+  if l=0 then l:=-1;
   Writeln('new heap part at $',hexstr(l,8), ' size = ',GlobalSize(h));
-{$endif SYSTEMDEBUG}  
-  if l=0 then
-   sbrk:=-1
-  else
-   sbrk:=l;
+  sbrk:=l;
 end;
 
 { include standard heap management }
@@ -751,8 +761,11 @@ end.
 
 {
   $Log$
-  Revision 1.17  1998-08-26 10:05:08  peter
-    * sbrk returns -1 on error
+  Revision 1.18  1998-08-31 11:54:00  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
 
   Revision 1.16  1998/08/24 14:45:22  pierre
     * sbrk was wrong

+ 1922 - 0
rtl/win32/unidef.pp

@@ -0,0 +1,1922 @@
+{
+    $Id$
+    This file is part of the Free Pascal run time library.
+    This unit contains the record definition for the Win32 API
+    Copyright (c) 1993,97 by Florian KLaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
+
+
+{$ifndef windows_include_files}
+
+unit unidef;
+
+{  Automatically converted by H2PAS.EXE from unicfun.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
+
+
+  interface
+
+   uses
+      base,defines,struct;
+
+{$endif not windows_include_files}
+
+{$ifdef read_interface}
+
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     UnicodeFunctions.h
+  
+     Declarations for all the Windows32 API Unicode Functions
+  
+     Copyright (C) 1996 Free Software Foundation, Inc.
+  
+     Author:  Scott Christley <[email protected]>
+     Date: 1996
+     
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+{$ifndef _GNU_H_WINDOWS32_UNICODEFUNCFIONSDEFAULT}
+{$define _GNU_H_WINDOWS32_UNICODEFUNCFIONSDEFAULT}
+{ C++ extern C conditionnal removed }
+  { __cplusplus  }
+
+  function GetBinaryType(lpApplicationName:LPCWSTR; lpBinaryType:LPDWORD):WINBOOL;
+
+  function GetShortPathName(lpszLongPath:LPCWSTR; lpszShortPath:LPWSTR; cchBuffer:DWORD):DWORD;
+
+  function GetEnvironmentStrings : LPWSTR;
+
+  function FreeEnvironmentStrings(_para1:LPWSTR):WINBOOL;
+
+  function FormatMessage(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPWSTR; 
+             nSize:DWORD; var Arguments:va_list):DWORD;
+
+  function CreateMailslot(lpName:LPCWSTR; nMaxMessageSize:DWORD; lReadTimeout:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE;
+
+  function lstrcmp(lpString1:LPCWSTR; lpString2:LPCWSTR):longint;
+
+  function lstrcmpi(lpString1:LPCWSTR; lpString2:LPCWSTR):longint;
+
+  function lstrcpyn(lpString1:LPWSTR; lpString2:LPCWSTR; iMaxLength:longint):LPWSTR;
+
+  function lstrcpy(lpString1:LPWSTR; lpString2:LPCWSTR):LPWSTR;
+
+  function lstrcat(lpString1:LPWSTR; lpString2:LPCWSTR):LPWSTR;
+
+  function lstrlen(lpString:LPCWSTR):longint;
+
+  function CreateMutex(lpMutexAttributes:LPSECURITY_ATTRIBUTES; bInitialOwner:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function OpenMutex(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function CreateEvent(lpEventAttributes:LPSECURITY_ATTRIBUTES; bManualReset:WINBOOL; bInitialState:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function OpenEvent(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function CreateSemaphore(lpSemaphoreAttributes:LPSECURITY_ATTRIBUTES; lInitialCount:LONG; lMaximumCount:LONG; lpName:LPCWSTR):HANDLE;
+
+  function OpenSemaphore(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function CreateFileMapping(hFile:HANDLE; lpFileMappingAttributes:LPSECURITY_ATTRIBUTES; flProtect:DWORD; dwMaximumSizeHigh:DWORD; dwMaximumSizeLow:DWORD; 
+             lpName:LPCWSTR):HANDLE;
+
+  function OpenFileMapping(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function GetLogicalDriveStrings(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD;
+
+  function LoadLibrary(lpLibFileName:LPCWSTR):HINSTANCE;
+
+  function LoadLibraryEx(lpLibFileName:LPCWSTR; hFile:HANDLE; dwFlags:DWORD):HINSTANCE;
+
+  function GetModuleFileName(hModule:HINSTANCE; lpFilename:LPWSTR; nSize:DWORD):DWORD;
+
+  function GetModuleHandle(lpModuleName:LPCWSTR):HMODULE;
+
+  procedure FatalAppExit(uAction:UINT; lpMessageText:LPCWSTR);
+
+  function GetCommandLine : LPWSTR;
+
+  function GetEnvironmentVariable(lpName:LPCWSTR; lpBuffer:LPWSTR; nSize:DWORD):DWORD;
+
+  function SetEnvironmentVariable(lpName:LPCWSTR; lpValue:LPCWSTR):WINBOOL;
+
+  function ExpandEnvironmentStrings(lpSrc:LPCWSTR; lpDst:LPWSTR; nSize:DWORD):DWORD;
+
+  procedure OutputDebugString(lpOutputString:LPCWSTR);
+
+  function FindResource(hModule:HINSTANCE; lpName:LPCWSTR; lpType:LPCWSTR):HRSRC;
+
+  function FindResourceEx(hModule:HINSTANCE; lpType:LPCWSTR; lpName:LPCWSTR; wLanguage:WORD):HRSRC;
+
+  function EnumResourceTypes(hModule:HINSTANCE; lpEnumFunc:ENUMRESTYPEPROC; lParam:LONG):WINBOOL;
+
+  function EnumResourceNames(hModule:HINSTANCE; lpType:LPCWSTR; lpEnumFunc:ENUMRESNAMEPROC; lParam:LONG):WINBOOL;
+
+  function EnumResourceLanguages(hModule:HINSTANCE; lpType:LPCWSTR; lpName:LPCWSTR; lpEnumFunc:ENUMRESLANGPROC; lParam:LONG):WINBOOL;
+
+  function BeginUpdateResource(pFileName:LPCWSTR; bDeleteExistingResources:WINBOOL):HANDLE;
+
+  function UpdateResource(hUpdate:HANDLE; lpType:LPCWSTR; lpName:LPCWSTR; wLanguage:WORD; lpData:LPVOID; 
+             cbData:DWORD):WINBOOL;
+
+  function EndUpdateResource(hUpdate:HANDLE; fDiscard:WINBOOL):WINBOOL;
+
+  function GlobalAddAtom(lpString:LPCWSTR):ATOM;
+
+  function GlobalFindAtom(lpString:LPCWSTR):ATOM;
+
+  function GlobalGetAtomName(nAtom:ATOM; lpBuffer:LPWSTR; nSize:longint):UINT;
+
+  function AddAtom(lpString:LPCWSTR):ATOM;
+
+  function FindAtom(lpString:LPCWSTR):ATOM;
+
+  function GetAtomName(nAtom:ATOM; lpBuffer:LPWSTR; nSize:longint):UINT;
+
+  function GetProfileInt(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; nDefault:INT):UINT;
+
+  function GetProfileString(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpDefault:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD):DWORD;
+
+  function WriteProfileString(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpString:LPCWSTR):WINBOOL;
+
+  function GetProfileSection(lpAppName:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD):DWORD;
+
+  function WriteProfileSection(lpAppName:LPCWSTR; lpString:LPCWSTR):WINBOOL;
+
+  function GetPrivateProfileInt(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; nDefault:INT; lpFileName:LPCWSTR):UINT;
+
+  function GetPrivateProfileString(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpDefault:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD; 
+             lpFileName:LPCWSTR):DWORD;
+
+  function WritePrivateProfileString(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpString:LPCWSTR; lpFileName:LPCWSTR):WINBOOL;
+
+  function GetPrivateProfileSection(lpAppName:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD; lpFileName:LPCWSTR):DWORD;
+
+  function WritePrivateProfileSection(lpAppName:LPCWSTR; lpString:LPCWSTR; lpFileName:LPCWSTR):WINBOOL;
+
+  function GetDriveType(lpRootPathName:LPCWSTR):UINT;
+
+  function GetSystemDirectory(lpBuffer:LPWSTR; uSize:UINT):UINT;
+
+  function GetTempPath(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD;
+
+  function GetTempFileName(lpPathName:LPCWSTR; lpPrefixString:LPCWSTR; uUnique:UINT; lpTempFileName:LPWSTR):UINT;
+
+  function GetWindowsDirectory(lpBuffer:LPWSTR; uSize:UINT):UINT;
+
+  function SetCurrentDirectory(lpPathName:LPCWSTR):WINBOOL;
+
+  function GetCurrentDirectory(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD;
+
+  function GetDiskFreeSpace(lpRootPathName:LPCWSTR; lpSectorsPerCluster:LPDWORD; lpBytesPerSector:LPDWORD; lpNumberOfFreeClusters:LPDWORD; lpTotalNumberOfClusters:LPDWORD):WINBOOL;
+
+  function CreateDirectory(lpPathName:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL;
+
+  function CreateDirectoryEx(lpTemplateDirectory:LPCWSTR; lpNewDirectory:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL;
+
+  function RemoveDirectory(lpPathName:LPCWSTR):WINBOOL;
+
+  function GetFullPathName(lpFileName:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR; var lpFilePart:LPWSTR):DWORD;
+
+  function DefineDosDevice(dwFlags:DWORD; lpDeviceName:LPCWSTR; lpTargetPath:LPCWSTR):WINBOOL;
+
+  function QueryDosDevice(lpDeviceName:LPCWSTR; lpTargetPath:LPWSTR; ucchMax:DWORD):DWORD;
+
+  function CreateFile(lpFileName:LPCWSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD; 
+             dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE;
+
+  function SetFileAttributes(lpFileName:LPCWSTR; dwFileAttributes:DWORD):WINBOOL;
+
+  function GetFileAttributes(lpFileName:LPCWSTR):DWORD;
+
+  function GetCompressedFileSize(lpFileName:LPCWSTR; lpFileSizeHigh:LPDWORD):DWORD;
+
+  function DeleteFile(lpFileName:LPCWSTR):WINBOOL;
+
+  function SearchPath(lpPath:LPCWSTR; lpFileName:LPCWSTR; lpExtension:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR; 
+             var lpFilePart:LPWSTR):DWORD;
+
+  function CopyFile(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR; bFailIfExists:WINBOOL):WINBOOL;
+
+  function MoveFile(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR):WINBOOL;
+
+  function MoveFileEx(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR; dwFlags:DWORD):WINBOOL;
+
+  function CreateNamedPipe(lpName:LPCWSTR; dwOpenMode:DWORD; dwPipeMode:DWORD; nMaxInstances:DWORD; nOutBufferSize:DWORD; 
+             nInBufferSize:DWORD; nDefaultTimeOut:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE;
+
+  function GetNamedPipeHandleState(hNamedPipe:HANDLE; lpState:LPDWORD; lpCurInstances:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD; 
+             lpUserName:LPWSTR; nMaxUserNameSize:DWORD):WINBOOL;
+
+  function CallNamedPipe(lpNamedPipeName:LPCWSTR; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; nTimeOut:DWORD):WINBOOL;
+
+  function WaitNamedPipe(lpNamedPipeName:LPCWSTR; nTimeOut:DWORD):WINBOOL;
+
+  function SetVolumeLabel(lpRootPathName:LPCWSTR; lpVolumeName:LPCWSTR):WINBOOL;
+
+  function GetVolumeInformation(lpRootPathName:LPCWSTR; lpVolumeNameBuffer:LPWSTR; nVolumeNameSize:DWORD; lpVolumeSerialNumber:LPDWORD; lpMaximumComponentLength:LPDWORD; 
+             lpFileSystemFlags:LPDWORD; lpFileSystemNameBuffer:LPWSTR; nFileSystemNameSize:DWORD):WINBOOL;
+
+  function ClearEventLog(hEventLog:HANDLE; lpBackupFileName:LPCWSTR):WINBOOL;
+
+  function BackupEventLog(hEventLog:HANDLE; lpBackupFileName:LPCWSTR):WINBOOL;
+
+  function OpenEventLog(lpUNCServerName:LPCWSTR; lpSourceName:LPCWSTR):HANDLE;
+
+  function RegisterEventSource(lpUNCServerName:LPCWSTR; lpSourceName:LPCWSTR):HANDLE;
+
+  function OpenBackupEventLog(lpUNCServerName:LPCWSTR; lpFileName:LPCWSTR):HANDLE;
+
+  function ReadEventLog(hEventLog:HANDLE; dwReadFlags:DWORD; dwRecordOffset:DWORD; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; 
+             var pnBytesRead:DWORD; var pnMinNumberOfBytesNeeded:DWORD):WINBOOL;
+
+  function ReportEvent(hEventLog:HANDLE; wType:WORD; wCategory:WORD; dwEventID:DWORD; lpUserSid:PSID; 
+             wNumStrings:WORD; dwDataSize:DWORD; var lpStrings:LPCWSTR; lpRawData:LPVOID):WINBOOL;
+
+  function AccessCheckAndAuditAlarm(SubsystemName:LPCWSTR; HandleId:LPVOID; ObjectTypeName:LPWSTR; ObjectName:LPWSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL;
+
+  function ObjectOpenAuditAlarm(SubsystemName:LPCWSTR; HandleId:LPVOID; ObjectTypeName:LPWSTR; ObjectName:LPWSTR; pSecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             ClientToken:HANDLE; DesiredAccess:DWORD; GrantedAccess:DWORD; Privileges:PPRIVILEGE_SET; ObjectCreation:WINBOOL; 
+             AccessGranted:WINBOOL; GenerateOnClose:LPBOOL):WINBOOL;
+
+  function ObjectPrivilegeAuditAlarm(SubsystemName:LPCWSTR; HandleId:LPVOID; ClientToken:HANDLE; DesiredAccess:DWORD; Privileges:PPRIVILEGE_SET; 
+             AccessGranted:WINBOOL):WINBOOL;
+
+  function ObjectCloseAuditAlarm(SubsystemName:LPCWSTR; HandleId:LPVOID; GenerateOnClose:WINBOOL):WINBOOL;
+
+  function PrivilegedServiceAuditAlarm(SubsystemName:LPCWSTR; ServiceName:LPCWSTR; ClientToken:HANDLE; Privileges:PPRIVILEGE_SET; AccessGranted:WINBOOL):WINBOOL;
+
+  function SetFileSecurity(lpFileName:LPCWSTR; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL;
+
+  function GetFileSecurity(lpFileName:LPCWSTR; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+  function FindFirstChangeNotification(lpPathName:LPCWSTR; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD):HANDLE;
+
+  function IsBadStringPtr(lpsz:LPCWSTR; ucchMax:UINT):WINBOOL;
+
+  function LookupAccountSid(lpSystemName:LPCWSTR; Sid:PSID; Name:LPWSTR; cbName:LPDWORD; ReferencedDomainName:LPWSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL;
+
+  function LookupAccountName(lpSystemName:LPCWSTR; lpAccountName:LPCWSTR; Sid:PSID; cbSid:LPDWORD; ReferencedDomainName:LPWSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL;
+
+  function LookupPrivilegeValue(lpSystemName:LPCWSTR; lpName:LPCWSTR; lpLuid:PLUID):WINBOOL;
+
+  function LookupPrivilegeName(lpSystemName:LPCWSTR; lpLuid:PLUID; lpName:LPWSTR; cbName:LPDWORD):WINBOOL;
+
+  function LookupPrivilegeDisplayName(lpSystemName:LPCWSTR; lpName:LPCWSTR; lpDisplayName:LPWSTR; cbDisplayName:LPDWORD; lpLanguageId:LPDWORD):WINBOOL;
+
+  function BuildCommDCB(lpDef:LPCWSTR; lpDCB:LPDCB):WINBOOL;
+
+  function BuildCommDCBAndTimeouts(lpDef:LPCWSTR; lpDCB:LPDCB; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL;
+
+  function CommConfigDialog(lpszName:LPCWSTR; hWnd:HWND; lpCC:LPCOMMCONFIG):WINBOOL;
+
+  function GetDefaultCommConfig(lpszName:LPCWSTR; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL;
+
+  function SetDefaultCommConfig(lpszName:LPCWSTR; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL;
+
+  function GetComputerName(lpBuffer:LPWSTR; nSize:LPDWORD):WINBOOL;
+
+  function SetComputerName(lpComputerName:LPCWSTR):WINBOOL;
+
+  function GetUserName(lpBuffer:LPWSTR; nSize:LPDWORD):WINBOOL;
+
+  function wvsprintf(_para1:LPWSTR; _para2:LPCWSTR; arglist:va_list):longint;
+
+  { variable number of args not yet implemented in FPC
+  function wsprintf(_para1:LPWSTR; _para2:LPCWSTR; ...):longint;}
+
+  function LoadKeyboardLayout(pwszKLID:LPCWSTR; Flags:UINT):HKL;
+
+  function GetKeyboardLayoutName(pwszKLID:LPWSTR):WINBOOL;
+
+  function CreateDesktop(lpszDesktop:LPWSTR; lpszDevice:LPWSTR; pDevmode:LPDEVMODE; dwFlags:DWORD; dwDesiredAccess:DWORD; 
+             lpsa:LPSECURITY_ATTRIBUTES):HDESK;
+
+  function OpenDesktop(lpszDesktop:LPWSTR; dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK;
+
+  function EnumDesktops(hwinsta:HWINSTA; lpEnumFunc:DESKTOPENUMPROC; lParam:LPARAM):WINBOOL;
+
+  function CreateWindowStation(lpwinsta:LPWSTR; dwReserved:DWORD; dwDesiredAccess:DWORD; lpsa:LPSECURITY_ATTRIBUTES):HWINSTA;
+
+  function OpenWindowStation(lpszWinSta:LPWSTR; fInherit:WINBOOL; dwDesiredAccess:DWORD):HWINSTA;
+
+  function EnumWindowStations(lpEnumFunc:ENUMWINDOWSTATIONPROC; lParam:LPARAM):WINBOOL;
+
+  function GetUserObjectInformation(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+  function SetUserObjectInformation(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD):WINBOOL;
+
+  function RegisterWindowMessage(lpString:LPCWSTR):UINT;
+
+  function GetMessage(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT):WINBOOL;
+
+(* Const before type ignored *)
+  function DispatchMessage(var lpMsg:MSG):LONG;
+
+  function PeekMessage(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT; wRemoveMsg:UINT):WINBOOL;
+
+  function SendMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function SendMessageTimeout(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; fuFlags:UINT; 
+             uTimeout:UINT; lpdwResult:LPDWORD):LRESULT;
+
+  function SendNotifyMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function SendMessageCallback(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; lpResultCallBack:SENDASYNCPROC; 
+             dwData:DWORD):WINBOOL;
+
+  function PostMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function PostThreadMessage(idThread:DWORD; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function DefWindowProc(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CallWindowProc(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+(* Const before type ignored *)
+  function RegisterClass(var lpWndClass:WNDCLASS):ATOM;
+
+  function UnregisterClass(lpClassName:LPCWSTR; hInstance:HINSTANCE):WINBOOL;
+
+  function GetClassInfo(hInstance:HINSTANCE; lpClassName:LPCWSTR; lpWndClass:LPWNDCLASS):WINBOOL;
+
+(* Const before type ignored *)
+  function RegisterClassEx(var _para1:WNDCLASSEX):ATOM;
+
+  function GetClassInfoEx(_para1:HINSTANCE; _para2:LPCWSTR; _para3:LPWNDCLASSEX):WINBOOL;
+
+  function CreateWindowEx(dwExStyle:DWORD; lpClassName:LPCWSTR; lpWindowName:LPCWSTR; dwStyle:DWORD; X:longint; 
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+
+  function CreateDialogParam(hInstance:HINSTANCE; lpTemplateName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND;
+
+  function CreateDialogIndirectParam(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND;
+
+  function DialogBoxParam(hInstance:HINSTANCE; lpTemplateName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint;
+
+  function DialogBoxIndirectParam(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint;
+
+  function SetDlgItemText(hDlg:HWND; nIDDlgItem:longint; lpString:LPCWSTR):WINBOOL;
+
+  function GetDlgItemText(hDlg:HWND; nIDDlgItem:longint; lpString:LPWSTR; nMaxCount:longint):UINT;
+
+  function SendDlgItemMessage(hDlg:HWND; nIDDlgItem:longint; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LONG;
+
+  function DefDlgProc(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CallMsgFilter(lpMsg:LPMSG; nCode:longint):WINBOOL;
+
+  function RegisterClipboardFormat(lpszFormat:LPCWSTR):UINT;
+
+  function GetClipboardFormatName(format:UINT; lpszFormatName:LPWSTR; cchMaxCount:longint):longint;
+
+  function CharToOem(lpszSrc:LPCWSTR; lpszDst:LPSTR):WINBOOL;
+
+  function OemToChar(lpszSrc:LPCSTR; lpszDst:LPWSTR):WINBOOL;
+
+  function CharToOemBuff(lpszSrc:LPCWSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL;
+
+  function OemToCharBuff(lpszSrc:LPCSTR; lpszDst:LPWSTR; cchDstLength:DWORD):WINBOOL;
+
+  function CharUpper(lpsz:LPWSTR):LPWSTR;
+
+  function CharUpperBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD;
+
+  function CharLower(lpsz:LPWSTR):LPWSTR;
+
+  function CharLowerBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD;
+
+  function CharNext(lpsz:LPCWSTR):LPWSTR;
+
+  function CharPrev(lpszStart:LPCWSTR; lpszCurrent:LPCWSTR):LPWSTR;
+
+  function IsCharAlpha(ch:WCHAR):WINBOOL;
+
+  function IsCharAlphaNumeric(ch:WCHAR):WINBOOL;
+
+  function IsCharUpper(ch:WCHAR):WINBOOL;
+
+  function IsCharLower(ch:WCHAR):WINBOOL;
+
+  function GetKeyNameText(lParam:LONG; lpString:LPWSTR; nSize:longint):longint;
+
+  function VkKeyScan(ch:WCHAR):SHORT;
+
+  function VkKeyScanEx(ch:WCHAR; dwhkl:HKL):SHORT;
+
+  function MapVirtualKey(uCode:UINT; uMapType:UINT):UINT;
+
+  function MapVirtualKeyEx(uCode:UINT; uMapType:UINT; dwhkl:HKL):UINT;
+
+  function LoadAccelerators(hInstance:HINSTANCE; lpTableName:LPCWSTR):HACCEL;
+
+  function CreateAcceleratorTable(_para1:LPACCEL; _para2:longint):HACCEL;
+
+  function CopyAcceleratorTable(hAccelSrc:HACCEL; lpAccelDst:LPACCEL; cAccelEntries:longint):longint;
+
+  function TranslateAccelerator(hWnd:HWND; hAccTable:HACCEL; lpMsg:LPMSG):longint;
+
+  function LoadMenu(hInstance:HINSTANCE; lpMenuName:LPCWSTR):HMENU;
+
+(* Const before type ignored *)
+  function LoadMenuIndirect(var lpMenuTemplate:MENUTEMPLATE):HMENU;
+
+  function ChangeMenu(hMenu:HMENU; cmd:UINT; lpszNewItem:LPCWSTR; cmdInsert:UINT; flags:UINT):WINBOOL;
+
+  function GetMenuString(hMenu:HMENU; uIDItem:UINT; lpString:LPWSTR; nMaxCount:longint; uFlag:UINT):longint;
+
+  function InsertMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL;
+
+  function AppendMenu(hMenu:HMENU; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL;
+
+  function ModifyMenu(hMnu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL;
+
+  function InsertMenuItem(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL;
+
+  function GetMenuItemInfo(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPMENUITEMINFO):WINBOOL;
+
+  function SetMenuItemInfo(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL;
+
+  function DrawText(hDC:HDC; lpString:LPCWSTR; nCount:longint; lpRect:LPRECT; uFormat:UINT):longint;
+
+  function DrawTextEx(_para1:HDC; _para2:LPWSTR; _para3:longint; _para4:LPRECT; _para5:UINT; 
+             _para6:LPDRAWTEXTPARAMS):longint;
+
+  function GrayString(hDC:HDC; hBrush:HBRUSH; lpOutputFunc:GRAYSTRINGPROC; lpData:LPARAM; nCount:longint; 
+             X:longint; Y:longint; nWidth:longint; nHeight:longint):WINBOOL;
+
+  function DrawState(_para1:HDC; _para2:HBRUSH; _para3:DRAWSTATEPROC; _para4:LPARAM; _para5:WPARAM; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:UINT):WINBOOL;
+
+  function TabbedTextOut(hDC:HDC; X:longint; Y:longint; lpString:LPCWSTR; nCount:longint; 
+             nTabPositions:longint; lpnTabStopPositions:LPINT; nTabOrigin:longint):LONG;
+
+  function GetTabbedTextExtent(hDC:HDC; lpString:LPCWSTR; nCount:longint; nTabPositions:longint; lpnTabStopPositions:LPINT):DWORD;
+
+  function SetProp(hWnd:HWND; lpString:LPCWSTR; hData:HANDLE):WINBOOL;
+
+  function GetProp(hWnd:HWND; lpString:LPCWSTR):HANDLE;
+
+  function RemoveProp(hWnd:HWND; lpString:LPCWSTR):HANDLE;
+
+  function EnumPropsEx(hWnd:HWND; lpEnumFunc:PROPENUMPROCEX; lParam:LPARAM):longint;
+
+  function EnumProps(hWnd:HWND; lpEnumFunc:PROPENUMPROC):longint;
+
+  function SetWindowText(hWnd:HWND; lpString:LPCWSTR):WINBOOL;
+
+  function GetWindowText(hWnd:HWND; lpString:LPWSTR; nMaxCount:longint):longint;
+
+  function GetWindowTextLength(hWnd:HWND):longint;
+
+  function MessageBox(hWnd:HWND; lpText:LPCWSTR; lpCaption:LPCWSTR; uType:UINT):longint;
+
+  function MessageBoxEx(hWnd:HWND; lpText:LPCWSTR; lpCaption:LPCWSTR; uType:UINT; wLanguageId:WORD):longint;
+
+  function MessageBoxIndirect(_para1:LPMSGBOXPARAMS):longint;
+
+  function GetWindowLong(hWnd:HWND; nIndex:longint):LONG;
+
+  function SetWindowLong(hWnd:HWND; nIndex:longint; dwNewLong:LONG):LONG;
+
+  function GetClassLong(hWnd:HWND; nIndex:longint):DWORD;
+
+  function SetClassLong(hWnd:HWND; nIndex:longint; dwNewLong:LONG):DWORD;
+
+  function FindWindow(lpClassName:LPCWSTR; lpWindowName:LPCWSTR):HWND;
+
+  function FindWindowEx(_para1:HWND; _para2:HWND; _para3:LPCWSTR; _para4:LPCWSTR):HWND;
+
+  function GetClassName(hWnd:HWND; lpClassName:LPWSTR; nMaxCount:longint):longint;
+
+  function SetWindowsHookEx(idHook:longint; lpfn:HOOKPROC; hmod:HINSTANCE; dwThreadId:DWORD):HHOOK;
+
+  function LoadBitmap(hInstance:HINSTANCE; lpBitmapName:LPCWSTR):HBITMAP;
+
+  function LoadCursor(hInstance:HINSTANCE; lpCursorName:LPCWSTR):HCURSOR;
+
+  function LoadCursorFromFile(lpFileName:LPCWSTR):HCURSOR;
+
+  function LoadIcon(hInstance:HINSTANCE; lpIconName:LPCWSTR):HICON;
+
+  function LoadImage(_para1:HINSTANCE; _para2:LPCWSTR; _para3:UINT; _para4:longint; _para5:longint; 
+             _para6:UINT):HANDLE;
+
+  function LoadString(hInstance:HINSTANCE; uID:UINT; lpBuffer:LPWSTR; nBufferMax:longint):longint;
+
+  function IsDialogMessage(hDlg:HWND; lpMsg:LPMSG):WINBOOL;
+
+  function DlgDirList(hDlg:HWND; lpPathSpec:LPWSTR; nIDListBox:longint; nIDStaticPath:longint; uFileType:UINT):longint;
+
+  function DlgDirSelectEx(hDlg:HWND; lpString:LPWSTR; nCount:longint; nIDListBox:longint):WINBOOL;
+
+  function DlgDirListComboBox(hDlg:HWND; lpPathSpec:LPWSTR; nIDComboBox:longint; nIDStaticPath:longint; uFiletype:UINT):longint;
+
+  function DlgDirSelectComboBoxEx(hDlg:HWND; lpString:LPWSTR; nCount:longint; nIDComboBox:longint):WINBOOL;
+
+  function DefFrameProc(hWnd:HWND; hWndMDIClient:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function DefMDIChildProc(hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CreateMDIWindow(lpClassName:LPWSTR; lpWindowName:LPWSTR; dwStyle:DWORD; X:longint; Y:longint; 
+             nWidth:longint; nHeight:longint; hWndParent:HWND; hInstance:HINSTANCE; lParam:LPARAM):HWND;
+
+  function WinHelp(hWndMain:HWND; lpszHelp:LPCWSTR; uCommand:UINT; dwData:DWORD):WINBOOL;
+
+  function ChangeDisplaySettings(lpDevMode:LPDEVMODE; dwFlags:DWORD):LONG;
+
+  function EnumDisplaySettings(lpszDeviceName:LPCWSTR; iModeNum:DWORD; lpDevMode:LPDEVMODE):WINBOOL;
+
+  function SystemParametersInfo(uiAction:UINT; uiParam:UINT; pvParam:PVOID; fWinIni:UINT):WINBOOL;
+
+  function AddFontResource(_para1:LPCWSTR):longint;
+
+  function CopyMetaFile(_para1:HMETAFILE; _para2:LPCWSTR):HMETAFILE;
+
+(* Const before type ignored *)
+  function CreateFontIndirect(var _para1:LOGFONT):HFONT;
+
+  function CreateFont(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD; _para7:DWORD; _para8:DWORD; _para9:DWORD; _para10:DWORD; 
+             _para11:DWORD; _para12:DWORD; _para13:DWORD; _para14:LPCWSTR):HFONT;
+
+(* Const before type ignored *)
+  function CreateIC(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR; var _para4:DEVMODE):HDC;
+
+  function CreateMetaFile(_para1:LPCWSTR):HDC;
+
+  function CreateScalableFontResource(_para1:DWORD; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR):WINBOOL;
+
+(* Const before type ignored *)
+  function DeviceCapabilities(_para1:LPCWSTR; _para2:LPCWSTR; _para3:WORD; _para4:LPWSTR; var _para5:DEVMODE):longint;
+
+  function EnumFontFamiliesEx(_para1:HDC; _para2:LPLOGFONT; _para3:FONTENUMEXPROC; _para4:LPARAM; _para5:DWORD):longint;
+
+  function EnumFontFamilies(_para1:HDC; _para2:LPCWSTR; _para3:FONTENUMPROC; _para4:LPARAM):longint;
+
+  function EnumFonts(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint;
+
+  function GetCharWidth(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL;
+
+  function GetCharWidth32(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL;
+
+  function GetCharWidthFloat(_para1:HDC; _para2:UINT; _para3:UINT; _para4:PFLOAT):WINBOOL;
+
+  function GetCharABCWidths(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABC):WINBOOL;
+
+  function GetCharABCWidthsFloat(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABCFLOAT):WINBOOL;
+
+(* Const before type ignored *)
+  function GetGlyphOutline(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPGLYPHMETRICS; _para5:DWORD; 
+             _para6:LPVOID; var _para7:MAT2):DWORD;
+
+  function GetMetaFile(_para1:LPCWSTR):HMETAFILE;
+
+  function GetOutlineTextMetrics(_para1:HDC; _para2:UINT; _para3:LPOUTLINETEXTMETRIC):UINT;
+
+  function GetTextExtentPoint(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function GetTextExtentPoint32(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function GetTextExtentExPoint(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:longint; _para5:LPINT; 
+             _para6:LPINT; _para7:LPSIZE):WINBOOL;
+
+  function GetCharacterPlacement(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:longint; _para5:LPGCP_RESULTS; 
+             _para6:DWORD):DWORD;
+
+(* Const before type ignored *)
+  function ResetDC(_para1:HDC; var _para2:DEVMODE):HDC;
+
+  function RemoveFontResource(_para1:LPCWSTR):WINBOOL;
+
+  function CopyEnhMetaFile(_para1:HENHMETAFILE; _para2:LPCWSTR):HENHMETAFILE;
+
+(* Const before type ignored *)
+  function CreateEnhMetaFile(_para1:HDC; _para2:LPCWSTR; var _para3:RECT; _para4:LPCWSTR):HDC;
+
+  function GetEnhMetaFile(_para1:LPCWSTR):HENHMETAFILE;
+
+  function GetEnhMetaFileDescription(_para1:HENHMETAFILE; _para2:UINT; _para3:LPWSTR):UINT;
+
+  function GetTextMetrics(_para1:HDC; _para2:LPTEXTMETRIC):WINBOOL;
+
+(* Const before type ignored *)
+  function StartDoc(_para1:HDC; var _para2:DOCINFO):longint;
+
+  function GetObject(_para1:HGDIOBJ; _para2:longint; _para3:LPVOID):longint;
+
+  function TextOut(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCWSTR; _para5:longint):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ExtTextOut(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; var _para5:RECT; 
+             _para6:LPCWSTR; _para7:UINT; var _para8:INT):WINBOOL;
+
+(* Const before type ignored *)
+  function PolyTextOut(_para1:HDC; var _para2:POLYTEXT; _para3:longint):WINBOOL;
+
+  function GetTextFace(_para1:HDC; _para2:longint; _para3:LPWSTR):longint;
+
+  function GetKerningPairs(_para1:HDC; _para2:DWORD; _para3:LPKERNINGPAIR):DWORD;
+
+  function GetLogColorSpace(_para1:HCOLORSPACE; _para2:LPLOGCOLORSPACE; _para3:DWORD):WINBOOL;
+
+  function CreateColorSpace(_para1:LPLOGCOLORSPACE):HCOLORSPACE;
+
+  function GetICMProfile(_para1:HDC; _para2:DWORD; _para3:LPWSTR):WINBOOL;
+
+  function SetICMProfile(_para1:HDC; _para2:LPWSTR):WINBOOL;
+
+  function UpdateICMRegKey(_para1:DWORD; _para2:DWORD; _para3:LPWSTR; _para4:UINT):WINBOOL;
+
+  function EnumICMProfiles(_para1:HDC; _para2:ICMENUMPROC; _para3:LPARAM):longint;
+
+  function CreatePropertySheetPage(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE;
+
+  function PropertySheet(lppsph:LPCPROPSHEETHEADER):longint;
+
+  function ImageList_LoadImage(hi:HINSTANCE; lpbmp:LPCWSTR; cx:longint; cGrow:longint; crMask:COLORREF; 
+             uType:UINT; uFlags:UINT):HIMAGELIST;
+
+  function CreateStatusWindow(style:LONG; lpszText:LPCWSTR; hwndParent:HWND; wID:UINT):HWND;
+
+  procedure DrawStatusText(hDC:HDC; lprc:LPRECT; pszText:LPCWSTR; uFlags:UINT);
+
+  function GetOpenFileName(_para1:LPOPENFILENAME):WINBOOL;
+
+  function GetSaveFileName(_para1:LPOPENFILENAME):WINBOOL;
+
+  function GetFileTitle(_para1:LPCWSTR; _para2:LPWSTR; _para3:WORD):integer;
+
+  function ChooseColor(_para1:LPCHOOSECOLOR):WINBOOL;
+
+  function ReplaceText(_para1:LPFINDREPLACE):HWND;
+
+  function ChooseFont(_para1:LPCHOOSEFONT):WINBOOL;
+
+  function FindText(_para1:LPFINDREPLACE):HWND;
+
+  function PrintDlg(_para1:LPPRINTDLG):WINBOOL;
+
+  function PageSetupDlg(_para1:LPPAGESETUPDLG):WINBOOL;
+
+  function CreateProcess(lpApplicationName:LPCWSTR; lpCommandLine:LPWSTR; lpProcessAttributes:LPSECURITY_ATTRIBUTES; lpThreadAttributes:LPSECURITY_ATTRIBUTES; bInheritHandles:WINBOOL; 
+             dwCreationFlags:DWORD; lpEnvironment:LPVOID; lpCurrentDirectory:LPCWSTR; lpStartupInfo:LPSTARTUPINFO; lpProcessInformation:LPPROCESS_INFORMATION):WINBOOL;
+
+  procedure GetStartupInfo(lpStartupInfo:LPSTARTUPINFO);
+
+  function FindFirstFile(lpFileName:LPCWSTR; lpFindFileData:LPWIN32_FIND_DATA):HANDLE;
+
+  function FindNextFile(hFindFile:HANDLE; lpFindFileData:LPWIN32_FIND_DATA):WINBOOL;
+
+  function GetVersionEx(lpVersionInformation:LPOSVERSIONINFO):WINBOOL;
+
+  { was #define dname(params) def_expr }
+  function CreateWindow(lpClassName:LPCWSTR; lpWindowName:LPCWSTR; dwStyle:DWORD; X:longint;
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+
+  { was #define dname(params) def_expr }
+  function CreateDialog(hInstance:HINSTANCE; lpName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogIndirect(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+
+  { was #define dname(params) def_expr }
+  function DialogBox(hInstance:HINSTANCE; lpTemplate:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxIndirect(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+
+(* Const before type ignored *)
+  function CreateDC(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR; var _para4:DEVMODE):HDC;
+
+  function CreateFontA(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD; _para7:DWORD; _para8:DWORD; _para9:DWORD; _para10:DWORD; 
+             _para11:DWORD; _para12:DWORD; _para13:DWORD; _para14:LPCSTR):HFONT;
+
+  function VerInstallFile(uFlags:DWORD; szSrcFileName:LPWSTR; szDestFileName:LPWSTR; szSrcDir:LPWSTR; szDestDir:LPWSTR; 
+             szCurDir:LPWSTR; szTmpFile:LPWSTR; lpuTmpFileLen:PUINT):DWORD;
+
+  function GetFileVersionInfoSize(lptstrFilename:LPWSTR; lpdwHandle:LPDWORD):DWORD;
+
+  function GetFileVersionInfo(lptstrFilename:LPWSTR; dwHandle:DWORD; dwLen:DWORD; lpData:LPVOID):WINBOOL;
+
+  function VerLanguageName(wLang:DWORD; szLang:LPWSTR; nSize:DWORD):DWORD;
+
+(* Const before type ignored *)
+  function VerQueryValue(pBlock:LPVOID; lpSubBlock:LPWSTR; var lplpBuffer:LPVOID; puLen:PUINT):WINBOOL;
+
+  function VerFindFile(uFlags:DWORD; szFileName:LPWSTR; szWinDir:LPWSTR; szAppDir:LPWSTR; szCurDir:LPWSTR; 
+             lpuCurDirLen:PUINT; szDestDir:LPWSTR; lpuDestDirLen:PUINT):DWORD;
+
+(* Const before type ignored *)
+  function RegSetValueEx(hKey:HKEY; lpValueName:LPCWSTR; Reserved:DWORD; dwType:DWORD; var lpData:BYTE; 
+             cbData:DWORD):LONG;
+
+  function RegUnLoadKey(hKey:HKEY; lpSubKey:LPCWSTR):LONG;
+
+  function InitiateSystemShutdown(lpMachineName:LPWSTR; lpMessage:LPWSTR; dwTimeout:DWORD; bForceAppsClosed:WINBOOL; bRebootAfterShutdown:WINBOOL):WINBOOL;
+
+  function AbortSystemShutdown(lpMachineName:LPWSTR):WINBOOL;
+
+  function RegRestoreKey(hKey:HKEY; lpFile:LPCWSTR; dwFlags:DWORD):LONG;
+
+  function RegSaveKey(hKey:HKEY; lpFile:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):LONG;
+
+  function RegSetValue(hKey:HKEY; lpSubKey:LPCWSTR; dwType:DWORD; lpData:LPCWSTR; cbData:DWORD):LONG;
+
+  function RegQueryValue(hKey:HKEY; lpSubKey:LPCWSTR; lpValue:LPWSTR; lpcbValue:PLONG):LONG;
+
+  function RegQueryMultipleValues(hKey:HKEY; val_list:PVALENT; num_vals:DWORD; lpValueBuf:LPWSTR; ldwTotsize:LPDWORD):LONG;
+
+  function RegQueryValueEx(hKey:HKEY; lpValueName:LPCWSTR; lpReserved:LPDWORD; lpType:LPDWORD; lpData:LPBYTE; 
+             lpcbData:LPDWORD):LONG;
+
+  function RegReplaceKey(hKey:HKEY; lpSubKey:LPCWSTR; lpNewFile:LPCWSTR; lpOldFile:LPCWSTR):LONG;
+
+  function RegConnectRegistry(lpMachineName:LPWSTR; hKey:HKEY; phkResult:PHKEY):LONG;
+
+  function RegCreateKey(hKey:HKEY; lpSubKey:LPCWSTR; phkResult:PHKEY):LONG;
+
+  function RegCreateKeyEx(hKey:HKEY; lpSubKey:LPCWSTR; Reserved:DWORD; lpClass:LPWSTR; dwOptions:DWORD; 
+             samDesired:REGSAM; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; phkResult:PHKEY; lpdwDisposition:LPDWORD):LONG;
+
+  function RegDeleteKey(hKey:HKEY; lpSubKey:LPCWSTR):LONG;
+
+  function RegDeleteValue(hKey:HKEY; lpValueName:LPCWSTR):LONG;
+
+  function RegEnumKey(hKey:HKEY; dwIndex:DWORD; lpName:LPWSTR; cbName:DWORD):LONG;
+
+  function RegEnumKeyEx(hKey:HKEY; dwIndex:DWORD; lpName:LPWSTR; lpcbName:LPDWORD; lpReserved:LPDWORD; 
+             lpClass:LPWSTR; lpcbClass:LPDWORD; lpftLastWriteTime:PFILETIME):LONG;
+
+  function RegEnumValue(hKey:HKEY; dwIndex:DWORD; lpValueName:LPWSTR; lpcbValueName:LPDWORD; lpReserved:LPDWORD; 
+             lpType:LPDWORD; lpData:LPBYTE; lpcbData:LPDWORD):LONG;
+
+  function RegLoadKey(hKey:HKEY; lpSubKey:LPCWSTR; lpFile:LPCWSTR):LONG;
+
+  function RegOpenKey(hKey:HKEY; lpSubKey:LPCWSTR; phkResult:PHKEY):LONG;
+
+  function RegOpenKeyEx(hKey:HKEY; lpSubKey:LPCWSTR; ulOptions:DWORD; samDesired:REGSAM; phkResult:PHKEY):LONG;
+
+  function RegQueryInfoKey(hKey:HKEY; lpClass:LPWSTR; lpcbClass:LPDWORD; lpReserved:LPDWORD; lpcSubKeys:LPDWORD; 
+             lpcbMaxSubKeyLen:LPDWORD; lpcbMaxClassLen:LPDWORD; lpcValues:LPDWORD; lpcbMaxValueNameLen:LPDWORD; lpcbMaxValueLen:LPDWORD; 
+             lpcbSecurityDescriptor:LPDWORD; lpftLastWriteTime:PFILETIME):LONG;
+
+  function CompareString(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCWSTR; cchCount1:longint; lpString2:LPCWSTR; 
+             cchCount2:longint):longint;
+
+  function LCMapString(Locale:LCID; dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestStr:LPWSTR; 
+             cchDest:longint):longint;
+
+  function GetLocaleInfo(Locale:LCID; LCType:LCTYPE; lpLCData:LPWSTR; cchData:longint):longint;
+
+  function SetLocaleInfo(Locale:LCID; LCType:LCTYPE; lpLCData:LPCWSTR):WINBOOL;
+
+(* Const before type ignored *)
+  function GetTimeFormat(Locale:LCID; dwFlags:DWORD; var lpTime:SYSTEMTIME; lpFormat:LPCWSTR; lpTimeStr:LPWSTR; 
+             cchTime:longint):longint;
+
+(* Const before type ignored *)
+  function GetDateFormat(Locale:LCID; dwFlags:DWORD; var lpDate:SYSTEMTIME; lpFormat:LPCWSTR; lpDateStr:LPWSTR; 
+             cchDate:longint):longint;
+
+(* Const before type ignored *)
+  function GetNumberFormat(Locale:LCID; dwFlags:DWORD; lpValue:LPCWSTR; var lpFormat:NUMBERFMT; lpNumberStr:LPWSTR; 
+             cchNumber:longint):longint;
+
+(* Const before type ignored *)
+  function GetCurrencyFormat(Locale:LCID; dwFlags:DWORD; lpValue:LPCWSTR; var lpFormat:CURRENCYFMT; lpCurrencyStr:LPWSTR; 
+             cchCurrency:longint):longint;
+
+  function EnumCalendarInfo(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL;
+
+  function EnumTimeFormats(lpTimeFmtEnumProc:TIMEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL;
+
+  function EnumDateFormats(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL;
+
+  function GetStringTypeEx(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL;
+
+  function GetStringType(dwInfoType:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL;
+
+  function FoldString(dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestStr:LPWSTR; cchDest:longint):longint;
+
+  function EnumSystemLocales(lpLocaleEnumProc:LOCALE_ENUMPROC; dwFlags:DWORD):WINBOOL;
+
+  function EnumSystemCodePages(lpCodePageEnumProc:CODEPAGE_ENUMPROC; dwFlags:DWORD):WINBOOL;
+
+  function PeekConsoleInput(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL;
+
+  function ReadConsoleInput(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleInput(hConsoleInput:HANDLE; var lpBuffer:INPUT_RECORD; nLength:DWORD; lpNumberOfEventsWritten:LPDWORD):WINBOOL;
+
+  function ReadConsoleOutput(hConsoleOutput:HANDLE; lpBuffer:PCHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpReadRegion:PSMALL_RECT):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleOutput(hConsoleOutput:HANDLE; var lpBuffer:CHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpWriteRegion:PSMALL_RECT):WINBOOL;
+
+  function ReadConsoleOutputCharacter(hConsoleOutput:HANDLE; lpCharacter:LPWSTR; nLength:DWORD; dwReadCoord:COORD; lpNumberOfCharsRead:LPDWORD):WINBOOL;
+
+  function WriteConsoleOutputCharacter(hConsoleOutput:HANDLE; lpCharacter:LPCWSTR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL;
+
+  function FillConsoleOutputCharacter(hConsoleOutput:HANDLE; cCharacter:WCHAR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ScrollConsoleScreenBuffer(hConsoleOutput:HANDLE; var lpScrollRectangle:SMALL_RECT; var lpClipRectangle:SMALL_RECT; dwDestinationOrigin:COORD; var lpFill:CHAR_INFO):WINBOOL;
+
+  function GetConsoleTitle(lpConsoleTitle:LPWSTR; nSize:DWORD):DWORD;
+
+  function SetConsoleTitle(lpConsoleTitle:LPCWSTR):WINBOOL;
+
+  function ReadConsole(hConsoleInput:HANDLE; lpBuffer:LPVOID; nNumberOfCharsToRead:DWORD; lpNumberOfCharsRead:LPDWORD; lpReserved:LPVOID):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsole(hConsoleOutput:HANDLE;lpBuffer:pointer; nNumberOfCharsToWrite:DWORD; lpNumberOfCharsWritten:LPDWORD; lpReserved:LPVOID):WINBOOL;
+
+  function WNetAddConnection(lpRemoteName:LPCWSTR; lpPassword:LPCWSTR; lpLocalName:LPCWSTR):DWORD;
+
+  function WNetAddConnection2(lpNetResource:LPNETRESOURCE; lpPassword:LPCWSTR; lpUserName:LPCWSTR; dwFlags:DWORD):DWORD;
+
+  function WNetAddConnection3(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpPassword:LPCWSTR; lpUserName:LPCWSTR; dwFlags:DWORD):DWORD;
+
+  function WNetCancelConnection(lpName:LPCWSTR; fForce:WINBOOL):DWORD;
+
+  function WNetCancelConnection2(lpName:LPCWSTR; dwFlags:DWORD; fForce:WINBOOL):DWORD;
+
+  function WNetGetConnection(lpLocalName:LPCWSTR; lpRemoteName:LPWSTR; lpnLength:LPDWORD):DWORD;
+
+  function WNetUseConnection(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpUserID:LPCWSTR; lpPassword:LPCWSTR; dwFlags:DWORD; 
+             lpAccessName:LPWSTR; lpBufferSize:LPDWORD; lpResult:LPDWORD):DWORD;
+
+  function WNetSetConnection(lpName:LPCWSTR; dwProperties:DWORD; pvValues:LPVOID):DWORD;
+
+  function WNetConnectionDialog1(lpConnDlgStruct:LPCONNECTDLGSTRUCT):DWORD;
+
+  function WNetDisconnectDialog1(lpConnDlgStruct:LPDISCDLGSTRUCT):DWORD;
+
+  function WNetOpenEnum(dwScope:DWORD; dwType:DWORD; dwUsage:DWORD; lpNetResource:LPNETRESOURCE; lphEnum:LPHANDLE):DWORD;
+
+  function WNetEnumResource(hEnum:HANDLE; lpcCount:LPDWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetUniversalName(lpLocalPath:LPCWSTR; dwInfoLevel:DWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetUser(lpName:LPCWSTR; lpUserName:LPWSTR; lpnLength:LPDWORD):DWORD;
+
+  function WNetGetProviderName(dwNetType:DWORD; lpProviderName:LPWSTR; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetNetworkInformation(lpProvider:LPCWSTR; lpNetInfoStruct:LPNETINFOSTRUCT):DWORD;
+
+  function WNetGetLastError(lpError:LPDWORD; lpErrorBuf:LPWSTR; nErrorBufSize:DWORD; lpNameBuf:LPWSTR; nNameBufSize:DWORD):DWORD;
+
+  function MultinetGetConnectionPerformance(lpNetResource:LPNETRESOURCE; lpNetConnectInfoStruct:LPNETCONNECTINFOSTRUCT):DWORD;
+
+  function ChangeServiceConfig(hService:SC_HANDLE; dwServiceType:DWORD; dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCWSTR; 
+             lpLoadOrderGroup:LPCWSTR; lpdwTagId:LPDWORD; lpDependencies:LPCWSTR; lpServiceStartName:LPCWSTR; lpPassword:LPCWSTR; 
+             lpDisplayName:LPCWSTR):WINBOOL;
+
+  function CreateService(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; lpDisplayName:LPCWSTR; dwDesiredAccess:DWORD; dwServiceType:DWORD; 
+             dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCWSTR; lpLoadOrderGroup:LPCWSTR; lpdwTagId:LPDWORD; 
+             lpDependencies:LPCWSTR; lpServiceStartName:LPCWSTR; lpPassword:LPCWSTR):SC_HANDLE;
+
+  function EnumDependentServices(hService:SC_HANDLE; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD; 
+             lpServicesReturned:LPDWORD):WINBOOL;
+
+  function EnumServicesStatus(hSCManager:SC_HANDLE; dwServiceType:DWORD; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; 
+             pcbBytesNeeded:LPDWORD; lpServicesReturned:LPDWORD; lpResumeHandle:LPDWORD):WINBOOL;
+
+  function GetServiceKeyName(hSCManager:SC_HANDLE; lpDisplayName:LPCWSTR; lpServiceName:LPWSTR; lpcchBuffer:LPDWORD):WINBOOL;
+
+  function GetServiceDisplayName(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; lpDisplayName:LPWSTR; lpcchBuffer:LPDWORD):WINBOOL;
+
+  function OpenSCManager(lpMachineName:LPCWSTR; lpDatabaseName:LPCWSTR; dwDesiredAccess:DWORD):SC_HANDLE;
+
+  function OpenService(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; dwDesiredAccess:DWORD):SC_HANDLE;
+
+  function QueryServiceConfig(hService:SC_HANDLE; lpServiceConfig:LPQUERY_SERVICE_CONFIG; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+
+  function QueryServiceLockStatus(hSCManager:SC_HANDLE; lpLockStatus:LPQUERY_SERVICE_LOCK_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+
+  function RegisterServiceCtrlHandler(lpServiceName:LPCWSTR; lpHandlerProc:LPHANDLER_FUNCTION):SERVICE_STATUS_HANDLE;
+
+  function StartServiceCtrlDispatcher(lpServiceStartTable:LPSERVICE_TABLE_ENTRY):WINBOOL;
+
+  function StartService(hService:SC_HANDLE; dwNumServiceArgs:DWORD; var lpServiceArgVectors:LPCWSTR):WINBOOL;
+
+  { Extensions to OpenGL  }
+  function wglUseFontBitmaps(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD):WINBOOL;
+
+  function wglUseFontOutlines(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT; _para7:longint; _para8:LPGLYPHMETRICSFLOAT):WINBOOL;
+
+  { -------------------------------------  }
+  { From shellapi.h in old Cygnus headers  }
+  function DragQueryFile(_para1:HDROP; _para2:cardinal; _para3:LPCWSTR; _para4:cardinal):cardinal;
+
+  function ExtractAssociatedIcon(_para1:HINSTANCE; _para2:LPCWSTR; var _para3:WORD):HICON;
+
+(* Const before type ignored *)
+  function ExtractIcon(_para1:HINSTANCE; _para2:LPCWSTR; _para3:cardinal):HICON;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function FindExecutable(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR):HINSTANCE;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ShellAbout(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:HICON):longint;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ShellExecute(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR; _para5:LPCWSTR; 
+             _para6:longint):HINSTANCE;
+
+  { end of stuff from shellapi.h in old Cygnus headers  }
+  { --------------------------------------------------  }
+  { From ddeml.h in old Cygnus headers  }
+  function DdeCreateStringHandle(_para1:DWORD; _para2:LPCWSTR; _para3:longint):HSZ;
+
+  function DdeInitialize(var _para1:DWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT;
+
+  function DdeQueryString(_para1:DWORD; _para2:HSZ; _para3:LPCWSTR; _para4:DWORD; _para5:longint):DWORD;
+
+  { end of stuff from ddeml.h in old Cygnus headers  }
+  { -----------------------------------------------  }
+  function LogonUser(_para1:LPWSTR; _para2:LPWSTR; _para3:LPWSTR; _para4:DWORD; _para5:DWORD; 
+             var _para6:HANDLE):WINBOOL;
+
+  function CreateProcessAsUser(_para1:HANDLE; _para2:LPCWSTR; _para3:LPWSTR; var _para4:SECURITY_ATTRIBUTES; var _para5:SECURITY_ATTRIBUTES; 
+             _para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCWSTR; var _para10:STARTUPINFO; 
+             var _para11:PROCESS_INFORMATION):WINBOOL;
+
+{ C++ end of extern C conditionnal removed }
+  { __cplusplus  }
+{$endif}
+  { _GNU_H_WINDOWS32_UNICODEFUNCFIONSDEFAULT  }
+
+{$endif read_interface}
+
+{$ifndef windows_include_files}
+  implementation
+
+    const External_library='kernel32'; {Setup as you need!}
+
+{$endif not windows_include_files}
+
+{$ifdef read_implementation}
+
+  function GetBinaryType(lpApplicationName:LPCWSTR; lpBinaryType:LPDWORD):WINBOOL; external External_library name 'GetBinaryTypeW';
+
+  function GetShortPathName(lpszLongPath:LPCWSTR; lpszShortPath:LPWSTR; cchBuffer:DWORD):DWORD; external External_library name 'GetShortPathNameW';
+
+  function GetEnvironmentStrings : LPWSTR; external External_library name 'GetEnvironmentStringsW';
+
+  function FreeEnvironmentStrings(_para1:LPWSTR):WINBOOL; external External_library name 'FreeEnvironmentStringsW';
+
+  function FormatMessage(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPWSTR; 
+             nSize:DWORD; var Arguments:va_list):DWORD; external External_library name 'FormatMessageW';
+
+  function CreateMailslot(lpName:LPCWSTR; nMaxMessageSize:DWORD; lReadTimeout:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE; external External_library name 'CreateMailslotW';
+
+  function lstrcmp(lpString1:LPCWSTR; lpString2:LPCWSTR):longint; external External_library name 'lstrcmpW';
+
+  function lstrcmpi(lpString1:LPCWSTR; lpString2:LPCWSTR):longint; external External_library name 'lstrcmpiW';
+
+  function lstrcpyn(lpString1:LPWSTR; lpString2:LPCWSTR; iMaxLength:longint):LPWSTR; external External_library name 'lstrcpynW';
+
+  function lstrcpy(lpString1:LPWSTR; lpString2:LPCWSTR):LPWSTR; external External_library name 'lstrcpyW';
+
+  function lstrcat(lpString1:LPWSTR; lpString2:LPCWSTR):LPWSTR; external External_library name 'lstrcatW';
+
+  function lstrlen(lpString:LPCWSTR):longint; external External_library name 'lstrlenW';
+
+  function CreateMutex(lpMutexAttributes:LPSECURITY_ATTRIBUTES; bInitialOwner:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'CreateMutexW';
+
+  function OpenMutex(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'OpenMutexW';
+
+  function CreateEvent(lpEventAttributes:LPSECURITY_ATTRIBUTES; bManualReset:WINBOOL; bInitialState:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'CreateEventW';
+
+  function OpenEvent(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'OpenEventW';
+
+  function CreateSemaphore(lpSemaphoreAttributes:LPSECURITY_ATTRIBUTES; lInitialCount:LONG; lMaximumCount:LONG; lpName:LPCWSTR):HANDLE; external External_library name 'CreateSemaphoreW';
+
+  function OpenSemaphore(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'OpenSemaphoreW';
+
+  function CreateFileMapping(hFile:HANDLE; lpFileMappingAttributes:LPSECURITY_ATTRIBUTES; flProtect:DWORD; dwMaximumSizeHigh:DWORD; dwMaximumSizeLow:DWORD; 
+             lpName:LPCWSTR):HANDLE; external External_library name 'CreateFileMappingW';
+
+  function OpenFileMapping(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'OpenFileMappingW';
+
+  function GetLogicalDriveStrings(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD; external External_library name 'GetLogicalDriveStringsW';
+
+  function LoadLibrary(lpLibFileName:LPCWSTR):HINSTANCE; external External_library name 'LoadLibraryW';
+
+  function LoadLibraryEx(lpLibFileName:LPCWSTR; hFile:HANDLE; dwFlags:DWORD):HINSTANCE; external External_library name 'LoadLibraryExW';
+
+  function GetModuleFileName(hModule:HINSTANCE; lpFilename:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetModuleFileNameW';
+
+  function GetModuleHandle(lpModuleName:LPCWSTR):HMODULE; external External_library name 'GetModuleHandleW';
+
+  procedure FatalAppExit(uAction:UINT; lpMessageText:LPCWSTR); external External_library name 'FatalAppExitW';
+
+  function GetCommandLine : LPWSTR; external External_library name 'GetCommandLineW';
+
+  function GetEnvironmentVariable(lpName:LPCWSTR; lpBuffer:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetEnvironmentVariableW';
+
+  function SetEnvironmentVariable(lpName:LPCWSTR; lpValue:LPCWSTR):WINBOOL; external External_library name 'SetEnvironmentVariableW';
+
+  function ExpandEnvironmentStrings(lpSrc:LPCWSTR; lpDst:LPWSTR; nSize:DWORD):DWORD; external External_library name 'ExpandEnvironmentStringsW';
+
+  procedure OutputDebugString(lpOutputString:LPCWSTR); external External_library name 'OutputDebugStringW';
+
+  function FindResource(hModule:HINSTANCE; lpName:LPCWSTR; lpType:LPCWSTR):HRSRC; external External_library name 'FindResourceW';
+
+  function FindResourceEx(hModule:HINSTANCE; lpType:LPCWSTR; lpName:LPCWSTR; wLanguage:WORD):HRSRC; external External_library name 'FindResourceExW';
+
+  function EnumResourceTypes(hModule:HINSTANCE; lpEnumFunc:ENUMRESTYPEPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceTypesW';
+
+  function EnumResourceNames(hModule:HINSTANCE; lpType:LPCWSTR; lpEnumFunc:ENUMRESNAMEPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceNamesW';
+
+  function EnumResourceLanguages(hModule:HINSTANCE; lpType:LPCWSTR; lpName:LPCWSTR; lpEnumFunc:ENUMRESLANGPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceLanguagesW';
+
+  function BeginUpdateResource(pFileName:LPCWSTR; bDeleteExistingResources:WINBOOL):HANDLE; external External_library name 'BeginUpdateResourceW';
+
+  function UpdateResource(hUpdate:HANDLE; lpType:LPCWSTR; lpName:LPCWSTR; wLanguage:WORD; lpData:LPVOID; 
+             cbData:DWORD):WINBOOL; external External_library name 'UpdateResourceW';
+
+  function EndUpdateResource(hUpdate:HANDLE; fDiscard:WINBOOL):WINBOOL; external External_library name 'EndUpdateResourceW';
+
+  function GlobalAddAtom(lpString:LPCWSTR):ATOM; external External_library name 'GlobalAddAtomW';
+
+  function GlobalFindAtom(lpString:LPCWSTR):ATOM; external External_library name 'GlobalFindAtomW';
+
+  function GlobalGetAtomName(nAtom:ATOM; lpBuffer:LPWSTR; nSize:longint):UINT; external External_library name 'GlobalGetAtomNameW';
+
+  function AddAtom(lpString:LPCWSTR):ATOM; external External_library name 'AddAtomW';
+
+  function FindAtom(lpString:LPCWSTR):ATOM; external External_library name 'FindAtomW';
+
+  function GetAtomName(nAtom:ATOM; lpBuffer:LPWSTR; nSize:longint):UINT; external External_library name 'GetAtomNameW';
+
+  function GetProfileInt(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; nDefault:INT):UINT; external External_library name 'GetProfileIntW';
+
+  function GetProfileString(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpDefault:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetProfileStringW';
+
+  function WriteProfileString(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpString:LPCWSTR):WINBOOL; external External_library name 'WriteProfileStringW';
+
+  function GetProfileSection(lpAppName:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetProfileSectionW';
+
+  function WriteProfileSection(lpAppName:LPCWSTR; lpString:LPCWSTR):WINBOOL; external External_library name 'WriteProfileSectionW';
+
+  function GetPrivateProfileInt(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; nDefault:INT; lpFileName:LPCWSTR):UINT; external External_library name 'GetPrivateProfileIntW';
+
+  function GetPrivateProfileString(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpDefault:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD; 
+             lpFileName:LPCWSTR):DWORD; external External_library name 'GetPrivateProfileStringW';
+
+  function WritePrivateProfileString(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpString:LPCWSTR; lpFileName:LPCWSTR):WINBOOL; external External_library name 'WritePrivateProfileStringW';
+
+  function GetPrivateProfileSection(lpAppName:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD; lpFileName:LPCWSTR):DWORD; external External_library name 'GetPrivateProfileSectionW';
+
+  function WritePrivateProfileSection(lpAppName:LPCWSTR; lpString:LPCWSTR; lpFileName:LPCWSTR):WINBOOL; external External_library name 'WritePrivateProfileSectionW';
+
+  function GetDriveType(lpRootPathName:LPCWSTR):UINT; external External_library name 'GetDriveTypeW';
+
+  function GetSystemDirectory(lpBuffer:LPWSTR; uSize:UINT):UINT; external External_library name 'GetSystemDirectoryW';
+
+  function GetTempPath(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD; external External_library name 'GetTempPathW';
+
+  function GetTempFileName(lpPathName:LPCWSTR; lpPrefixString:LPCWSTR; uUnique:UINT; lpTempFileName:LPWSTR):UINT; external External_library name 'GetTempFileNameW';
+
+  function GetWindowsDirectory(lpBuffer:LPWSTR; uSize:UINT):UINT; external External_library name 'GetWindowsDirectoryW';
+
+  function SetCurrentDirectory(lpPathName:LPCWSTR):WINBOOL; external External_library name 'SetCurrentDirectoryW';
+
+  function GetCurrentDirectory(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD; external External_library name 'GetCurrentDirectoryW';
+
+  function GetDiskFreeSpace(lpRootPathName:LPCWSTR; lpSectorsPerCluster:LPDWORD; lpBytesPerSector:LPDWORD; lpNumberOfFreeClusters:LPDWORD; lpTotalNumberOfClusters:LPDWORD):WINBOOL; external External_library name 'GetDiskFreeSpaceW';
+
+  function CreateDirectory(lpPathName:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL; external External_library name 'CreateDirectoryW';
+
+  function CreateDirectoryEx(lpTemplateDirectory:LPCWSTR; lpNewDirectory:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL; external External_library name 'CreateDirectoryExW';
+
+  function RemoveDirectory(lpPathName:LPCWSTR):WINBOOL; external External_library name 'RemoveDirectoryW';
+
+  function GetFullPathName(lpFileName:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR; var lpFilePart:LPWSTR):DWORD; external External_library name 'GetFullPathNameW';
+
+  function DefineDosDevice(dwFlags:DWORD; lpDeviceName:LPCWSTR; lpTargetPath:LPCWSTR):WINBOOL; external External_library name 'DefineDosDeviceW';
+
+  function QueryDosDevice(lpDeviceName:LPCWSTR; lpTargetPath:LPWSTR; ucchMax:DWORD):DWORD; external External_library name 'QueryDosDeviceW';
+
+  function CreateFile(lpFileName:LPCWSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD; 
+             dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE; external External_library name 'CreateFileW';
+
+  function SetFileAttributes(lpFileName:LPCWSTR; dwFileAttributes:DWORD):WINBOOL; external External_library name 'SetFileAttributesW';
+
+  function GetFileAttributes(lpFileName:LPCWSTR):DWORD; external External_library name 'GetFileAttributesW';
+
+  function GetCompressedFileSize(lpFileName:LPCWSTR; lpFileSizeHigh:LPDWORD):DWORD; external External_library name 'GetCompressedFileSizeW';
+
+  function DeleteFile(lpFileName:LPCWSTR):WINBOOL; external External_library name 'DeleteFileW';
+
+  function SearchPath(lpPath:LPCWSTR; lpFileName:LPCWSTR; lpExtension:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR; 
+             var lpFilePart:LPWSTR):DWORD; external External_library name 'SearchPathW';
+
+  function CopyFile(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR; bFailIfExists:WINBOOL):WINBOOL; external External_library name 'CopyFileW';
+
+  function MoveFile(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR):WINBOOL; external External_library name 'MoveFileW';
+
+  function MoveFileEx(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR; dwFlags:DWORD):WINBOOL; external External_library name 'MoveFileExW';
+
+  function CreateNamedPipe(lpName:LPCWSTR; dwOpenMode:DWORD; dwPipeMode:DWORD; nMaxInstances:DWORD; nOutBufferSize:DWORD; 
+             nInBufferSize:DWORD; nDefaultTimeOut:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE; external External_library name 'CreateNamedPipeW';
+
+  function GetNamedPipeHandleState(hNamedPipe:HANDLE; lpState:LPDWORD; lpCurInstances:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD; 
+             lpUserName:LPWSTR; nMaxUserNameSize:DWORD):WINBOOL; external External_library name 'GetNamedPipeHandleStateW';
+
+  function CallNamedPipe(lpNamedPipeName:LPCWSTR; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; nTimeOut:DWORD):WINBOOL; external External_library name 'CallNamedPipeW';
+
+  function WaitNamedPipe(lpNamedPipeName:LPCWSTR; nTimeOut:DWORD):WINBOOL; external External_library name 'WaitNamedPipeW';
+
+  function SetVolumeLabel(lpRootPathName:LPCWSTR; lpVolumeName:LPCWSTR):WINBOOL; external External_library name 'SetVolumeLabelW';
+
+  function GetVolumeInformation(lpRootPathName:LPCWSTR; lpVolumeNameBuffer:LPWSTR; nVolumeNameSize:DWORD; lpVolumeSerialNumber:LPDWORD; lpMaximumComponentLength:LPDWORD; 
+             lpFileSystemFlags:LPDWORD; lpFileSystemNameBuffer:LPWSTR; nFileSystemNameSize:DWORD):WINBOOL; external External_library name 'GetVolumeInformationW';
+
+  function ClearEventLog(hEventLog:HANDLE; lpBackupFileName:LPCWSTR):WINBOOL; external External_library name 'ClearEventLogW';
+
+  function BackupEventLog(hEventLog:HANDLE; lpBackupFileName:LPCWSTR):WINBOOL; external External_library name 'BackupEventLogW';
+
+  function OpenEventLog(lpUNCServerName:LPCWSTR; lpSourceName:LPCWSTR):HANDLE; external External_library name 'OpenEventLogW';
+
+  function RegisterEventSource(lpUNCServerName:LPCWSTR; lpSourceName:LPCWSTR):HANDLE; external External_library name 'RegisterEventSourceW';
+
+  function OpenBackupEventLog(lpUNCServerName:LPCWSTR; lpFileName:LPCWSTR):HANDLE; external External_library name 'OpenBackupEventLogW';
+
+  function ReadEventLog(hEventLog:HANDLE; dwReadFlags:DWORD; dwRecordOffset:DWORD; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; 
+             var pnBytesRead:DWORD; var pnMinNumberOfBytesNeeded:DWORD):WINBOOL; external External_library name 'ReadEventLogW';
+
+  function ReportEvent(hEventLog:HANDLE; wType:WORD; wCategory:WORD; dwEventID:DWORD; lpUserSid:PSID; 
+             wNumStrings:WORD; dwDataSize:DWORD; var lpStrings:LPCWSTR; lpRawData:LPVOID):WINBOOL; external External_library name 'ReportEventW';
+
+  function AccessCheckAndAuditAlarm(SubsystemName:LPCWSTR; HandleId:LPVOID; ObjectTypeName:LPWSTR; ObjectName:LPWSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL; external External_library name 'AccessCheckAndAuditAlarmW';
+
+  function ObjectOpenAuditAlarm(SubsystemName:LPCWSTR; HandleId:LPVOID; ObjectTypeName:LPWSTR; ObjectName:LPWSTR; pSecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             ClientToken:HANDLE; DesiredAccess:DWORD; GrantedAccess:DWORD; Privileges:PPRIVILEGE_SET; ObjectCreation:WINBOOL; 
+             AccessGranted:WINBOOL; GenerateOnClose:LPBOOL):WINBOOL; external External_library name 'ObjectOpenAuditAlarmW';
+
+  function ObjectPrivilegeAuditAlarm(SubsystemName:LPCWSTR; HandleId:LPVOID; ClientToken:HANDLE; DesiredAccess:DWORD; Privileges:PPRIVILEGE_SET; 
+             AccessGranted:WINBOOL):WINBOOL; external External_library name 'ObjectPrivilegeAuditAlarmW';
+
+  function ObjectCloseAuditAlarm(SubsystemName:LPCWSTR; HandleId:LPVOID; GenerateOnClose:WINBOOL):WINBOOL; external External_library name 'ObjectCloseAuditAlarmW';
+
+  function PrivilegedServiceAuditAlarm(SubsystemName:LPCWSTR; ServiceName:LPCWSTR; ClientToken:HANDLE; Privileges:PPRIVILEGE_SET; AccessGranted:WINBOOL):WINBOOL; external External_library name 'PrivilegedServiceAuditAlarmW';
+
+  function SetFileSecurity(lpFileName:LPCWSTR; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL; external External_library name 'SetFileSecurityW';
+
+  function GetFileSecurity(lpFileName:LPCWSTR; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetFileSecurityW';
+
+  function FindFirstChangeNotification(lpPathName:LPCWSTR; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD):HANDLE; external External_library name 'FindFirstChangeNotificationW';
+
+  function IsBadStringPtr(lpsz:LPCWSTR; ucchMax:UINT):WINBOOL; external External_library name 'IsBadStringPtrW';
+
+  function LookupAccountSid(lpSystemName:LPCWSTR; Sid:PSID; Name:LPWSTR; cbName:LPDWORD; ReferencedDomainName:LPWSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL; external External_library name 'LookupAccountSidW';
+
+  function LookupAccountName(lpSystemName:LPCWSTR; lpAccountName:LPCWSTR; Sid:PSID; cbSid:LPDWORD; ReferencedDomainName:LPWSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL; external External_library name 'LookupAccountNameW';
+
+  function LookupPrivilegeValue(lpSystemName:LPCWSTR; lpName:LPCWSTR; lpLuid:PLUID):WINBOOL; external External_library name 'LookupPrivilegeValueW';
+
+  function LookupPrivilegeName(lpSystemName:LPCWSTR; lpLuid:PLUID; lpName:LPWSTR; cbName:LPDWORD):WINBOOL; external External_library name 'LookupPrivilegeNameW';
+
+  function LookupPrivilegeDisplayName(lpSystemName:LPCWSTR; lpName:LPCWSTR; lpDisplayName:LPWSTR; cbDisplayName:LPDWORD; lpLanguageId:LPDWORD):WINBOOL; external External_library name 'LookupPrivilegeDisplayNameW';
+
+  function BuildCommDCB(lpDef:LPCWSTR; lpDCB:LPDCB):WINBOOL; external External_library name 'BuildCommDCBW';
+
+  function BuildCommDCBAndTimeouts(lpDef:LPCWSTR; lpDCB:LPDCB; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL; external External_library name 'BuildCommDCBAndTimeoutsW';
+
+  function CommConfigDialog(lpszName:LPCWSTR; hWnd:HWND; lpCC:LPCOMMCONFIG):WINBOOL; external External_library name 'CommConfigDialogW';
+
+  function GetDefaultCommConfig(lpszName:LPCWSTR; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL; external External_library name 'GetDefaultCommConfigW';
+
+  function SetDefaultCommConfig(lpszName:LPCWSTR; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL; external External_library name 'SetDefaultCommConfigW';
+
+  function GetComputerName(lpBuffer:LPWSTR; nSize:LPDWORD):WINBOOL; external External_library name 'GetComputerNameW';
+
+  function SetComputerName(lpComputerName:LPCWSTR):WINBOOL; external External_library name 'SetComputerNameW';
+
+  function GetUserName(lpBuffer:LPWSTR; nSize:LPDWORD):WINBOOL; external External_library name 'GetUserNameW';
+
+  function wvsprintf(_para1:LPWSTR; _para2:LPCWSTR; arglist:va_list):longint; external External_library name 'wvsprintfW';
+
+  {function wsprintf(_para1:LPWSTR; _para2:LPCWSTR; ...):longint;CDECL; external External_library name 'wsprintfW';}
+
+  function LoadKeyboardLayout(pwszKLID:LPCWSTR; Flags:UINT):HKL; external External_library name 'LoadKeyboardLayoutW';
+
+  function GetKeyboardLayoutName(pwszKLID:LPWSTR):WINBOOL; external External_library name 'GetKeyboardLayoutNameW';
+
+  function CreateDesktop(lpszDesktop:LPWSTR; lpszDevice:LPWSTR; pDevmode:LPDEVMODE; dwFlags:DWORD; dwDesiredAccess:DWORD; 
+             lpsa:LPSECURITY_ATTRIBUTES):HDESK; external External_library name 'CreateDesktopW';
+
+  function OpenDesktop(lpszDesktop:LPWSTR; dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK; external External_library name 'OpenDesktopW';
+
+  function EnumDesktops(hwinsta:HWINSTA; lpEnumFunc:DESKTOPENUMPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumDesktopsW';
+
+  function CreateWindowStation(lpwinsta:LPWSTR; dwReserved:DWORD; dwDesiredAccess:DWORD; lpsa:LPSECURITY_ATTRIBUTES):HWINSTA; external External_library name 'CreateWindowStationW';
+
+  function OpenWindowStation(lpszWinSta:LPWSTR; fInherit:WINBOOL; dwDesiredAccess:DWORD):HWINSTA; external External_library name 'OpenWindowStationW';
+
+  function EnumWindowStations(lpEnumFunc:ENUMWINDOWSTATIONPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumWindowStationsW';
+
+  function GetUserObjectInformation(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetUserObjectInformationW';
+
+  function SetUserObjectInformation(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD):WINBOOL; external External_library name 'SetUserObjectInformationW';
+
+  function RegisterWindowMessage(lpString:LPCWSTR):UINT; external External_library name 'RegisterWindowMessageW';
+
+  function GetMessage(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT):WINBOOL; external External_library name 'GetMessageW';
+
+  function DispatchMessage(var lpMsg:MSG):LONG; external External_library name 'DispatchMessageW';
+
+  function PeekMessage(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT; wRemoveMsg:UINT):WINBOOL; external External_library name 'PeekMessageW';
+
+  function SendMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'SendMessageW';
+
+  function SendMessageTimeout(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; fuFlags:UINT; 
+             uTimeout:UINT; lpdwResult:LPDWORD):LRESULT; external External_library name 'SendMessageTimeoutW';
+
+  function SendNotifyMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'SendNotifyMessageW';
+
+  function SendMessageCallback(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; lpResultCallBack:SENDASYNCPROC; 
+             dwData:DWORD):WINBOOL; external External_library name 'SendMessageCallbackW';
+
+  function PostMessage(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'PostMessageW';
+
+  function PostThreadMessage(idThread:DWORD; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'PostThreadMessageW';
+
+  function DefWindowProc(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefWindowProcW';
+
+  function CallWindowProc(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'CallWindowProcW';
+
+  function RegisterClass(var lpWndClass:WNDCLASS):ATOM; external External_library name 'RegisterClassW';
+
+  function UnregisterClass(lpClassName:LPCWSTR; hInstance:HINSTANCE):WINBOOL; external External_library name 'UnregisterClassW';
+
+  function GetClassInfo(hInstance:HINSTANCE; lpClassName:LPCWSTR; lpWndClass:LPWNDCLASS):WINBOOL; external External_library name 'GetClassInfoW';
+
+  function RegisterClassEx(var _para1:WNDCLASSEX):ATOM; external External_library name 'RegisterClassExW';
+
+  function GetClassInfoEx(_para1:HINSTANCE; _para2:LPCWSTR; _para3:LPWNDCLASSEX):WINBOOL; external External_library name 'GetClassInfoExW';
+
+  function CreateWindowEx(dwExStyle:DWORD; lpClassName:LPCWSTR; lpWindowName:LPCWSTR; dwStyle:DWORD; X:longint; 
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND; external External_library name 'CreateWindowExW';
+
+  function CreateDialogParam(hInstance:HINSTANCE; lpTemplateName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND; external External_library name 'CreateDialogParamW';
+
+  function CreateDialogIndirectParam(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND; external External_library name 'CreateDialogIndirectParamW';
+
+  function DialogBoxParam(hInstance:HINSTANCE; lpTemplateName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint; external External_library name 'DialogBoxParamW';
+
+  function DialogBoxIndirectParam(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint; external External_library name 'DialogBoxIndirectParamW';
+
+  function SetDlgItemText(hDlg:HWND; nIDDlgItem:longint; lpString:LPCWSTR):WINBOOL; external External_library name 'SetDlgItemTextW';
+
+  function GetDlgItemText(hDlg:HWND; nIDDlgItem:longint; lpString:LPWSTR; nMaxCount:longint):UINT; external External_library name 'GetDlgItemTextW';
+
+  function SendDlgItemMessage(hDlg:HWND; nIDDlgItem:longint; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LONG; external External_library name 'SendDlgItemMessageW';
+
+  function DefDlgProc(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefDlgProcW';
+
+  function CallMsgFilter(lpMsg:LPMSG; nCode:longint):WINBOOL; external External_library name 'CallMsgFilterW';
+
+  function RegisterClipboardFormat(lpszFormat:LPCWSTR):UINT; external External_library name 'RegisterClipboardFormatW';
+
+  function GetClipboardFormatName(format:UINT; lpszFormatName:LPWSTR; cchMaxCount:longint):longint; external External_library name 'GetClipboardFormatNameW';
+
+  function CharToOem(lpszSrc:LPCWSTR; lpszDst:LPSTR):WINBOOL; external External_library name 'CharToOemW';
+
+  function OemToChar(lpszSrc:LPCSTR; lpszDst:LPWSTR):WINBOOL; external External_library name 'OemToCharW';
+
+  function CharToOemBuff(lpszSrc:LPCWSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL; external External_library name 'CharToOemBuffW';
+
+  function OemToCharBuff(lpszSrc:LPCSTR; lpszDst:LPWSTR; cchDstLength:DWORD):WINBOOL; external External_library name 'OemToCharBuffW';
+
+  function CharUpper(lpsz:LPWSTR):LPWSTR; external External_library name 'CharUpperW';
+
+  function CharUpperBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD; external External_library name 'CharUpperBuffW';
+
+  function CharLower(lpsz:LPWSTR):LPWSTR; external External_library name 'CharLowerW';
+
+  function CharLowerBuff(lpsz:LPWSTR; cchLength:DWORD):DWORD; external External_library name 'CharLowerBuffW';
+
+  function CharNext(lpsz:LPCWSTR):LPWSTR; external External_library name 'CharNextW';
+
+  function CharPrev(lpszStart:LPCWSTR; lpszCurrent:LPCWSTR):LPWSTR; external External_library name 'CharPrevW';
+
+  function IsCharAlpha(ch:WCHAR):WINBOOL; external External_library name 'IsCharAlphaW';
+
+  function IsCharAlphaNumeric(ch:WCHAR):WINBOOL; external External_library name 'IsCharAlphaNumericW';
+
+  function IsCharUpper(ch:WCHAR):WINBOOL; external External_library name 'IsCharUpperW';
+
+  function IsCharLower(ch:WCHAR):WINBOOL; external External_library name 'IsCharLowerW';
+
+  function GetKeyNameText(lParam:LONG; lpString:LPWSTR; nSize:longint):longint; external External_library name 'GetKeyNameTextW';
+
+  function VkKeyScan(ch:WCHAR):SHORT; external External_library name 'VkKeyScanW';
+
+  function VkKeyScanEx(ch:WCHAR; dwhkl:HKL):SHORT; external External_library name 'VkKeyScanExW';
+
+  function MapVirtualKey(uCode:UINT; uMapType:UINT):UINT; external External_library name 'MapVirtualKeyW';
+
+  function MapVirtualKeyEx(uCode:UINT; uMapType:UINT; dwhkl:HKL):UINT; external External_library name 'MapVirtualKeyExW';
+
+  function LoadAccelerators(hInstance:HINSTANCE; lpTableName:LPCWSTR):HACCEL; external External_library name 'LoadAcceleratorsW';
+
+  function CreateAcceleratorTable(_para1:LPACCEL; _para2:longint):HACCEL; external External_library name 'CreateAcceleratorTableW';
+
+  function CopyAcceleratorTable(hAccelSrc:HACCEL; lpAccelDst:LPACCEL; cAccelEntries:longint):longint; external External_library name 'CopyAcceleratorTableW';
+
+  function TranslateAccelerator(hWnd:HWND; hAccTable:HACCEL; lpMsg:LPMSG):longint; external External_library name 'TranslateAcceleratorW';
+
+  function LoadMenu(hInstance:HINSTANCE; lpMenuName:LPCWSTR):HMENU; external External_library name 'LoadMenuW';
+
+  function LoadMenuIndirect(var lpMenuTemplate:MENUTEMPLATE):HMENU; external External_library name 'LoadMenuIndirectW';
+
+  function ChangeMenu(hMenu:HMENU; cmd:UINT; lpszNewItem:LPCWSTR; cmdInsert:UINT; flags:UINT):WINBOOL; external External_library name 'ChangeMenuW';
+
+  function GetMenuString(hMenu:HMENU; uIDItem:UINT; lpString:LPWSTR; nMaxCount:longint; uFlag:UINT):longint; external External_library name 'GetMenuStringW';
+
+  function InsertMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL; external External_library name 'InsertMenuW';
+
+  function AppendMenu(hMenu:HMENU; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL; external External_library name 'AppendMenuW';
+
+  function ModifyMenu(hMnu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL; external External_library name 'ModifyMenuW';
+
+  function InsertMenuItem(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL; external External_library name 'InsertMenuItemW';
+
+  function GetMenuItemInfo(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPMENUITEMINFO):WINBOOL; external External_library name 'GetMenuItemInfoW';
+
+  function SetMenuItemInfo(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL; external External_library name 'SetMenuItemInfoW';
+
+  function DrawText(hDC:HDC; lpString:LPCWSTR; nCount:longint; lpRect:LPRECT; uFormat:UINT):longint; external External_library name 'DrawTextW';
+
+  function DrawTextEx(_para1:HDC; _para2:LPWSTR; _para3:longint; _para4:LPRECT; _para5:UINT; 
+             _para6:LPDRAWTEXTPARAMS):longint; external External_library name 'DrawTextExW';
+
+  function GrayString(hDC:HDC; hBrush:HBRUSH; lpOutputFunc:GRAYSTRINGPROC; lpData:LPARAM; nCount:longint; 
+             X:longint; Y:longint; nWidth:longint; nHeight:longint):WINBOOL; external External_library name 'GrayStringW';
+
+  function DrawState(_para1:HDC; _para2:HBRUSH; _para3:DRAWSTATEPROC; _para4:LPARAM; _para5:WPARAM; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:UINT):WINBOOL; external External_library name 'DrawStateW';
+
+  function TabbedTextOut(hDC:HDC; X:longint; Y:longint; lpString:LPCWSTR; nCount:longint; 
+             nTabPositions:longint; lpnTabStopPositions:LPINT; nTabOrigin:longint):LONG; external External_library name 'TabbedTextOutW';
+
+  function GetTabbedTextExtent(hDC:HDC; lpString:LPCWSTR; nCount:longint; nTabPositions:longint; lpnTabStopPositions:LPINT):DWORD; external External_library name 'GetTabbedTextExtentW';
+
+  function SetProp(hWnd:HWND; lpString:LPCWSTR; hData:HANDLE):WINBOOL; external External_library name 'SetPropW';
+
+  function GetProp(hWnd:HWND; lpString:LPCWSTR):HANDLE; external External_library name 'GetPropW';
+
+  function RemoveProp(hWnd:HWND; lpString:LPCWSTR):HANDLE; external External_library name 'RemovePropW';
+
+  function EnumPropsEx(hWnd:HWND; lpEnumFunc:PROPENUMPROCEX; lParam:LPARAM):longint; external External_library name 'EnumPropsExW';
+
+  function EnumProps(hWnd:HWND; lpEnumFunc:PROPENUMPROC):longint; external External_library name 'EnumPropsW';
+
+  function SetWindowText(hWnd:HWND; lpString:LPCWSTR):WINBOOL; external External_library name 'SetWindowTextW';
+
+  function GetWindowText(hWnd:HWND; lpString:LPWSTR; nMaxCount:longint):longint; external External_library name 'GetWindowTextW';
+
+  function GetWindowTextLength(hWnd:HWND):longint; external External_library name 'GetWindowTextLengthW';
+
+  function MessageBox(hWnd:HWND; lpText:LPCWSTR; lpCaption:LPCWSTR; uType:UINT):longint; external External_library name 'MessageBoxW';
+
+  function MessageBoxEx(hWnd:HWND; lpText:LPCWSTR; lpCaption:LPCWSTR; uType:UINT; wLanguageId:WORD):longint; external External_library name 'MessageBoxExW';
+
+  function MessageBoxIndirect(_para1:LPMSGBOXPARAMS):longint; external External_library name 'MessageBoxIndirectW';
+
+  function GetWindowLong(hWnd:HWND; nIndex:longint):LONG; external External_library name 'GetWindowLongW';
+
+  function SetWindowLong(hWnd:HWND; nIndex:longint; dwNewLong:LONG):LONG; external External_library name 'SetWindowLongW';
+
+  function GetClassLong(hWnd:HWND; nIndex:longint):DWORD; external External_library name 'GetClassLongW';
+
+  function SetClassLong(hWnd:HWND; nIndex:longint; dwNewLong:LONG):DWORD; external External_library name 'SetClassLongW';
+
+  function FindWindow(lpClassName:LPCWSTR; lpWindowName:LPCWSTR):HWND; external External_library name 'FindWindowW';
+
+  function FindWindowEx(_para1:HWND; _para2:HWND; _para3:LPCWSTR; _para4:LPCWSTR):HWND; external External_library name 'FindWindowExW';
+
+  function GetClassName(hWnd:HWND; lpClassName:LPWSTR; nMaxCount:longint):longint; external External_library name 'GetClassNameW';
+
+  function SetWindowsHookEx(idHook:longint; lpfn:HOOKPROC; hmod:HINSTANCE; dwThreadId:DWORD):HHOOK; external External_library name 'SetWindowsHookExW';
+
+  function LoadBitmap(hInstance:HINSTANCE; lpBitmapName:LPCWSTR):HBITMAP; external External_library name 'LoadBitmapW';
+
+  function LoadCursor(hInstance:HINSTANCE; lpCursorName:LPCWSTR):HCURSOR; external External_library name 'LoadCursorW';
+
+  function LoadCursorFromFile(lpFileName:LPCWSTR):HCURSOR; external External_library name 'LoadCursorFromFileW';
+
+  function LoadIcon(hInstance:HINSTANCE; lpIconName:LPCWSTR):HICON; external External_library name 'LoadIconW';
+
+  function LoadImage(_para1:HINSTANCE; _para2:LPCWSTR; _para3:UINT; _para4:longint; _para5:longint; 
+             _para6:UINT):HANDLE; external External_library name 'LoadImageW';
+
+  function LoadString(hInstance:HINSTANCE; uID:UINT; lpBuffer:LPWSTR; nBufferMax:longint):longint; external External_library name 'LoadStringW';
+
+  function IsDialogMessage(hDlg:HWND; lpMsg:LPMSG):WINBOOL; external External_library name 'IsDialogMessageW';
+
+  function DlgDirList(hDlg:HWND; lpPathSpec:LPWSTR; nIDListBox:longint; nIDStaticPath:longint; uFileType:UINT):longint; external External_library name 'DlgDirListW';
+
+  function DlgDirSelectEx(hDlg:HWND; lpString:LPWSTR; nCount:longint; nIDListBox:longint):WINBOOL; external External_library name 'DlgDirSelectExW';
+
+  function DlgDirListComboBox(hDlg:HWND; lpPathSpec:LPWSTR; nIDComboBox:longint; nIDStaticPath:longint; uFiletype:UINT):longint; external External_library name 'DlgDirListComboBoxW';
+
+  function DlgDirSelectComboBoxEx(hDlg:HWND; lpString:LPWSTR; nCount:longint; nIDComboBox:longint):WINBOOL; external External_library name 'DlgDirSelectComboBoxExW';
+
+  function DefFrameProc(hWnd:HWND; hWndMDIClient:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefFrameProcW';
+
+  function DefMDIChildProc(hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefMDIChildProcW';
+
+  function CreateMDIWindow(lpClassName:LPWSTR; lpWindowName:LPWSTR; dwStyle:DWORD; X:longint; Y:longint; 
+             nWidth:longint; nHeight:longint; hWndParent:HWND; hInstance:HINSTANCE; lParam:LPARAM):HWND; external External_library name 'CreateMDIWindowW';
+
+  function WinHelp(hWndMain:HWND; lpszHelp:LPCWSTR; uCommand:UINT; dwData:DWORD):WINBOOL; external External_library name 'WinHelpW';
+
+  function ChangeDisplaySettings(lpDevMode:LPDEVMODE; dwFlags:DWORD):LONG; external External_library name 'ChangeDisplaySettingsW';
+
+  function EnumDisplaySettings(lpszDeviceName:LPCWSTR; iModeNum:DWORD; lpDevMode:LPDEVMODE):WINBOOL; external External_library name 'EnumDisplaySettingsW';
+
+  function SystemParametersInfo(uiAction:UINT; uiParam:UINT; pvParam:PVOID; fWinIni:UINT):WINBOOL; external External_library name 'SystemParametersInfoW';
+
+  function AddFontResource(_para1:LPCWSTR):longint; external External_library name 'AddFontResourceW';
+
+  function CopyMetaFile(_para1:HMETAFILE; _para2:LPCWSTR):HMETAFILE; external External_library name 'CopyMetaFileW';
+
+  function CreateFontIndirect(var _para1:LOGFONT):HFONT; external External_library name 'CreateFontIndirectW';
+
+  function CreateFont(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD; _para7:DWORD; _para8:DWORD; _para9:DWORD; _para10:DWORD; 
+             _para11:DWORD; _para12:DWORD; _para13:DWORD; _para14:LPCWSTR):HFONT; external External_library name 'CreateFontW';
+
+  function CreateIC(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR; var _para4:DEVMODE):HDC; external External_library name 'CreateICW';
+
+  function CreateMetaFile(_para1:LPCWSTR):HDC; external External_library name 'CreateMetaFileW';
+
+  function CreateScalableFontResource(_para1:DWORD; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR):WINBOOL; external External_library name 'CreateScalableFontResourceW';
+
+  function DeviceCapabilities(_para1:LPCWSTR; _para2:LPCWSTR; _para3:WORD; _para4:LPWSTR; var _para5:DEVMODE):longint; external External_library name 'DeviceCapabilitiesW';
+
+  function EnumFontFamiliesEx(_para1:HDC; _para2:LPLOGFONT; _para3:FONTENUMEXPROC; _para4:LPARAM; _para5:DWORD):longint; external External_library name 'EnumFontFamiliesExW';
+
+  function EnumFontFamilies(_para1:HDC; _para2:LPCWSTR; _para3:FONTENUMPROC; _para4:LPARAM):longint; external External_library name 'EnumFontFamiliesW';
+
+  function EnumFonts(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external External_library name 'EnumFontsW';
+
+  function GetCharWidth(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL; external External_library name 'GetCharWidthW';
+
+  function GetCharWidth32(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL; external External_library name 'GetCharWidth32W';
+
+  function GetCharWidthFloat(_para1:HDC; _para2:UINT; _para3:UINT; _para4:PFLOAT):WINBOOL; external External_library name 'GetCharWidthFloatW';
+
+  function GetCharABCWidths(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABC):WINBOOL; external External_library name 'GetCharABCWidthsW';
+
+  function GetCharABCWidthsFloat(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABCFLOAT):WINBOOL; external External_library name 'GetCharABCWidthsFloatW';
+
+  function GetGlyphOutline(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPGLYPHMETRICS; _para5:DWORD; 
+             _para6:LPVOID; var _para7:MAT2):DWORD; external External_library name 'GetGlyphOutlineW';
+
+  function GetMetaFile(_para1:LPCWSTR):HMETAFILE; external External_library name 'GetMetaFileW';
+
+  function GetOutlineTextMetrics(_para1:HDC; _para2:UINT; _para3:LPOUTLINETEXTMETRIC):UINT; external External_library name 'GetOutlineTextMetricsW';
+
+  function GetTextExtentPoint(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'GetTextExtentPointW';
+
+  function GetTextExtentPoint32(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'GetTextExtentPoint32W';
+
+  function GetTextExtentExPoint(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:longint; _para5:LPINT; 
+             _para6:LPINT; _para7:LPSIZE):WINBOOL; external External_library name 'GetTextExtentExPointW';
+
+  function GetCharacterPlacement(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:longint; _para5:LPGCP_RESULTS; 
+             _para6:DWORD):DWORD; external External_library name 'GetCharacterPlacementW';
+
+  function ResetDC(_para1:HDC; var _para2:DEVMODE):HDC; external External_library name 'ResetDCW';
+
+  function RemoveFontResource(_para1:LPCWSTR):WINBOOL; external External_library name 'RemoveFontResourceW';
+
+  function CopyEnhMetaFile(_para1:HENHMETAFILE; _para2:LPCWSTR):HENHMETAFILE; external External_library name 'CopyEnhMetaFileW';
+
+  function CreateEnhMetaFile(_para1:HDC; _para2:LPCWSTR; var _para3:RECT; _para4:LPCWSTR):HDC; external External_library name 'CreateEnhMetaFileW';
+
+  function GetEnhMetaFile(_para1:LPCWSTR):HENHMETAFILE; external External_library name 'GetEnhMetaFileW';
+
+  function GetEnhMetaFileDescription(_para1:HENHMETAFILE; _para2:UINT; _para3:LPWSTR):UINT; external External_library name 'GetEnhMetaFileDescriptionW';
+
+  function GetTextMetrics(_para1:HDC; _para2:LPTEXTMETRIC):WINBOOL; external External_library name 'GetTextMetricsW';
+
+  function StartDoc(_para1:HDC; var _para2:DOCINFO):longint; external External_library name 'StartDocW';
+
+  function GetObject(_para1:HGDIOBJ; _para2:longint; _para3:LPVOID):longint; external External_library name 'GetObjectW';
+
+  function TextOut(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCWSTR; _para5:longint):WINBOOL; external External_library name 'TextOutW';
+
+  function ExtTextOut(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; var _para5:RECT; 
+             _para6:LPCWSTR; _para7:UINT; var _para8:INT):WINBOOL; external External_library name 'ExtTextOutW';
+
+  function PolyTextOut(_para1:HDC; var _para2:POLYTEXT; _para3:longint):WINBOOL; external External_library name 'PolyTextOutW';
+
+  function GetTextFace(_para1:HDC; _para2:longint; _para3:LPWSTR):longint; external External_library name 'GetTextFaceW';
+
+  function GetKerningPairs(_para1:HDC; _para2:DWORD; _para3:LPKERNINGPAIR):DWORD; external External_library name 'GetKerningPairsW';
+
+  function GetLogColorSpace(_para1:HCOLORSPACE; _para2:LPLOGCOLORSPACE; _para3:DWORD):WINBOOL; external External_library name 'GetLogColorSpaceW';
+
+  function CreateColorSpace(_para1:LPLOGCOLORSPACE):HCOLORSPACE; external External_library name 'CreateColorSpaceW';
+
+  function GetICMProfile(_para1:HDC; _para2:DWORD; _para3:LPWSTR):WINBOOL; external External_library name 'GetICMProfileW';
+
+  function SetICMProfile(_para1:HDC; _para2:LPWSTR):WINBOOL; external External_library name 'SetICMProfileW';
+
+  function UpdateICMRegKey(_para1:DWORD; _para2:DWORD; _para3:LPWSTR; _para4:UINT):WINBOOL; external External_library name 'UpdateICMRegKeyW';
+
+  function EnumICMProfiles(_para1:HDC; _para2:ICMENUMPROC; _para3:LPARAM):longint; external External_library name 'EnumICMProfilesW';
+
+  function CreatePropertySheetPage(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE; external External_library name 'CreatePropertySheetPageW';
+
+  function PropertySheet(lppsph:LPCPROPSHEETHEADER):longint; external External_library name 'PropertySheetW';
+
+  function ImageList_LoadImage(hi:HINSTANCE; lpbmp:LPCWSTR; cx:longint; cGrow:longint; crMask:COLORREF; 
+             uType:UINT; uFlags:UINT):HIMAGELIST; external External_library name 'ImageList_LoadImageW';
+
+  function CreateStatusWindow(style:LONG; lpszText:LPCWSTR; hwndParent:HWND; wID:UINT):HWND; external External_library name 'CreateStatusWindowW';
+
+  procedure DrawStatusText(hDC:HDC; lprc:LPRECT; pszText:LPCWSTR; uFlags:UINT); external External_library name 'DrawStatusTextW';
+
+  function GetOpenFileName(_para1:LPOPENFILENAME):WINBOOL; external External_library name 'GetOpenFileNameW';
+
+  function GetSaveFileName(_para1:LPOPENFILENAME):WINBOOL; external External_library name 'GetSaveFileNameW';
+
+  function GetFileTitle(_para1:LPCWSTR; _para2:LPWSTR; _para3:WORD):integer; external External_library name 'GetFileTitleW';
+
+  function ChooseColor(_para1:LPCHOOSECOLOR):WINBOOL; external External_library name 'ChooseColorW';
+
+  function ReplaceText(_para1:LPFINDREPLACE):HWND; external External_library name 'ReplaceTextW';
+
+  function ChooseFont(_para1:LPCHOOSEFONT):WINBOOL; external External_library name 'ChooseFontW';
+
+  function FindText(_para1:LPFINDREPLACE):HWND; external External_library name 'FindTextW';
+
+  function PrintDlg(_para1:LPPRINTDLG):WINBOOL; external External_library name 'PrintDlgW';
+
+  function PageSetupDlg(_para1:LPPAGESETUPDLG):WINBOOL; external External_library name 'PageSetupDlgW';
+
+  function CreateProcess(lpApplicationName:LPCWSTR; lpCommandLine:LPWSTR; lpProcessAttributes:LPSECURITY_ATTRIBUTES; lpThreadAttributes:LPSECURITY_ATTRIBUTES; bInheritHandles:WINBOOL; 
+             dwCreationFlags:DWORD; lpEnvironment:LPVOID; lpCurrentDirectory:LPCWSTR; lpStartupInfo:LPSTARTUPINFO; lpProcessInformation:LPPROCESS_INFORMATION):WINBOOL; external External_library name 'CreateProcessW';
+
+  procedure GetStartupInfo(lpStartupInfo:LPSTARTUPINFO); external External_library name 'GetStartupInfoW';
+
+  function FindFirstFile(lpFileName:LPCWSTR; lpFindFileData:LPWIN32_FIND_DATA):HANDLE; external External_library name 'FindFirstFileW';
+
+  function FindNextFile(hFindFile:HANDLE; lpFindFileData:LPWIN32_FIND_DATA):WINBOOL; external External_library name 'FindNextFileW';
+
+  function GetVersionEx(lpVersionInformation:LPOSVERSIONINFO):WINBOOL; external External_library name 'GetVersionExW';
+
+  { was #define dname(params) def_expr }
+  function CreateWindow(lpClassName:LPCWSTR; lpWindowName:LPCWSTR; dwStyle:DWORD; X:longint;
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+    begin
+       CreateWindow:=CreateWindowExW(0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam);
+    end;
+
+  { was #define dname(params) def_expr }
+  function CreateDialog(hInstance:HINSTANCE; lpName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+    begin
+       CreateDialog:=CreateDialogParamW(hInstance,lpName,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogIndirect(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+    begin
+       CreateDialogIndirect:=CreateDialogIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function DialogBox(hInstance:HINSTANCE; lpTemplate:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+    begin
+       DialogBox:=DialogBoxParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxIndirect(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+    begin
+       DialogBoxIndirect:=DialogBoxIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  function CreateDC(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR; var _para4:DEVMODE):HDC; external External_library name 'CreateDCW';
+
+  function CreateFontA(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD; _para7:DWORD; _para8:DWORD; _para9:DWORD; _para10:DWORD; 
+             _para11:DWORD; _para12:DWORD; _para13:DWORD; _para14:LPCSTR):HFONT; external External_library name 'CreateFontA';
+
+  function VerInstallFile(uFlags:DWORD; szSrcFileName:LPWSTR; szDestFileName:LPWSTR; szSrcDir:LPWSTR; szDestDir:LPWSTR; 
+             szCurDir:LPWSTR; szTmpFile:LPWSTR; lpuTmpFileLen:PUINT):DWORD; external External_library name 'VerInstallFileW';
+
+  function GetFileVersionInfoSize(lptstrFilename:LPWSTR; lpdwHandle:LPDWORD):DWORD; external External_library name 'GetFileVersionInfoSizeW';
+
+  function GetFileVersionInfo(lptstrFilename:LPWSTR; dwHandle:DWORD; dwLen:DWORD; lpData:LPVOID):WINBOOL; external External_library name 'GetFileVersionInfoW';
+
+  function VerLanguageName(wLang:DWORD; szLang:LPWSTR; nSize:DWORD):DWORD; external External_library name 'VerLanguageNameW';
+
+  function VerQueryValue(pBlock:LPVOID; lpSubBlock:LPWSTR; var lplpBuffer:LPVOID; puLen:PUINT):WINBOOL; external External_library name 'VerQueryValueW';
+
+  function VerFindFile(uFlags:DWORD; szFileName:LPWSTR; szWinDir:LPWSTR; szAppDir:LPWSTR; szCurDir:LPWSTR; 
+             lpuCurDirLen:PUINT; szDestDir:LPWSTR; lpuDestDirLen:PUINT):DWORD; external External_library name 'VerFindFileW';
+
+  function RegSetValueEx(hKey:HKEY; lpValueName:LPCWSTR; Reserved:DWORD; dwType:DWORD; var lpData:BYTE; 
+             cbData:DWORD):LONG; external External_library name 'RegSetValueExW';
+
+  function RegUnLoadKey(hKey:HKEY; lpSubKey:LPCWSTR):LONG; external External_library name 'RegUnLoadKeyW';
+
+  function InitiateSystemShutdown(lpMachineName:LPWSTR; lpMessage:LPWSTR; dwTimeout:DWORD; bForceAppsClosed:WINBOOL; bRebootAfterShutdown:WINBOOL):WINBOOL; external External_library name 'InitiateSystemShutdownW';
+
+  function AbortSystemShutdown(lpMachineName:LPWSTR):WINBOOL; external External_library name 'AbortSystemShutdownW';
+
+  function RegRestoreKey(hKey:HKEY; lpFile:LPCWSTR; dwFlags:DWORD):LONG; external External_library name 'RegRestoreKeyW';
+
+  function RegSaveKey(hKey:HKEY; lpFile:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):LONG; external External_library name 'RegSaveKeyW';
+
+  function RegSetValue(hKey:HKEY; lpSubKey:LPCWSTR; dwType:DWORD; lpData:LPCWSTR; cbData:DWORD):LONG; external External_library name 'RegSetValueW';
+
+  function RegQueryValue(hKey:HKEY; lpSubKey:LPCWSTR; lpValue:LPWSTR; lpcbValue:PLONG):LONG; external External_library name 'RegQueryValueW';
+
+  function RegQueryMultipleValues(hKey:HKEY; val_list:PVALENT; num_vals:DWORD; lpValueBuf:LPWSTR; ldwTotsize:LPDWORD):LONG; external External_library name 'RegQueryMultipleValuesW';
+
+  function RegQueryValueEx(hKey:HKEY; lpValueName:LPCWSTR; lpReserved:LPDWORD; lpType:LPDWORD; lpData:LPBYTE; 
+             lpcbData:LPDWORD):LONG; external External_library name 'RegQueryValueExW';
+
+  function RegReplaceKey(hKey:HKEY; lpSubKey:LPCWSTR; lpNewFile:LPCWSTR; lpOldFile:LPCWSTR):LONG; external External_library name 'RegReplaceKeyW';
+
+  function RegConnectRegistry(lpMachineName:LPWSTR; hKey:HKEY; phkResult:PHKEY):LONG; external External_library name 'RegConnectRegistryW';
+
+  function RegCreateKey(hKey:HKEY; lpSubKey:LPCWSTR; phkResult:PHKEY):LONG; external External_library name 'RegCreateKeyW';
+
+  function RegCreateKeyEx(hKey:HKEY; lpSubKey:LPCWSTR; Reserved:DWORD; lpClass:LPWSTR; dwOptions:DWORD; 
+             samDesired:REGSAM; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; phkResult:PHKEY; lpdwDisposition:LPDWORD):LONG; external External_library name 'RegCreateKeyExW';
+
+  function RegDeleteKey(hKey:HKEY; lpSubKey:LPCWSTR):LONG; external External_library name 'RegDeleteKeyW';
+
+  function RegDeleteValue(hKey:HKEY; lpValueName:LPCWSTR):LONG; external External_library name 'RegDeleteValueW';
+
+  function RegEnumKey(hKey:HKEY; dwIndex:DWORD; lpName:LPWSTR; cbName:DWORD):LONG; external External_library name 'RegEnumKeyW';
+
+  function RegEnumKeyEx(hKey:HKEY; dwIndex:DWORD; lpName:LPWSTR; lpcbName:LPDWORD; lpReserved:LPDWORD; 
+             lpClass:LPWSTR; lpcbClass:LPDWORD; lpftLastWriteTime:PFILETIME):LONG; external External_library name 'RegEnumKeyExW';
+
+  function RegEnumValue(hKey:HKEY; dwIndex:DWORD; lpValueName:LPWSTR; lpcbValueName:LPDWORD; lpReserved:LPDWORD; 
+             lpType:LPDWORD; lpData:LPBYTE; lpcbData:LPDWORD):LONG; external External_library name 'RegEnumValueW';
+
+  function RegLoadKey(hKey:HKEY; lpSubKey:LPCWSTR; lpFile:LPCWSTR):LONG; external External_library name 'RegLoadKeyW';
+
+  function RegOpenKey(hKey:HKEY; lpSubKey:LPCWSTR; phkResult:PHKEY):LONG; external External_library name 'RegOpenKeyW';
+
+  function RegOpenKeyEx(hKey:HKEY; lpSubKey:LPCWSTR; ulOptions:DWORD; samDesired:REGSAM; phkResult:PHKEY):LONG; external External_library name 'RegOpenKeyExW';
+
+  function RegQueryInfoKey(hKey:HKEY; lpClass:LPWSTR; lpcbClass:LPDWORD; lpReserved:LPDWORD; lpcSubKeys:LPDWORD; 
+             lpcbMaxSubKeyLen:LPDWORD; lpcbMaxClassLen:LPDWORD; lpcValues:LPDWORD; lpcbMaxValueNameLen:LPDWORD; lpcbMaxValueLen:LPDWORD; 
+             lpcbSecurityDescriptor:LPDWORD; lpftLastWriteTime:PFILETIME):LONG; external External_library name 'RegQueryInfoKeyW';
+
+  function CompareString(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCWSTR; cchCount1:longint; lpString2:LPCWSTR; 
+             cchCount2:longint):longint; external External_library name 'CompareStringW';
+
+  function LCMapString(Locale:LCID; dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestStr:LPWSTR; 
+             cchDest:longint):longint; external External_library name 'LCMapStringW';
+
+  function GetLocaleInfo(Locale:LCID; LCType:LCTYPE; lpLCData:LPWSTR; cchData:longint):longint; external External_library name 'GetLocaleInfoW';
+
+  function SetLocaleInfo(Locale:LCID; LCType:LCTYPE; lpLCData:LPCWSTR):WINBOOL; external External_library name 'SetLocaleInfoW';
+
+  function GetTimeFormat(Locale:LCID; dwFlags:DWORD; var lpTime:SYSTEMTIME; lpFormat:LPCWSTR; lpTimeStr:LPWSTR; 
+             cchTime:longint):longint; external External_library name 'GetTimeFormatW';
+
+  function GetDateFormat(Locale:LCID; dwFlags:DWORD; var lpDate:SYSTEMTIME; lpFormat:LPCWSTR; lpDateStr:LPWSTR; 
+             cchDate:longint):longint; external External_library name 'GetDateFormatW';
+
+  function GetNumberFormat(Locale:LCID; dwFlags:DWORD; lpValue:LPCWSTR; var lpFormat:NUMBERFMT; lpNumberStr:LPWSTR; 
+             cchNumber:longint):longint; external External_library name 'GetNumberFormatW';
+
+  function GetCurrencyFormat(Locale:LCID; dwFlags:DWORD; lpValue:LPCWSTR; var lpFormat:CURRENCYFMT; lpCurrencyStr:LPWSTR; 
+             cchCurrency:longint):longint; external External_library name 'GetCurrencyFormatW';
+
+  function EnumCalendarInfo(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL; external External_library name 'EnumCalendarInfoW';
+
+  function EnumTimeFormats(lpTimeFmtEnumProc:TIMEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external External_library name 'EnumTimeFormatsW';
+
+  function EnumDateFormats(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external External_library name 'EnumDateFormatsW';
+
+  function GetStringTypeEx(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL; external External_library name 'GetStringTypeExW';
+
+  function GetStringType(dwInfoType:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL; external External_library name 'GetStringTypeW';
+
+  function FoldString(dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestStr:LPWSTR; cchDest:longint):longint; external External_library name 'FoldStringW';
+
+  function EnumSystemLocales(lpLocaleEnumProc:LOCALE_ENUMPROC; dwFlags:DWORD):WINBOOL; external External_library name 'EnumSystemLocalesW';
+
+  function EnumSystemCodePages(lpCodePageEnumProc:CODEPAGE_ENUMPROC; dwFlags:DWORD):WINBOOL; external External_library name 'EnumSystemCodePagesW';
+
+  function PeekConsoleInput(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL; external External_library name 'PeekConsoleInputW';
+
+  function ReadConsoleInput(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL; external External_library name 'ReadConsoleInputW';
+
+  function WriteConsoleInput(hConsoleInput:HANDLE; var lpBuffer:INPUT_RECORD; nLength:DWORD; lpNumberOfEventsWritten:LPDWORD):WINBOOL; external External_library name 'WriteConsoleInputW';
+
+  function ReadConsoleOutput(hConsoleOutput:HANDLE; lpBuffer:PCHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpReadRegion:PSMALL_RECT):WINBOOL; external External_library name 'ReadConsoleOutputW';
+
+  function WriteConsoleOutput(hConsoleOutput:HANDLE; var lpBuffer:CHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpWriteRegion:PSMALL_RECT):WINBOOL; external External_library name 'WriteConsoleOutputW';
+
+  function ReadConsoleOutputCharacter(hConsoleOutput:HANDLE; lpCharacter:LPWSTR; nLength:DWORD; dwReadCoord:COORD; lpNumberOfCharsRead:LPDWORD):WINBOOL; external External_library name 'ReadConsoleOutputCharacterW';
+
+  function WriteConsoleOutputCharacter(hConsoleOutput:HANDLE; lpCharacter:LPCWSTR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL; external External_library name 'WriteConsoleOutputCharacterW';
+
+  function FillConsoleOutputCharacter(hConsoleOutput:HANDLE; cCharacter:WCHAR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL; external External_library name 'FillConsoleOutputCharacterW';
+
+  function ScrollConsoleScreenBuffer(hConsoleOutput:HANDLE; var lpScrollRectangle:SMALL_RECT; var lpClipRectangle:SMALL_RECT; dwDestinationOrigin:COORD; var lpFill:CHAR_INFO):WINBOOL; external External_library name 'ScrollConsoleScreenBufferW';
+
+  function GetConsoleTitle(lpConsoleTitle:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetConsoleTitleW';
+
+  function SetConsoleTitle(lpConsoleTitle:LPCWSTR):WINBOOL; external External_library name 'SetConsoleTitleW';
+
+  function ReadConsole(hConsoleInput:HANDLE; lpBuffer:LPVOID; nNumberOfCharsToRead:DWORD; lpNumberOfCharsRead:LPDWORD; lpReserved:LPVOID):WINBOOL; external External_library name 'ReadConsoleW';
+
+  function WriteConsole(hConsoleOutput:HANDLE;lpBuffer:pointer; nNumberOfCharsToWrite:DWORD; lpNumberOfCharsWritten:LPDWORD; lpReserved:LPVOID):WINBOOL; external External_library name 'WriteConsoleW';
+
+  function WNetAddConnection(lpRemoteName:LPCWSTR; lpPassword:LPCWSTR; lpLocalName:LPCWSTR):DWORD; external External_library name 'WNetAddConnectionW';
+
+  function WNetAddConnection2(lpNetResource:LPNETRESOURCE; lpPassword:LPCWSTR; lpUserName:LPCWSTR; dwFlags:DWORD):DWORD; external External_library name 'WNetAddConnection2W';
+
+  function WNetAddConnection3(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpPassword:LPCWSTR; lpUserName:LPCWSTR; dwFlags:DWORD):DWORD; external External_library name 'WNetAddConnection3W';
+
+  function WNetCancelConnection(lpName:LPCWSTR; fForce:WINBOOL):DWORD; external External_library name 'WNetCancelConnectionW';
+
+  function WNetCancelConnection2(lpName:LPCWSTR; dwFlags:DWORD; fForce:WINBOOL):DWORD; external External_library name 'WNetCancelConnection2W';
+
+  function WNetGetConnection(lpLocalName:LPCWSTR; lpRemoteName:LPWSTR; lpnLength:LPDWORD):DWORD; external External_library name 'WNetGetConnectionW';
+
+  function WNetUseConnection(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpUserID:LPCWSTR; lpPassword:LPCWSTR; dwFlags:DWORD; 
+             lpAccessName:LPWSTR; lpBufferSize:LPDWORD; lpResult:LPDWORD):DWORD; external External_library name 'WNetUseConnectionW';
+
+  function WNetSetConnection(lpName:LPCWSTR; dwProperties:DWORD; pvValues:LPVOID):DWORD; external External_library name 'WNetSetConnectionW';
+
+  function WNetConnectionDialog1(lpConnDlgStruct:LPCONNECTDLGSTRUCT):DWORD; external External_library name 'WNetConnectionDialog1W';
+
+  function WNetDisconnectDialog1(lpConnDlgStruct:LPDISCDLGSTRUCT):DWORD; external External_library name 'WNetDisconnectDialog1W';
+
+  function WNetOpenEnum(dwScope:DWORD; dwType:DWORD; dwUsage:DWORD; lpNetResource:LPNETRESOURCE; lphEnum:LPHANDLE):DWORD; external External_library name 'WNetOpenEnumW';
+
+  function WNetEnumResource(hEnum:HANDLE; lpcCount:LPDWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetEnumResourceW';
+
+  function WNetGetUniversalName(lpLocalPath:LPCWSTR; dwInfoLevel:DWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetGetUniversalNameW';
+
+  function WNetGetUser(lpName:LPCWSTR; lpUserName:LPWSTR; lpnLength:LPDWORD):DWORD; external External_library name 'WNetGetUserW';
+
+  function WNetGetProviderName(dwNetType:DWORD; lpProviderName:LPWSTR; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetGetProviderNameW';
+
+  function WNetGetNetworkInformation(lpProvider:LPCWSTR; lpNetInfoStruct:LPNETINFOSTRUCT):DWORD; external External_library name 'WNetGetNetworkInformationW';
+
+  function WNetGetLastError(lpError:LPDWORD; lpErrorBuf:LPWSTR; nErrorBufSize:DWORD; lpNameBuf:LPWSTR; nNameBufSize:DWORD):DWORD; external External_library name 'WNetGetLastErrorW';
+
+  function MultinetGetConnectionPerformance(lpNetResource:LPNETRESOURCE; lpNetConnectInfoStruct:LPNETCONNECTINFOSTRUCT):DWORD; external External_library name 'MultinetGetConnectionPerformanceW';
+
+  function ChangeServiceConfig(hService:SC_HANDLE; dwServiceType:DWORD; dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCWSTR; 
+             lpLoadOrderGroup:LPCWSTR; lpdwTagId:LPDWORD; lpDependencies:LPCWSTR; lpServiceStartName:LPCWSTR; lpPassword:LPCWSTR; 
+             lpDisplayName:LPCWSTR):WINBOOL; external External_library name 'ChangeServiceConfigW';
+
+  function CreateService(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; lpDisplayName:LPCWSTR; dwDesiredAccess:DWORD; dwServiceType:DWORD; 
+             dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCWSTR; lpLoadOrderGroup:LPCWSTR; lpdwTagId:LPDWORD; 
+             lpDependencies:LPCWSTR; lpServiceStartName:LPCWSTR; lpPassword:LPCWSTR):SC_HANDLE; external External_library name 'CreateServiceW';
+
+  function EnumDependentServices(hService:SC_HANDLE; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD; 
+             lpServicesReturned:LPDWORD):WINBOOL; external External_library name 'EnumDependentServicesW';
+
+  function EnumServicesStatus(hSCManager:SC_HANDLE; dwServiceType:DWORD; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; 
+             pcbBytesNeeded:LPDWORD; lpServicesReturned:LPDWORD; lpResumeHandle:LPDWORD):WINBOOL; external External_library name 'EnumServicesStatusW';
+
+  function GetServiceKeyName(hSCManager:SC_HANDLE; lpDisplayName:LPCWSTR; lpServiceName:LPWSTR; lpcchBuffer:LPDWORD):WINBOOL; external External_library name 'GetServiceKeyNameW';
+
+  function GetServiceDisplayName(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; lpDisplayName:LPWSTR; lpcchBuffer:LPDWORD):WINBOOL; external External_library name 'GetServiceDisplayNameW';
+
+  function OpenSCManager(lpMachineName:LPCWSTR; lpDatabaseName:LPCWSTR; dwDesiredAccess:DWORD):SC_HANDLE; external External_library name 'OpenSCManagerW';
+
+  function OpenService(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; dwDesiredAccess:DWORD):SC_HANDLE; external External_library name 'OpenServiceW';
+
+  function QueryServiceConfig(hService:SC_HANDLE; lpServiceConfig:LPQUERY_SERVICE_CONFIG; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL; external External_library name 'QueryServiceConfigW';
+
+  function QueryServiceLockStatus(hSCManager:SC_HANDLE; lpLockStatus:LPQUERY_SERVICE_LOCK_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL; external External_library name 'QueryServiceLockStatusW';
+
+  function RegisterServiceCtrlHandler(lpServiceName:LPCWSTR; lpHandlerProc:LPHANDLER_FUNCTION):SERVICE_STATUS_HANDLE; external External_library name 'RegisterServiceCtrlHandlerW';
+
+  function StartServiceCtrlDispatcher(lpServiceStartTable:LPSERVICE_TABLE_ENTRY):WINBOOL; external External_library name 'StartServiceCtrlDispatcherW';
+
+  function StartService(hService:SC_HANDLE; dwNumServiceArgs:DWORD; var lpServiceArgVectors:LPCWSTR):WINBOOL; external External_library name 'StartServiceW';
+
+  function wglUseFontBitmaps(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD):WINBOOL; external External_library name 'wglUseFontBitmapsW';
+
+  function wglUseFontOutlines(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT; _para7:longint; _para8:LPGLYPHMETRICSFLOAT):WINBOOL; external External_library name 'wglUseFontOutlinesW';
+
+  function DragQueryFile(_para1:HDROP; _para2:cardinal; _para3:LPCWSTR; _para4:cardinal):cardinal; external External_library name 'DragQueryFileW';
+
+  function ExtractAssociatedIcon(_para1:HINSTANCE; _para2:LPCWSTR; var _para3:WORD):HICON; external External_library name 'ExtractAssociatedIconW';
+
+  function ExtractIcon(_para1:HINSTANCE; _para2:LPCWSTR; _para3:cardinal):HICON; external External_library name 'ExtractIconW';
+
+  function FindExecutable(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR):HINSTANCE; external External_library name 'FindExecutableW';
+
+  function ShellAbout(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:HICON):longint; external External_library name 'ShellAboutW';
+
+  function ShellExecute(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR; _para5:LPCWSTR; 
+             _para6:longint):HINSTANCE; external External_library name 'ShellExecuteW';
+
+  function DdeCreateStringHandle(_para1:DWORD; _para2:LPCWSTR; _para3:longint):HSZ; external External_library name 'DdeCreateStringHandleW';
+
+  function DdeInitialize(var _para1:DWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT; external External_library name 'DdeInitializeW';
+
+  function DdeQueryString(_para1:DWORD; _para2:HSZ; _para3:LPCWSTR; _para4:DWORD; _para5:longint):DWORD; external External_library name 'DdeQueryStringW';
+
+  function LogonUser(_para1:LPWSTR; _para2:LPWSTR; _para3:LPWSTR; _para4:DWORD; _para5:DWORD; 
+             var _para6:HANDLE):WINBOOL; external External_library name 'LogonUserW';
+
+  function CreateProcessAsUser(_para1:HANDLE; _para2:LPCWSTR; _para3:LPWSTR; var _para4:SECURITY_ATTRIBUTES; var _para5:SECURITY_ATTRIBUTES; 
+             _para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCWSTR; var _para10:STARTUPINFO; 
+             var _para11:PROCESS_INFORMATION):WINBOOL; external External_library name 'CreateProcessAsUserW';
+
+
+{$endif read_implementation}
+
+{$ifndef windows_include_files}
+end.
+{$endif not windows_include_files}
+{
+  $Log$
+  Revision 1.1  1998-08-31 11:54:01  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+}

+ 9 - 0
rtl/win32/unidef.sed

@@ -0,0 +1,9 @@
+s/function \([^(]*\)W *(/function \1(/
+s/procedure \([^(]*\)W *(/procedure \1(/
+s/function \([^:(]*\)W *: */function \1 : /
+s/procedure \([^;(]*\)W *;/procedure \1;/
+s/\([^ \t]*\)W *:=/\1:=/
+s/unifun;/unidef;/
+s/unifun.pp,v/unidef.pp,v/
+s/UNICODEFUNCTIONS/UNICODEFUNCFIONSDEFAULT/
+

+ 1922 - 0
rtl/win32/unifun.pp

@@ -0,0 +1,1922 @@
+{
+    $Id$
+    This file is part of the Free Pascal run time library.
+    This unit contains the record definition for the Win32 API
+    Copyright (c) 1993,97 by Florian KLaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{$ifndef windows_include_files}
+{$define read_interface}
+{$define read_implementation}
+{$endif not windows_include_files}
+
+
+{$ifndef windows_include_files}
+
+unit unifun;
+
+{  Automatically converted by H2PAS.EXE from unicfun.h
+   Utility made by Florian Klaempfl 25th-28th september 96
+   Improvements made by Mark A. Malakanov 22nd-25th may 97 
+   Further improvements by Michael Van Canneyt, April 1998 
+   define handling and error recovery by Pierre Muller, June 1998 }
+
+
+  interface
+
+   uses
+      base,defines,struct;
+
+{$endif not windows_include_files}
+
+{$ifdef read_interface}
+
+  { C default packing is dword }
+
+{$PACKRECORDS 4}
+  { 
+     UnicodeFunctions.h
+  
+     Declarations for all the Windows32 API Unicode Functions
+  
+     Copyright (C) 1996 Free Software Foundation, Inc.
+  
+     Author:  Scott Christley <[email protected]>
+     Date: 1996
+     
+     This file is part of the Windows32 API Library.
+  
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+     License as published by the Free Software Foundation; either
+     version 2 of the License, or (at your option) any later version.
+     
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Library General Public License for more details.
+  
+     If you are interested in a warranty or support for this source code,
+     contact Scott Christley <[email protected]> for more information.
+     
+     You should have received a copy of the GNU Library General Public
+     License along with this library; see the file COPYING.LIB.
+     If not, write to the Free Software Foundation, 
+     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   }
+{$ifndef _GNU_H_WINDOWS32_UNICODEFUNCTIONS}
+{$define _GNU_H_WINDOWS32_UNICODEFUNCTIONS}
+{ C++ extern C conditionnal removed }
+  { __cplusplus  }
+
+  function GetBinaryTypeW(lpApplicationName:LPCWSTR; lpBinaryType:LPDWORD):WINBOOL;
+
+  function GetShortPathNameW(lpszLongPath:LPCWSTR; lpszShortPath:LPWSTR; cchBuffer:DWORD):DWORD;
+
+  function GetEnvironmentStringsW:LPWSTR;
+
+  function FreeEnvironmentStringsW(_para1:LPWSTR):WINBOOL;
+
+  function FormatMessageW(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPWSTR; 
+             nSize:DWORD; var Arguments:va_list):DWORD;
+
+  function CreateMailslotW(lpName:LPCWSTR; nMaxMessageSize:DWORD; lReadTimeout:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE;
+
+  function lstrcmpW(lpString1:LPCWSTR; lpString2:LPCWSTR):longint;
+
+  function lstrcmpiW(lpString1:LPCWSTR; lpString2:LPCWSTR):longint;
+
+  function lstrcpynW(lpString1:LPWSTR; lpString2:LPCWSTR; iMaxLength:longint):LPWSTR;
+
+  function lstrcpyW(lpString1:LPWSTR; lpString2:LPCWSTR):LPWSTR;
+
+  function lstrcatW(lpString1:LPWSTR; lpString2:LPCWSTR):LPWSTR;
+
+  function lstrlenW(lpString:LPCWSTR):longint;
+
+  function CreateMutexW(lpMutexAttributes:LPSECURITY_ATTRIBUTES; bInitialOwner:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function OpenMutexW(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function CreateEventW(lpEventAttributes:LPSECURITY_ATTRIBUTES; bManualReset:WINBOOL; bInitialState:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function OpenEventW(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function CreateSemaphoreW(lpSemaphoreAttributes:LPSECURITY_ATTRIBUTES; lInitialCount:LONG; lMaximumCount:LONG; lpName:LPCWSTR):HANDLE;
+
+  function OpenSemaphoreW(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function CreateFileMappingW(hFile:HANDLE; lpFileMappingAttributes:LPSECURITY_ATTRIBUTES; flProtect:DWORD; dwMaximumSizeHigh:DWORD; dwMaximumSizeLow:DWORD; 
+             lpName:LPCWSTR):HANDLE;
+
+  function OpenFileMappingW(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE;
+
+  function GetLogicalDriveStringsW(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD;
+
+  function LoadLibraryW(lpLibFileName:LPCWSTR):HINSTANCE;
+
+  function LoadLibraryExW(lpLibFileName:LPCWSTR; hFile:HANDLE; dwFlags:DWORD):HINSTANCE;
+
+  function GetModuleFileNameW(hModule:HINSTANCE; lpFilename:LPWSTR; nSize:DWORD):DWORD;
+
+  function GetModuleHandleW(lpModuleName:LPCWSTR):HMODULE;
+
+  procedure FatalAppExitW(uAction:UINT; lpMessageText:LPCWSTR);
+
+  function GetCommandLineW:LPWSTR;
+
+  function GetEnvironmentVariableW(lpName:LPCWSTR; lpBuffer:LPWSTR; nSize:DWORD):DWORD;
+
+  function SetEnvironmentVariableW(lpName:LPCWSTR; lpValue:LPCWSTR):WINBOOL;
+
+  function ExpandEnvironmentStringsW(lpSrc:LPCWSTR; lpDst:LPWSTR; nSize:DWORD):DWORD;
+
+  procedure OutputDebugStringW(lpOutputString:LPCWSTR);
+
+  function FindResourceW(hModule:HINSTANCE; lpName:LPCWSTR; lpType:LPCWSTR):HRSRC;
+
+  function FindResourceExW(hModule:HINSTANCE; lpType:LPCWSTR; lpName:LPCWSTR; wLanguage:WORD):HRSRC;
+
+  function EnumResourceTypesW(hModule:HINSTANCE; lpEnumFunc:ENUMRESTYPEPROC; lParam:LONG):WINBOOL;
+
+  function EnumResourceNamesW(hModule:HINSTANCE; lpType:LPCWSTR; lpEnumFunc:ENUMRESNAMEPROC; lParam:LONG):WINBOOL;
+
+  function EnumResourceLanguagesW(hModule:HINSTANCE; lpType:LPCWSTR; lpName:LPCWSTR; lpEnumFunc:ENUMRESLANGPROC; lParam:LONG):WINBOOL;
+
+  function BeginUpdateResourceW(pFileName:LPCWSTR; bDeleteExistingResources:WINBOOL):HANDLE;
+
+  function UpdateResourceW(hUpdate:HANDLE; lpType:LPCWSTR; lpName:LPCWSTR; wLanguage:WORD; lpData:LPVOID; 
+             cbData:DWORD):WINBOOL;
+
+  function EndUpdateResourceW(hUpdate:HANDLE; fDiscard:WINBOOL):WINBOOL;
+
+  function GlobalAddAtomW(lpString:LPCWSTR):ATOM;
+
+  function GlobalFindAtomW(lpString:LPCWSTR):ATOM;
+
+  function GlobalGetAtomNameW(nAtom:ATOM; lpBuffer:LPWSTR; nSize:longint):UINT;
+
+  function AddAtomW(lpString:LPCWSTR):ATOM;
+
+  function FindAtomW(lpString:LPCWSTR):ATOM;
+
+  function GetAtomNameW(nAtom:ATOM; lpBuffer:LPWSTR; nSize:longint):UINT;
+
+  function GetProfileIntW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; nDefault:INT):UINT;
+
+  function GetProfileStringW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpDefault:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD):DWORD;
+
+  function WriteProfileStringW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpString:LPCWSTR):WINBOOL;
+
+  function GetProfileSectionW(lpAppName:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD):DWORD;
+
+  function WriteProfileSectionW(lpAppName:LPCWSTR; lpString:LPCWSTR):WINBOOL;
+
+  function GetPrivateProfileIntW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; nDefault:INT; lpFileName:LPCWSTR):UINT;
+
+  function GetPrivateProfileStringW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpDefault:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD; 
+             lpFileName:LPCWSTR):DWORD;
+
+  function WritePrivateProfileStringW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpString:LPCWSTR; lpFileName:LPCWSTR):WINBOOL;
+
+  function GetPrivateProfileSectionW(lpAppName:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD; lpFileName:LPCWSTR):DWORD;
+
+  function WritePrivateProfileSectionW(lpAppName:LPCWSTR; lpString:LPCWSTR; lpFileName:LPCWSTR):WINBOOL;
+
+  function GetDriveTypeW(lpRootPathName:LPCWSTR):UINT;
+
+  function GetSystemDirectoryW(lpBuffer:LPWSTR; uSize:UINT):UINT;
+
+  function GetTempPathW(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD;
+
+  function GetTempFileNameW(lpPathName:LPCWSTR; lpPrefixString:LPCWSTR; uUnique:UINT; lpTempFileName:LPWSTR):UINT;
+
+  function GetWindowsDirectoryW(lpBuffer:LPWSTR; uSize:UINT):UINT;
+
+  function SetCurrentDirectoryW(lpPathName:LPCWSTR):WINBOOL;
+
+  function GetCurrentDirectoryW(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD;
+
+  function GetDiskFreeSpaceW(lpRootPathName:LPCWSTR; lpSectorsPerCluster:LPDWORD; lpBytesPerSector:LPDWORD; lpNumberOfFreeClusters:LPDWORD; lpTotalNumberOfClusters:LPDWORD):WINBOOL;
+
+  function CreateDirectoryW(lpPathName:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL;
+
+  function CreateDirectoryExW(lpTemplateDirectory:LPCWSTR; lpNewDirectory:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL;
+
+  function RemoveDirectoryW(lpPathName:LPCWSTR):WINBOOL;
+
+  function GetFullPathNameW(lpFileName:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR; var lpFilePart:LPWSTR):DWORD;
+
+  function DefineDosDeviceW(dwFlags:DWORD; lpDeviceName:LPCWSTR; lpTargetPath:LPCWSTR):WINBOOL;
+
+  function QueryDosDeviceW(lpDeviceName:LPCWSTR; lpTargetPath:LPWSTR; ucchMax:DWORD):DWORD;
+
+  function CreateFileW(lpFileName:LPCWSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD; 
+             dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE;
+
+  function SetFileAttributesW(lpFileName:LPCWSTR; dwFileAttributes:DWORD):WINBOOL;
+
+  function GetFileAttributesW(lpFileName:LPCWSTR):DWORD;
+
+  function GetCompressedFileSizeW(lpFileName:LPCWSTR; lpFileSizeHigh:LPDWORD):DWORD;
+
+  function DeleteFileW(lpFileName:LPCWSTR):WINBOOL;
+
+  function SearchPathW(lpPath:LPCWSTR; lpFileName:LPCWSTR; lpExtension:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR; 
+             var lpFilePart:LPWSTR):DWORD;
+
+  function CopyFileW(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR; bFailIfExists:WINBOOL):WINBOOL;
+
+  function MoveFileW(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR):WINBOOL;
+
+  function MoveFileExW(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR; dwFlags:DWORD):WINBOOL;
+
+  function CreateNamedPipeW(lpName:LPCWSTR; dwOpenMode:DWORD; dwPipeMode:DWORD; nMaxInstances:DWORD; nOutBufferSize:DWORD; 
+             nInBufferSize:DWORD; nDefaultTimeOut:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE;
+
+  function GetNamedPipeHandleStateW(hNamedPipe:HANDLE; lpState:LPDWORD; lpCurInstances:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD; 
+             lpUserName:LPWSTR; nMaxUserNameSize:DWORD):WINBOOL;
+
+  function CallNamedPipeW(lpNamedPipeName:LPCWSTR; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; nTimeOut:DWORD):WINBOOL;
+
+  function WaitNamedPipeW(lpNamedPipeName:LPCWSTR; nTimeOut:DWORD):WINBOOL;
+
+  function SetVolumeLabelW(lpRootPathName:LPCWSTR; lpVolumeName:LPCWSTR):WINBOOL;
+
+  function GetVolumeInformationW(lpRootPathName:LPCWSTR; lpVolumeNameBuffer:LPWSTR; nVolumeNameSize:DWORD; lpVolumeSerialNumber:LPDWORD; lpMaximumComponentLength:LPDWORD; 
+             lpFileSystemFlags:LPDWORD; lpFileSystemNameBuffer:LPWSTR; nFileSystemNameSize:DWORD):WINBOOL;
+
+  function ClearEventLogW(hEventLog:HANDLE; lpBackupFileName:LPCWSTR):WINBOOL;
+
+  function BackupEventLogW(hEventLog:HANDLE; lpBackupFileName:LPCWSTR):WINBOOL;
+
+  function OpenEventLogW(lpUNCServerName:LPCWSTR; lpSourceName:LPCWSTR):HANDLE;
+
+  function RegisterEventSourceW(lpUNCServerName:LPCWSTR; lpSourceName:LPCWSTR):HANDLE;
+
+  function OpenBackupEventLogW(lpUNCServerName:LPCWSTR; lpFileName:LPCWSTR):HANDLE;
+
+  function ReadEventLogW(hEventLog:HANDLE; dwReadFlags:DWORD; dwRecordOffset:DWORD; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; 
+             var pnBytesRead:DWORD; var pnMinNumberOfBytesNeeded:DWORD):WINBOOL;
+
+  function ReportEventW(hEventLog:HANDLE; wType:WORD; wCategory:WORD; dwEventID:DWORD; lpUserSid:PSID; 
+             wNumStrings:WORD; dwDataSize:DWORD; var lpStrings:LPCWSTR; lpRawData:LPVOID):WINBOOL;
+
+  function AccessCheckAndAuditAlarmW(SubsystemName:LPCWSTR; HandleId:LPVOID; ObjectTypeName:LPWSTR; ObjectName:LPWSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL;
+
+  function ObjectOpenAuditAlarmW(SubsystemName:LPCWSTR; HandleId:LPVOID; ObjectTypeName:LPWSTR; ObjectName:LPWSTR; pSecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             ClientToken:HANDLE; DesiredAccess:DWORD; GrantedAccess:DWORD; Privileges:PPRIVILEGE_SET; ObjectCreation:WINBOOL; 
+             AccessGranted:WINBOOL; GenerateOnClose:LPBOOL):WINBOOL;
+
+  function ObjectPrivilegeAuditAlarmW(SubsystemName:LPCWSTR; HandleId:LPVOID; ClientToken:HANDLE; DesiredAccess:DWORD; Privileges:PPRIVILEGE_SET; 
+             AccessGranted:WINBOOL):WINBOOL;
+
+  function ObjectCloseAuditAlarmW(SubsystemName:LPCWSTR; HandleId:LPVOID; GenerateOnClose:WINBOOL):WINBOOL;
+
+  function PrivilegedServiceAuditAlarmW(SubsystemName:LPCWSTR; ServiceName:LPCWSTR; ClientToken:HANDLE; Privileges:PPRIVILEGE_SET; AccessGranted:WINBOOL):WINBOOL;
+
+  function SetFileSecurityW(lpFileName:LPCWSTR; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL;
+
+  function GetFileSecurityW(lpFileName:LPCWSTR; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+  function FindFirstChangeNotificationW(lpPathName:LPCWSTR; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD):HANDLE;
+
+  function IsBadStringPtrW(lpsz:LPCWSTR; ucchMax:UINT):WINBOOL;
+
+  function LookupAccountSidW(lpSystemName:LPCWSTR; Sid:PSID; Name:LPWSTR; cbName:LPDWORD; ReferencedDomainName:LPWSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL;
+
+  function LookupAccountNameW(lpSystemName:LPCWSTR; lpAccountName:LPCWSTR; Sid:PSID; cbSid:LPDWORD; ReferencedDomainName:LPWSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL;
+
+  function LookupPrivilegeValueW(lpSystemName:LPCWSTR; lpName:LPCWSTR; lpLuid:PLUID):WINBOOL;
+
+  function LookupPrivilegeNameW(lpSystemName:LPCWSTR; lpLuid:PLUID; lpName:LPWSTR; cbName:LPDWORD):WINBOOL;
+
+  function LookupPrivilegeDisplayNameW(lpSystemName:LPCWSTR; lpName:LPCWSTR; lpDisplayName:LPWSTR; cbDisplayName:LPDWORD; lpLanguageId:LPDWORD):WINBOOL;
+
+  function BuildCommDCBW(lpDef:LPCWSTR; lpDCB:LPDCB):WINBOOL;
+
+  function BuildCommDCBAndTimeoutsW(lpDef:LPCWSTR; lpDCB:LPDCB; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL;
+
+  function CommConfigDialogW(lpszName:LPCWSTR; hWnd:HWND; lpCC:LPCOMMCONFIG):WINBOOL;
+
+  function GetDefaultCommConfigW(lpszName:LPCWSTR; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL;
+
+  function SetDefaultCommConfigW(lpszName:LPCWSTR; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL;
+
+  function GetComputerNameW(lpBuffer:LPWSTR; nSize:LPDWORD):WINBOOL;
+
+  function SetComputerNameW(lpComputerName:LPCWSTR):WINBOOL;
+
+  function GetUserNameW(lpBuffer:LPWSTR; nSize:LPDWORD):WINBOOL;
+
+  function wvsprintfW(_para1:LPWSTR; _para2:LPCWSTR; arglist:va_list):longint;
+
+  { variable number of args not yet implemented in FPC
+  function wsprintfW(_para1:LPWSTR; _para2:LPCWSTR; ...):longint;}
+
+  function LoadKeyboardLayoutW(pwszKLID:LPCWSTR; Flags:UINT):HKL;
+
+  function GetKeyboardLayoutNameW(pwszKLID:LPWSTR):WINBOOL;
+
+  function CreateDesktopW(lpszDesktop:LPWSTR; lpszDevice:LPWSTR; pDevmode:LPDEVMODE; dwFlags:DWORD; dwDesiredAccess:DWORD; 
+             lpsa:LPSECURITY_ATTRIBUTES):HDESK;
+
+  function OpenDesktopW(lpszDesktop:LPWSTR; dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK;
+
+  function EnumDesktopsW(hwinsta:HWINSTA; lpEnumFunc:DESKTOPENUMPROC; lParam:LPARAM):WINBOOL;
+
+  function CreateWindowStationW(lpwinsta:LPWSTR; dwReserved:DWORD; dwDesiredAccess:DWORD; lpsa:LPSECURITY_ATTRIBUTES):HWINSTA;
+
+  function OpenWindowStationW(lpszWinSta:LPWSTR; fInherit:WINBOOL; dwDesiredAccess:DWORD):HWINSTA;
+
+  function EnumWindowStationsW(lpEnumFunc:ENUMWINDOWSTATIONPROC; lParam:LPARAM):WINBOOL;
+
+  function GetUserObjectInformationW(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL;
+
+  function SetUserObjectInformationW(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD):WINBOOL;
+
+  function RegisterWindowMessageW(lpString:LPCWSTR):UINT;
+
+  function GetMessageW(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT):WINBOOL;
+
+(* Const before type ignored *)
+  function DispatchMessageW(var lpMsg:MSG):LONG;
+
+  function PeekMessageW(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT; wRemoveMsg:UINT):WINBOOL;
+
+  function SendMessageW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function SendMessageTimeoutW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; fuFlags:UINT; 
+             uTimeout:UINT; lpdwResult:LPDWORD):LRESULT;
+
+  function SendNotifyMessageW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function SendMessageCallbackW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; lpResultCallBack:SENDASYNCPROC; 
+             dwData:DWORD):WINBOOL;
+
+  function PostMessageW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function PostThreadMessageW(idThread:DWORD; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL;
+
+  function DefWindowProcW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CallWindowProcW(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+(* Const before type ignored *)
+  function RegisterClassW(var lpWndClass:WNDCLASS):ATOM;
+
+  function UnregisterClassW(lpClassName:LPCWSTR; hInstance:HINSTANCE):WINBOOL;
+
+  function GetClassInfoW(hInstance:HINSTANCE; lpClassName:LPCWSTR; lpWndClass:LPWNDCLASS):WINBOOL;
+
+(* Const before type ignored *)
+  function RegisterClassExW(var _para1:WNDCLASSEX):ATOM;
+
+  function GetClassInfoExW(_para1:HINSTANCE; _para2:LPCWSTR; _para3:LPWNDCLASSEX):WINBOOL;
+
+  function CreateWindowExW(dwExStyle:DWORD; lpClassName:LPCWSTR; lpWindowName:LPCWSTR; dwStyle:DWORD; X:longint; 
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+
+  function CreateDialogParamW(hInstance:HINSTANCE; lpTemplateName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND;
+
+  function CreateDialogIndirectParamW(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND;
+
+  function DialogBoxParamW(hInstance:HINSTANCE; lpTemplateName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint;
+
+  function DialogBoxIndirectParamW(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint;
+
+  function SetDlgItemTextW(hDlg:HWND; nIDDlgItem:longint; lpString:LPCWSTR):WINBOOL;
+
+  function GetDlgItemTextW(hDlg:HWND; nIDDlgItem:longint; lpString:LPWSTR; nMaxCount:longint):UINT;
+
+  function SendDlgItemMessageW(hDlg:HWND; nIDDlgItem:longint; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LONG;
+
+  function DefDlgProcW(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CallMsgFilterW(lpMsg:LPMSG; nCode:longint):WINBOOL;
+
+  function RegisterClipboardFormatW(lpszFormat:LPCWSTR):UINT;
+
+  function GetClipboardFormatNameW(format:UINT; lpszFormatName:LPWSTR; cchMaxCount:longint):longint;
+
+  function CharToOemW(lpszSrc:LPCWSTR; lpszDst:LPSTR):WINBOOL;
+
+  function OemToCharW(lpszSrc:LPCSTR; lpszDst:LPWSTR):WINBOOL;
+
+  function CharToOemBuffW(lpszSrc:LPCWSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL;
+
+  function OemToCharBuffW(lpszSrc:LPCSTR; lpszDst:LPWSTR; cchDstLength:DWORD):WINBOOL;
+
+  function CharUpperW(lpsz:LPWSTR):LPWSTR;
+
+  function CharUpperBuffW(lpsz:LPWSTR; cchLength:DWORD):DWORD;
+
+  function CharLowerW(lpsz:LPWSTR):LPWSTR;
+
+  function CharLowerBuffW(lpsz:LPWSTR; cchLength:DWORD):DWORD;
+
+  function CharNextW(lpsz:LPCWSTR):LPWSTR;
+
+  function CharPrevW(lpszStart:LPCWSTR; lpszCurrent:LPCWSTR):LPWSTR;
+
+  function IsCharAlphaW(ch:WCHAR):WINBOOL;
+
+  function IsCharAlphaNumericW(ch:WCHAR):WINBOOL;
+
+  function IsCharUpperW(ch:WCHAR):WINBOOL;
+
+  function IsCharLowerW(ch:WCHAR):WINBOOL;
+
+  function GetKeyNameTextW(lParam:LONG; lpString:LPWSTR; nSize:longint):longint;
+
+  function VkKeyScanW(ch:WCHAR):SHORT;
+
+  function VkKeyScanExW(ch:WCHAR; dwhkl:HKL):SHORT;
+
+  function MapVirtualKeyW(uCode:UINT; uMapType:UINT):UINT;
+
+  function MapVirtualKeyExW(uCode:UINT; uMapType:UINT; dwhkl:HKL):UINT;
+
+  function LoadAcceleratorsW(hInstance:HINSTANCE; lpTableName:LPCWSTR):HACCEL;
+
+  function CreateAcceleratorTableW(_para1:LPACCEL; _para2:longint):HACCEL;
+
+  function CopyAcceleratorTableW(hAccelSrc:HACCEL; lpAccelDst:LPACCEL; cAccelEntries:longint):longint;
+
+  function TranslateAcceleratorW(hWnd:HWND; hAccTable:HACCEL; lpMsg:LPMSG):longint;
+
+  function LoadMenuW(hInstance:HINSTANCE; lpMenuName:LPCWSTR):HMENU;
+
+(* Const before type ignored *)
+  function LoadMenuIndirectW(var lpMenuTemplate:MENUTEMPLATE):HMENU;
+
+  function ChangeMenuW(hMenu:HMENU; cmd:UINT; lpszNewItem:LPCWSTR; cmdInsert:UINT; flags:UINT):WINBOOL;
+
+  function GetMenuStringW(hMenu:HMENU; uIDItem:UINT; lpString:LPWSTR; nMaxCount:longint; uFlag:UINT):longint;
+
+  function InsertMenuW(hMenu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL;
+
+  function AppendMenuW(hMenu:HMENU; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL;
+
+  function ModifyMenuW(hMnu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL;
+
+  function InsertMenuItemW(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL;
+
+  function GetMenuItemInfoW(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPMENUITEMINFO):WINBOOL;
+
+  function SetMenuItemInfoW(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL;
+
+  function DrawTextW(hDC:HDC; lpString:LPCWSTR; nCount:longint; lpRect:LPRECT; uFormat:UINT):longint;
+
+  function DrawTextExW(_para1:HDC; _para2:LPWSTR; _para3:longint; _para4:LPRECT; _para5:UINT; 
+             _para6:LPDRAWTEXTPARAMS):longint;
+
+  function GrayStringW(hDC:HDC; hBrush:HBRUSH; lpOutputFunc:GRAYSTRINGPROC; lpData:LPARAM; nCount:longint; 
+             X:longint; Y:longint; nWidth:longint; nHeight:longint):WINBOOL;
+
+  function DrawStateW(_para1:HDC; _para2:HBRUSH; _para3:DRAWSTATEPROC; _para4:LPARAM; _para5:WPARAM; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:UINT):WINBOOL;
+
+  function TabbedTextOutW(hDC:HDC; X:longint; Y:longint; lpString:LPCWSTR; nCount:longint; 
+             nTabPositions:longint; lpnTabStopPositions:LPINT; nTabOrigin:longint):LONG;
+
+  function GetTabbedTextExtentW(hDC:HDC; lpString:LPCWSTR; nCount:longint; nTabPositions:longint; lpnTabStopPositions:LPINT):DWORD;
+
+  function SetPropW(hWnd:HWND; lpString:LPCWSTR; hData:HANDLE):WINBOOL;
+
+  function GetPropW(hWnd:HWND; lpString:LPCWSTR):HANDLE;
+
+  function RemovePropW(hWnd:HWND; lpString:LPCWSTR):HANDLE;
+
+  function EnumPropsExW(hWnd:HWND; lpEnumFunc:PROPENUMPROCEX; lParam:LPARAM):longint;
+
+  function EnumPropsW(hWnd:HWND; lpEnumFunc:PROPENUMPROC):longint;
+
+  function SetWindowTextW(hWnd:HWND; lpString:LPCWSTR):WINBOOL;
+
+  function GetWindowTextW(hWnd:HWND; lpString:LPWSTR; nMaxCount:longint):longint;
+
+  function GetWindowTextLengthW(hWnd:HWND):longint;
+
+  function MessageBoxW(hWnd:HWND; lpText:LPCWSTR; lpCaption:LPCWSTR; uType:UINT):longint;
+
+  function MessageBoxExW(hWnd:HWND; lpText:LPCWSTR; lpCaption:LPCWSTR; uType:UINT; wLanguageId:WORD):longint;
+
+  function MessageBoxIndirectW(_para1:LPMSGBOXPARAMS):longint;
+
+  function GetWindowLongW(hWnd:HWND; nIndex:longint):LONG;
+
+  function SetWindowLongW(hWnd:HWND; nIndex:longint; dwNewLong:LONG):LONG;
+
+  function GetClassLongW(hWnd:HWND; nIndex:longint):DWORD;
+
+  function SetClassLongW(hWnd:HWND; nIndex:longint; dwNewLong:LONG):DWORD;
+
+  function FindWindowW(lpClassName:LPCWSTR; lpWindowName:LPCWSTR):HWND;
+
+  function FindWindowExW(_para1:HWND; _para2:HWND; _para3:LPCWSTR; _para4:LPCWSTR):HWND;
+
+  function GetClassNameW(hWnd:HWND; lpClassName:LPWSTR; nMaxCount:longint):longint;
+
+  function SetWindowsHookExW(idHook:longint; lpfn:HOOKPROC; hmod:HINSTANCE; dwThreadId:DWORD):HHOOK;
+
+  function LoadBitmapW(hInstance:HINSTANCE; lpBitmapName:LPCWSTR):HBITMAP;
+
+  function LoadCursorW(hInstance:HINSTANCE; lpCursorName:LPCWSTR):HCURSOR;
+
+  function LoadCursorFromFileW(lpFileName:LPCWSTR):HCURSOR;
+
+  function LoadIconW(hInstance:HINSTANCE; lpIconName:LPCWSTR):HICON;
+
+  function LoadImageW(_para1:HINSTANCE; _para2:LPCWSTR; _para3:UINT; _para4:longint; _para5:longint; 
+             _para6:UINT):HANDLE;
+
+  function LoadStringW(hInstance:HINSTANCE; uID:UINT; lpBuffer:LPWSTR; nBufferMax:longint):longint;
+
+  function IsDialogMessageW(hDlg:HWND; lpMsg:LPMSG):WINBOOL;
+
+  function DlgDirListW(hDlg:HWND; lpPathSpec:LPWSTR; nIDListBox:longint; nIDStaticPath:longint; uFileType:UINT):longint;
+
+  function DlgDirSelectExW(hDlg:HWND; lpString:LPWSTR; nCount:longint; nIDListBox:longint):WINBOOL;
+
+  function DlgDirListComboBoxW(hDlg:HWND; lpPathSpec:LPWSTR; nIDComboBox:longint; nIDStaticPath:longint; uFiletype:UINT):longint;
+
+  function DlgDirSelectComboBoxExW(hDlg:HWND; lpString:LPWSTR; nCount:longint; nIDComboBox:longint):WINBOOL;
+
+  function DefFrameProcW(hWnd:HWND; hWndMDIClient:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function DefMDIChildProcW(hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
+
+  function CreateMDIWindowW(lpClassName:LPWSTR; lpWindowName:LPWSTR; dwStyle:DWORD; X:longint; Y:longint; 
+             nWidth:longint; nHeight:longint; hWndParent:HWND; hInstance:HINSTANCE; lParam:LPARAM):HWND;
+
+  function WinHelpW(hWndMain:HWND; lpszHelp:LPCWSTR; uCommand:UINT; dwData:DWORD):WINBOOL;
+
+  function ChangeDisplaySettingsW(lpDevMode:LPDEVMODE; dwFlags:DWORD):LONG;
+
+  function EnumDisplaySettingsW(lpszDeviceName:LPCWSTR; iModeNum:DWORD; lpDevMode:LPDEVMODE):WINBOOL;
+
+  function SystemParametersInfoW(uiAction:UINT; uiParam:UINT; pvParam:PVOID; fWinIni:UINT):WINBOOL;
+
+  function AddFontResourceW(_para1:LPCWSTR):longint;
+
+  function CopyMetaFileW(_para1:HMETAFILE; _para2:LPCWSTR):HMETAFILE;
+
+(* Const before type ignored *)
+  function CreateFontIndirectW(var _para1:LOGFONT):HFONT;
+
+  function CreateFontW(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD; _para7:DWORD; _para8:DWORD; _para9:DWORD; _para10:DWORD; 
+             _para11:DWORD; _para12:DWORD; _para13:DWORD; _para14:LPCWSTR):HFONT;
+
+(* Const before type ignored *)
+  function CreateICW(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR; var _para4:DEVMODE):HDC;
+
+  function CreateMetaFileW(_para1:LPCWSTR):HDC;
+
+  function CreateScalableFontResourceW(_para1:DWORD; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR):WINBOOL;
+
+(* Const before type ignored *)
+  function DeviceCapabilitiesW(_para1:LPCWSTR; _para2:LPCWSTR; _para3:WORD; _para4:LPWSTR; var _para5:DEVMODE):longint;
+
+  function EnumFontFamiliesExW(_para1:HDC; _para2:LPLOGFONT; _para3:FONTENUMEXPROC; _para4:LPARAM; _para5:DWORD):longint;
+
+  function EnumFontFamiliesW(_para1:HDC; _para2:LPCWSTR; _para3:FONTENUMPROC; _para4:LPARAM):longint;
+
+  function EnumFontsW(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint;
+
+  function GetCharWidthW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL;
+
+  function GetCharWidth32W(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL;
+
+  function GetCharWidthFloatW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:PFLOAT):WINBOOL;
+
+  function GetCharABCWidthsW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABC):WINBOOL;
+
+  function GetCharABCWidthsFloatW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABCFLOAT):WINBOOL;
+
+(* Const before type ignored *)
+  function GetGlyphOutlineW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPGLYPHMETRICS; _para5:DWORD; 
+             _para6:LPVOID; var _para7:MAT2):DWORD;
+
+  function GetMetaFileW(_para1:LPCWSTR):HMETAFILE;
+
+  function GetOutlineTextMetricsW(_para1:HDC; _para2:UINT; _para3:LPOUTLINETEXTMETRIC):UINT;
+
+  function GetTextExtentPointW(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function GetTextExtentPoint32W(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:LPSIZE):WINBOOL;
+
+  function GetTextExtentExPointW(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:longint; _para5:LPINT; 
+             _para6:LPINT; _para7:LPSIZE):WINBOOL;
+
+  function GetCharacterPlacementW(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:longint; _para5:LPGCP_RESULTS; 
+             _para6:DWORD):DWORD;
+
+(* Const before type ignored *)
+  function ResetDCW(_para1:HDC; var _para2:DEVMODE):HDC;
+
+  function RemoveFontResourceW(_para1:LPCWSTR):WINBOOL;
+
+  function CopyEnhMetaFileW(_para1:HENHMETAFILE; _para2:LPCWSTR):HENHMETAFILE;
+
+(* Const before type ignored *)
+  function CreateEnhMetaFileW(_para1:HDC; _para2:LPCWSTR; var _para3:RECT; _para4:LPCWSTR):HDC;
+
+  function GetEnhMetaFileW(_para1:LPCWSTR):HENHMETAFILE;
+
+  function GetEnhMetaFileDescriptionW(_para1:HENHMETAFILE; _para2:UINT; _para3:LPWSTR):UINT;
+
+  function GetTextMetricsW(_para1:HDC; _para2:LPTEXTMETRIC):WINBOOL;
+
+(* Const before type ignored *)
+  function StartDocW(_para1:HDC; var _para2:DOCINFO):longint;
+
+  function GetObjectW(_para1:HGDIOBJ; _para2:longint; _para3:LPVOID):longint;
+
+  function TextOutW(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCWSTR; _para5:longint):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ExtTextOutW(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; var _para5:RECT; 
+             _para6:LPCWSTR; _para7:UINT; var _para8:INT):WINBOOL;
+
+(* Const before type ignored *)
+  function PolyTextOutW(_para1:HDC; var _para2:POLYTEXT; _para3:longint):WINBOOL;
+
+  function GetTextFaceW(_para1:HDC; _para2:longint; _para3:LPWSTR):longint;
+
+  function GetKerningPairsW(_para1:HDC; _para2:DWORD; _para3:LPKERNINGPAIR):DWORD;
+
+  function GetLogColorSpaceW(_para1:HCOLORSPACE; _para2:LPLOGCOLORSPACE; _para3:DWORD):WINBOOL;
+
+  function CreateColorSpaceW(_para1:LPLOGCOLORSPACE):HCOLORSPACE;
+
+  function GetICMProfileW(_para1:HDC; _para2:DWORD; _para3:LPWSTR):WINBOOL;
+
+  function SetICMProfileW(_para1:HDC; _para2:LPWSTR):WINBOOL;
+
+  function UpdateICMRegKeyW(_para1:DWORD; _para2:DWORD; _para3:LPWSTR; _para4:UINT):WINBOOL;
+
+  function EnumICMProfilesW(_para1:HDC; _para2:ICMENUMPROC; _para3:LPARAM):longint;
+
+  function CreatePropertySheetPageW(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE;
+
+  function PropertySheetW(lppsph:LPCPROPSHEETHEADER):longint;
+
+  function ImageList_LoadImageW(hi:HINSTANCE; lpbmp:LPCWSTR; cx:longint; cGrow:longint; crMask:COLORREF; 
+             uType:UINT; uFlags:UINT):HIMAGELIST;
+
+  function CreateStatusWindowW(style:LONG; lpszText:LPCWSTR; hwndParent:HWND; wID:UINT):HWND;
+
+  procedure DrawStatusTextW(hDC:HDC; lprc:LPRECT; pszText:LPCWSTR; uFlags:UINT);
+
+  function GetOpenFileNameW(_para1:LPOPENFILENAME):WINBOOL;
+
+  function GetSaveFileNameW(_para1:LPOPENFILENAME):WINBOOL;
+
+  function GetFileTitleW(_para1:LPCWSTR; _para2:LPWSTR; _para3:WORD):integer;
+
+  function ChooseColorW(_para1:LPCHOOSECOLOR):WINBOOL;
+
+  function ReplaceTextW(_para1:LPFINDREPLACE):HWND;
+
+  function ChooseFontW(_para1:LPCHOOSEFONT):WINBOOL;
+
+  function FindTextW(_para1:LPFINDREPLACE):HWND;
+
+  function PrintDlgW(_para1:LPPRINTDLG):WINBOOL;
+
+  function PageSetupDlgW(_para1:LPPAGESETUPDLG):WINBOOL;
+
+  function CreateProcessW(lpApplicationName:LPCWSTR; lpCommandLine:LPWSTR; lpProcessAttributes:LPSECURITY_ATTRIBUTES; lpThreadAttributes:LPSECURITY_ATTRIBUTES; bInheritHandles:WINBOOL; 
+             dwCreationFlags:DWORD; lpEnvironment:LPVOID; lpCurrentDirectory:LPCWSTR; lpStartupInfo:LPSTARTUPINFO; lpProcessInformation:LPPROCESS_INFORMATION):WINBOOL;
+
+  procedure GetStartupInfoW(lpStartupInfo:LPSTARTUPINFO);
+
+  function FindFirstFileW(lpFileName:LPCWSTR; lpFindFileData:LPWIN32_FIND_DATA):HANDLE;
+
+  function FindNextFileW(hFindFile:HANDLE; lpFindFileData:LPWIN32_FIND_DATA):WINBOOL;
+
+  function GetVersionExW(lpVersionInformation:LPOSVERSIONINFO):WINBOOL;
+
+  { was #define dname(params) def_expr }
+  function CreateWindowW(lpClassName:LPCWSTR; lpWindowName:LPCWSTR; dwStyle:DWORD; X:longint;
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogW(hInstance:HINSTANCE; lpName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogIndirectW(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxW(hInstance:HINSTANCE; lpTemplate:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxIndirectW(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+
+(* Const before type ignored *)
+  function CreateDCW(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR; var _para4:DEVMODE):HDC;
+
+  function CreateFontA(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD; _para7:DWORD; _para8:DWORD; _para9:DWORD; _para10:DWORD; 
+             _para11:DWORD; _para12:DWORD; _para13:DWORD; _para14:LPCSTR):HFONT;
+
+  function VerInstallFileW(uFlags:DWORD; szSrcFileName:LPWSTR; szDestFileName:LPWSTR; szSrcDir:LPWSTR; szDestDir:LPWSTR; 
+             szCurDir:LPWSTR; szTmpFile:LPWSTR; lpuTmpFileLen:PUINT):DWORD;
+
+  function GetFileVersionInfoSizeW(lptstrFilename:LPWSTR; lpdwHandle:LPDWORD):DWORD;
+
+  function GetFileVersionInfoW(lptstrFilename:LPWSTR; dwHandle:DWORD; dwLen:DWORD; lpData:LPVOID):WINBOOL;
+
+  function VerLanguageNameW(wLang:DWORD; szLang:LPWSTR; nSize:DWORD):DWORD;
+
+(* Const before type ignored *)
+  function VerQueryValueW(pBlock:LPVOID; lpSubBlock:LPWSTR; var lplpBuffer:LPVOID; puLen:PUINT):WINBOOL;
+
+  function VerFindFileW(uFlags:DWORD; szFileName:LPWSTR; szWinDir:LPWSTR; szAppDir:LPWSTR; szCurDir:LPWSTR; 
+             lpuCurDirLen:PUINT; szDestDir:LPWSTR; lpuDestDirLen:PUINT):DWORD;
+
+(* Const before type ignored *)
+  function RegSetValueExW(hKey:HKEY; lpValueName:LPCWSTR; Reserved:DWORD; dwType:DWORD; var lpData:BYTE; 
+             cbData:DWORD):LONG;
+
+  function RegUnLoadKeyW(hKey:HKEY; lpSubKey:LPCWSTR):LONG;
+
+  function InitiateSystemShutdownW(lpMachineName:LPWSTR; lpMessage:LPWSTR; dwTimeout:DWORD; bForceAppsClosed:WINBOOL; bRebootAfterShutdown:WINBOOL):WINBOOL;
+
+  function AbortSystemShutdownW(lpMachineName:LPWSTR):WINBOOL;
+
+  function RegRestoreKeyW(hKey:HKEY; lpFile:LPCWSTR; dwFlags:DWORD):LONG;
+
+  function RegSaveKeyW(hKey:HKEY; lpFile:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):LONG;
+
+  function RegSetValueW(hKey:HKEY; lpSubKey:LPCWSTR; dwType:DWORD; lpData:LPCWSTR; cbData:DWORD):LONG;
+
+  function RegQueryValueW(hKey:HKEY; lpSubKey:LPCWSTR; lpValue:LPWSTR; lpcbValue:PLONG):LONG;
+
+  function RegQueryMultipleValuesW(hKey:HKEY; val_list:PVALENT; num_vals:DWORD; lpValueBuf:LPWSTR; ldwTotsize:LPDWORD):LONG;
+
+  function RegQueryValueExW(hKey:HKEY; lpValueName:LPCWSTR; lpReserved:LPDWORD; lpType:LPDWORD; lpData:LPBYTE; 
+             lpcbData:LPDWORD):LONG;
+
+  function RegReplaceKeyW(hKey:HKEY; lpSubKey:LPCWSTR; lpNewFile:LPCWSTR; lpOldFile:LPCWSTR):LONG;
+
+  function RegConnectRegistryW(lpMachineName:LPWSTR; hKey:HKEY; phkResult:PHKEY):LONG;
+
+  function RegCreateKeyW(hKey:HKEY; lpSubKey:LPCWSTR; phkResult:PHKEY):LONG;
+
+  function RegCreateKeyExW(hKey:HKEY; lpSubKey:LPCWSTR; Reserved:DWORD; lpClass:LPWSTR; dwOptions:DWORD; 
+             samDesired:REGSAM; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; phkResult:PHKEY; lpdwDisposition:LPDWORD):LONG;
+
+  function RegDeleteKeyW(hKey:HKEY; lpSubKey:LPCWSTR):LONG;
+
+  function RegDeleteValueW(hKey:HKEY; lpValueName:LPCWSTR):LONG;
+
+  function RegEnumKeyW(hKey:HKEY; dwIndex:DWORD; lpName:LPWSTR; cbName:DWORD):LONG;
+
+  function RegEnumKeyExW(hKey:HKEY; dwIndex:DWORD; lpName:LPWSTR; lpcbName:LPDWORD; lpReserved:LPDWORD; 
+             lpClass:LPWSTR; lpcbClass:LPDWORD; lpftLastWriteTime:PFILETIME):LONG;
+
+  function RegEnumValueW(hKey:HKEY; dwIndex:DWORD; lpValueName:LPWSTR; lpcbValueName:LPDWORD; lpReserved:LPDWORD; 
+             lpType:LPDWORD; lpData:LPBYTE; lpcbData:LPDWORD):LONG;
+
+  function RegLoadKeyW(hKey:HKEY; lpSubKey:LPCWSTR; lpFile:LPCWSTR):LONG;
+
+  function RegOpenKeyW(hKey:HKEY; lpSubKey:LPCWSTR; phkResult:PHKEY):LONG;
+
+  function RegOpenKeyExW(hKey:HKEY; lpSubKey:LPCWSTR; ulOptions:DWORD; samDesired:REGSAM; phkResult:PHKEY):LONG;
+
+  function RegQueryInfoKeyW(hKey:HKEY; lpClass:LPWSTR; lpcbClass:LPDWORD; lpReserved:LPDWORD; lpcSubKeys:LPDWORD; 
+             lpcbMaxSubKeyLen:LPDWORD; lpcbMaxClassLen:LPDWORD; lpcValues:LPDWORD; lpcbMaxValueNameLen:LPDWORD; lpcbMaxValueLen:LPDWORD; 
+             lpcbSecurityDescriptor:LPDWORD; lpftLastWriteTime:PFILETIME):LONG;
+
+  function CompareStringW(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCWSTR; cchCount1:longint; lpString2:LPCWSTR; 
+             cchCount2:longint):longint;
+
+  function LCMapStringW(Locale:LCID; dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestStr:LPWSTR; 
+             cchDest:longint):longint;
+
+  function GetLocaleInfoW(Locale:LCID; LCType:LCTYPE; lpLCData:LPWSTR; cchData:longint):longint;
+
+  function SetLocaleInfoW(Locale:LCID; LCType:LCTYPE; lpLCData:LPCWSTR):WINBOOL;
+
+(* Const before type ignored *)
+  function GetTimeFormatW(Locale:LCID; dwFlags:DWORD; var lpTime:SYSTEMTIME; lpFormat:LPCWSTR; lpTimeStr:LPWSTR; 
+             cchTime:longint):longint;
+
+(* Const before type ignored *)
+  function GetDateFormatW(Locale:LCID; dwFlags:DWORD; var lpDate:SYSTEMTIME; lpFormat:LPCWSTR; lpDateStr:LPWSTR; 
+             cchDate:longint):longint;
+
+(* Const before type ignored *)
+  function GetNumberFormatW(Locale:LCID; dwFlags:DWORD; lpValue:LPCWSTR; var lpFormat:NUMBERFMT; lpNumberStr:LPWSTR; 
+             cchNumber:longint):longint;
+
+(* Const before type ignored *)
+  function GetCurrencyFormatW(Locale:LCID; dwFlags:DWORD; lpValue:LPCWSTR; var lpFormat:CURRENCYFMT; lpCurrencyStr:LPWSTR; 
+             cchCurrency:longint):longint;
+
+  function EnumCalendarInfoW(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL;
+
+  function EnumTimeFormatsW(lpTimeFmtEnumProc:TIMEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL;
+
+  function EnumDateFormatsW(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL;
+
+  function GetStringTypeExW(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL;
+
+  function GetStringTypeW(dwInfoType:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL;
+
+  function FoldStringW(dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestStr:LPWSTR; cchDest:longint):longint;
+
+  function EnumSystemLocalesW(lpLocaleEnumProc:LOCALE_ENUMPROC; dwFlags:DWORD):WINBOOL;
+
+  function EnumSystemCodePagesW(lpCodePageEnumProc:CODEPAGE_ENUMPROC; dwFlags:DWORD):WINBOOL;
+
+  function PeekConsoleInputW(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL;
+
+  function ReadConsoleInputW(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleInputW(hConsoleInput:HANDLE; var lpBuffer:INPUT_RECORD; nLength:DWORD; lpNumberOfEventsWritten:LPDWORD):WINBOOL;
+
+  function ReadConsoleOutputW(hConsoleOutput:HANDLE; lpBuffer:PCHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpReadRegion:PSMALL_RECT):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleOutputW(hConsoleOutput:HANDLE; var lpBuffer:CHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpWriteRegion:PSMALL_RECT):WINBOOL;
+
+  function ReadConsoleOutputCharacterW(hConsoleOutput:HANDLE; lpCharacter:LPWSTR; nLength:DWORD; dwReadCoord:COORD; lpNumberOfCharsRead:LPDWORD):WINBOOL;
+
+  function WriteConsoleOutputCharacterW(hConsoleOutput:HANDLE; lpCharacter:LPCWSTR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL;
+
+  function FillConsoleOutputCharacterW(hConsoleOutput:HANDLE; cCharacter:WCHAR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ScrollConsoleScreenBufferW(hConsoleOutput:HANDLE; var lpScrollRectangle:SMALL_RECT; var lpClipRectangle:SMALL_RECT; dwDestinationOrigin:COORD; var lpFill:CHAR_INFO):WINBOOL;
+
+  function GetConsoleTitleW(lpConsoleTitle:LPWSTR; nSize:DWORD):DWORD;
+
+  function SetConsoleTitleW(lpConsoleTitle:LPCWSTR):WINBOOL;
+
+  function ReadConsoleW(hConsoleInput:HANDLE; lpBuffer:LPVOID; nNumberOfCharsToRead:DWORD; lpNumberOfCharsRead:LPDWORD; lpReserved:LPVOID):WINBOOL;
+
+(* Const before type ignored *)
+  function WriteConsoleW(hConsoleOutput:HANDLE;lpBuffer:pointer; nNumberOfCharsToWrite:DWORD; lpNumberOfCharsWritten:LPDWORD; lpReserved:LPVOID):WINBOOL;
+
+  function WNetAddConnectionW(lpRemoteName:LPCWSTR; lpPassword:LPCWSTR; lpLocalName:LPCWSTR):DWORD;
+
+  function WNetAddConnection2W(lpNetResource:LPNETRESOURCE; lpPassword:LPCWSTR; lpUserName:LPCWSTR; dwFlags:DWORD):DWORD;
+
+  function WNetAddConnection3W(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpPassword:LPCWSTR; lpUserName:LPCWSTR; dwFlags:DWORD):DWORD;
+
+  function WNetCancelConnectionW(lpName:LPCWSTR; fForce:WINBOOL):DWORD;
+
+  function WNetCancelConnection2W(lpName:LPCWSTR; dwFlags:DWORD; fForce:WINBOOL):DWORD;
+
+  function WNetGetConnectionW(lpLocalName:LPCWSTR; lpRemoteName:LPWSTR; lpnLength:LPDWORD):DWORD;
+
+  function WNetUseConnectionW(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpUserID:LPCWSTR; lpPassword:LPCWSTR; dwFlags:DWORD; 
+             lpAccessName:LPWSTR; lpBufferSize:LPDWORD; lpResult:LPDWORD):DWORD;
+
+  function WNetSetConnectionW(lpName:LPCWSTR; dwProperties:DWORD; pvValues:LPVOID):DWORD;
+
+  function WNetConnectionDialog1W(lpConnDlgStruct:LPCONNECTDLGSTRUCT):DWORD;
+
+  function WNetDisconnectDialog1W(lpConnDlgStruct:LPDISCDLGSTRUCT):DWORD;
+
+  function WNetOpenEnumW(dwScope:DWORD; dwType:DWORD; dwUsage:DWORD; lpNetResource:LPNETRESOURCE; lphEnum:LPHANDLE):DWORD;
+
+  function WNetEnumResourceW(hEnum:HANDLE; lpcCount:LPDWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetUniversalNameW(lpLocalPath:LPCWSTR; dwInfoLevel:DWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetUserW(lpName:LPCWSTR; lpUserName:LPWSTR; lpnLength:LPDWORD):DWORD;
+
+  function WNetGetProviderNameW(dwNetType:DWORD; lpProviderName:LPWSTR; lpBufferSize:LPDWORD):DWORD;
+
+  function WNetGetNetworkInformationW(lpProvider:LPCWSTR; lpNetInfoStruct:LPNETINFOSTRUCT):DWORD;
+
+  function WNetGetLastErrorW(lpError:LPDWORD; lpErrorBuf:LPWSTR; nErrorBufSize:DWORD; lpNameBuf:LPWSTR; nNameBufSize:DWORD):DWORD;
+
+  function MultinetGetConnectionPerformanceW(lpNetResource:LPNETRESOURCE; lpNetConnectInfoStruct:LPNETCONNECTINFOSTRUCT):DWORD;
+
+  function ChangeServiceConfigW(hService:SC_HANDLE; dwServiceType:DWORD; dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCWSTR; 
+             lpLoadOrderGroup:LPCWSTR; lpdwTagId:LPDWORD; lpDependencies:LPCWSTR; lpServiceStartName:LPCWSTR; lpPassword:LPCWSTR; 
+             lpDisplayName:LPCWSTR):WINBOOL;
+
+  function CreateServiceW(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; lpDisplayName:LPCWSTR; dwDesiredAccess:DWORD; dwServiceType:DWORD; 
+             dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCWSTR; lpLoadOrderGroup:LPCWSTR; lpdwTagId:LPDWORD; 
+             lpDependencies:LPCWSTR; lpServiceStartName:LPCWSTR; lpPassword:LPCWSTR):SC_HANDLE;
+
+  function EnumDependentServicesW(hService:SC_HANDLE; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD; 
+             lpServicesReturned:LPDWORD):WINBOOL;
+
+  function EnumServicesStatusW(hSCManager:SC_HANDLE; dwServiceType:DWORD; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; 
+             pcbBytesNeeded:LPDWORD; lpServicesReturned:LPDWORD; lpResumeHandle:LPDWORD):WINBOOL;
+
+  function GetServiceKeyNameW(hSCManager:SC_HANDLE; lpDisplayName:LPCWSTR; lpServiceName:LPWSTR; lpcchBuffer:LPDWORD):WINBOOL;
+
+  function GetServiceDisplayNameW(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; lpDisplayName:LPWSTR; lpcchBuffer:LPDWORD):WINBOOL;
+
+  function OpenSCManagerW(lpMachineName:LPCWSTR; lpDatabaseName:LPCWSTR; dwDesiredAccess:DWORD):SC_HANDLE;
+
+  function OpenServiceW(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; dwDesiredAccess:DWORD):SC_HANDLE;
+
+  function QueryServiceConfigW(hService:SC_HANDLE; lpServiceConfig:LPQUERY_SERVICE_CONFIG; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+
+  function QueryServiceLockStatusW(hSCManager:SC_HANDLE; lpLockStatus:LPQUERY_SERVICE_LOCK_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL;
+
+  function RegisterServiceCtrlHandlerW(lpServiceName:LPCWSTR; lpHandlerProc:LPHANDLER_FUNCTION):SERVICE_STATUS_HANDLE;
+
+  function StartServiceCtrlDispatcherW(lpServiceStartTable:LPSERVICE_TABLE_ENTRY):WINBOOL;
+
+  function StartServiceW(hService:SC_HANDLE; dwNumServiceArgs:DWORD; var lpServiceArgVectors:LPCWSTR):WINBOOL;
+
+  { Extensions to OpenGL  }
+  function wglUseFontBitmapsW(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD):WINBOOL;
+
+  function wglUseFontOutlinesW(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT; _para7:longint; _para8:LPGLYPHMETRICSFLOAT):WINBOOL;
+
+  { -------------------------------------  }
+  { From shellapi.h in old Cygnus headers  }
+  function DragQueryFileW(_para1:HDROP; _para2:cardinal; _para3:LPCWSTR; _para4:cardinal):cardinal;
+
+  function ExtractAssociatedIconW(_para1:HINSTANCE; _para2:LPCWSTR; var _para3:WORD):HICON;
+
+(* Const before type ignored *)
+  function ExtractIconW(_para1:HINSTANCE; _para2:LPCWSTR; _para3:cardinal):HICON;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function FindExecutableW(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR):HINSTANCE;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ShellAboutW(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:HICON):longint;
+
+(* Const before type ignored *)
+(* Const before type ignored *)
+(* Const before type ignored *)
+  function ShellExecuteW(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR; _para5:LPCWSTR; 
+             _para6:longint):HINSTANCE;
+
+  { end of stuff from shellapi.h in old Cygnus headers  }
+  { --------------------------------------------------  }
+  { From ddeml.h in old Cygnus headers  }
+  function DdeCreateStringHandleW(_para1:DWORD; _para2:LPCWSTR; _para3:longint):HSZ;
+
+  function DdeInitializeW(var _para1:DWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT;
+
+  function DdeQueryStringW(_para1:DWORD; _para2:HSZ; _para3:LPCWSTR; _para4:DWORD; _para5:longint):DWORD;
+
+  { end of stuff from ddeml.h in old Cygnus headers  }
+  { -----------------------------------------------  }
+  function LogonUserW(_para1:LPWSTR; _para2:LPWSTR; _para3:LPWSTR; _para4:DWORD; _para5:DWORD; 
+             var _para6:HANDLE):WINBOOL;
+
+  function CreateProcessAsUserW(_para1:HANDLE; _para2:LPCWSTR; _para3:LPWSTR; var _para4:SECURITY_ATTRIBUTES; var _para5:SECURITY_ATTRIBUTES; 
+             _para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCWSTR; var _para10:STARTUPINFO; 
+             var _para11:PROCESS_INFORMATION):WINBOOL;
+
+{ C++ end of extern C conditionnal removed }
+  { __cplusplus  }
+{$endif}
+  { _GNU_H_WINDOWS32_UNICODEFUNCTIONS  }
+
+{$endif read_interface}
+
+{$ifndef windows_include_files}
+  implementation
+
+    const External_library='kernel32'; {Setup as you need!}
+
+{$endif not windows_include_files}
+
+{$ifdef read_implementation}
+
+  function GetBinaryTypeW(lpApplicationName:LPCWSTR; lpBinaryType:LPDWORD):WINBOOL; external External_library name 'GetBinaryTypeW';
+
+  function GetShortPathNameW(lpszLongPath:LPCWSTR; lpszShortPath:LPWSTR; cchBuffer:DWORD):DWORD; external External_library name 'GetShortPathNameW';
+
+  function GetEnvironmentStringsW:LPWSTR; external External_library name 'GetEnvironmentStringsW';
+
+  function FreeEnvironmentStringsW(_para1:LPWSTR):WINBOOL; external External_library name 'FreeEnvironmentStringsW';
+
+  function FormatMessageW(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPWSTR; 
+             nSize:DWORD; var Arguments:va_list):DWORD; external External_library name 'FormatMessageW';
+
+  function CreateMailslotW(lpName:LPCWSTR; nMaxMessageSize:DWORD; lReadTimeout:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE; external External_library name 'CreateMailslotW';
+
+  function lstrcmpW(lpString1:LPCWSTR; lpString2:LPCWSTR):longint; external External_library name 'lstrcmpW';
+
+  function lstrcmpiW(lpString1:LPCWSTR; lpString2:LPCWSTR):longint; external External_library name 'lstrcmpiW';
+
+  function lstrcpynW(lpString1:LPWSTR; lpString2:LPCWSTR; iMaxLength:longint):LPWSTR; external External_library name 'lstrcpynW';
+
+  function lstrcpyW(lpString1:LPWSTR; lpString2:LPCWSTR):LPWSTR; external External_library name 'lstrcpyW';
+
+  function lstrcatW(lpString1:LPWSTR; lpString2:LPCWSTR):LPWSTR; external External_library name 'lstrcatW';
+
+  function lstrlenW(lpString:LPCWSTR):longint; external External_library name 'lstrlenW';
+
+  function CreateMutexW(lpMutexAttributes:LPSECURITY_ATTRIBUTES; bInitialOwner:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'CreateMutexW';
+
+  function OpenMutexW(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'OpenMutexW';
+
+  function CreateEventW(lpEventAttributes:LPSECURITY_ATTRIBUTES; bManualReset:WINBOOL; bInitialState:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'CreateEventW';
+
+  function OpenEventW(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'OpenEventW';
+
+  function CreateSemaphoreW(lpSemaphoreAttributes:LPSECURITY_ATTRIBUTES; lInitialCount:LONG; lMaximumCount:LONG; lpName:LPCWSTR):HANDLE; external External_library name 'CreateSemaphoreW';
+
+  function OpenSemaphoreW(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'OpenSemaphoreW';
+
+  function CreateFileMappingW(hFile:HANDLE; lpFileMappingAttributes:LPSECURITY_ATTRIBUTES; flProtect:DWORD; dwMaximumSizeHigh:DWORD; dwMaximumSizeLow:DWORD; 
+             lpName:LPCWSTR):HANDLE; external External_library name 'CreateFileMappingW';
+
+  function OpenFileMappingW(dwDesiredAccess:DWORD; bInheritHandle:WINBOOL; lpName:LPCWSTR):HANDLE; external External_library name 'OpenFileMappingW';
+
+  function GetLogicalDriveStringsW(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD; external External_library name 'GetLogicalDriveStringsW';
+
+  function LoadLibraryW(lpLibFileName:LPCWSTR):HINSTANCE; external External_library name 'LoadLibraryW';
+
+  function LoadLibraryExW(lpLibFileName:LPCWSTR; hFile:HANDLE; dwFlags:DWORD):HINSTANCE; external External_library name 'LoadLibraryExW';
+
+  function GetModuleFileNameW(hModule:HINSTANCE; lpFilename:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetModuleFileNameW';
+
+  function GetModuleHandleW(lpModuleName:LPCWSTR):HMODULE; external External_library name 'GetModuleHandleW';
+
+  procedure FatalAppExitW(uAction:UINT; lpMessageText:LPCWSTR); external External_library name 'FatalAppExitW';
+
+  function GetCommandLineW:LPWSTR; external External_library name 'GetCommandLineW';
+
+  function GetEnvironmentVariableW(lpName:LPCWSTR; lpBuffer:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetEnvironmentVariableW';
+
+  function SetEnvironmentVariableW(lpName:LPCWSTR; lpValue:LPCWSTR):WINBOOL; external External_library name 'SetEnvironmentVariableW';
+
+  function ExpandEnvironmentStringsW(lpSrc:LPCWSTR; lpDst:LPWSTR; nSize:DWORD):DWORD; external External_library name 'ExpandEnvironmentStringsW';
+
+  procedure OutputDebugStringW(lpOutputString:LPCWSTR); external External_library name 'OutputDebugStringW';
+
+  function FindResourceW(hModule:HINSTANCE; lpName:LPCWSTR; lpType:LPCWSTR):HRSRC; external External_library name 'FindResourceW';
+
+  function FindResourceExW(hModule:HINSTANCE; lpType:LPCWSTR; lpName:LPCWSTR; wLanguage:WORD):HRSRC; external External_library name 'FindResourceExW';
+
+  function EnumResourceTypesW(hModule:HINSTANCE; lpEnumFunc:ENUMRESTYPEPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceTypesW';
+
+  function EnumResourceNamesW(hModule:HINSTANCE; lpType:LPCWSTR; lpEnumFunc:ENUMRESNAMEPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceNamesW';
+
+  function EnumResourceLanguagesW(hModule:HINSTANCE; lpType:LPCWSTR; lpName:LPCWSTR; lpEnumFunc:ENUMRESLANGPROC; lParam:LONG):WINBOOL; external External_library name 'EnumResourceLanguagesW';
+
+  function BeginUpdateResourceW(pFileName:LPCWSTR; bDeleteExistingResources:WINBOOL):HANDLE; external External_library name 'BeginUpdateResourceW';
+
+  function UpdateResourceW(hUpdate:HANDLE; lpType:LPCWSTR; lpName:LPCWSTR; wLanguage:WORD; lpData:LPVOID; 
+             cbData:DWORD):WINBOOL; external External_library name 'UpdateResourceW';
+
+  function EndUpdateResourceW(hUpdate:HANDLE; fDiscard:WINBOOL):WINBOOL; external External_library name 'EndUpdateResourceW';
+
+  function GlobalAddAtomW(lpString:LPCWSTR):ATOM; external External_library name 'GlobalAddAtomW';
+
+  function GlobalFindAtomW(lpString:LPCWSTR):ATOM; external External_library name 'GlobalFindAtomW';
+
+  function GlobalGetAtomNameW(nAtom:ATOM; lpBuffer:LPWSTR; nSize:longint):UINT; external External_library name 'GlobalGetAtomNameW';
+
+  function AddAtomW(lpString:LPCWSTR):ATOM; external External_library name 'AddAtomW';
+
+  function FindAtomW(lpString:LPCWSTR):ATOM; external External_library name 'FindAtomW';
+
+  function GetAtomNameW(nAtom:ATOM; lpBuffer:LPWSTR; nSize:longint):UINT; external External_library name 'GetAtomNameW';
+
+  function GetProfileIntW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; nDefault:INT):UINT; external External_library name 'GetProfileIntW';
+
+  function GetProfileStringW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpDefault:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetProfileStringW';
+
+  function WriteProfileStringW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpString:LPCWSTR):WINBOOL; external External_library name 'WriteProfileStringW';
+
+  function GetProfileSectionW(lpAppName:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetProfileSectionW';
+
+  function WriteProfileSectionW(lpAppName:LPCWSTR; lpString:LPCWSTR):WINBOOL; external External_library name 'WriteProfileSectionW';
+
+  function GetPrivateProfileIntW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; nDefault:INT; lpFileName:LPCWSTR):UINT; external External_library name 'GetPrivateProfileIntW';
+
+  function GetPrivateProfileStringW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpDefault:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD; 
+             lpFileName:LPCWSTR):DWORD; external External_library name 'GetPrivateProfileStringW';
+
+  function WritePrivateProfileStringW(lpAppName:LPCWSTR; lpKeyName:LPCWSTR; lpString:LPCWSTR; lpFileName:LPCWSTR):WINBOOL; external External_library name 'WritePrivateProfileStringW';
+
+  function GetPrivateProfileSectionW(lpAppName:LPCWSTR; lpReturnedString:LPWSTR; nSize:DWORD; lpFileName:LPCWSTR):DWORD; external External_library name 'GetPrivateProfileSectionW';
+
+  function WritePrivateProfileSectionW(lpAppName:LPCWSTR; lpString:LPCWSTR; lpFileName:LPCWSTR):WINBOOL; external External_library name 'WritePrivateProfileSectionW';
+
+  function GetDriveTypeW(lpRootPathName:LPCWSTR):UINT; external External_library name 'GetDriveTypeW';
+
+  function GetSystemDirectoryW(lpBuffer:LPWSTR; uSize:UINT):UINT; external External_library name 'GetSystemDirectoryW';
+
+  function GetTempPathW(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD; external External_library name 'GetTempPathW';
+
+  function GetTempFileNameW(lpPathName:LPCWSTR; lpPrefixString:LPCWSTR; uUnique:UINT; lpTempFileName:LPWSTR):UINT; external External_library name 'GetTempFileNameW';
+
+  function GetWindowsDirectoryW(lpBuffer:LPWSTR; uSize:UINT):UINT; external External_library name 'GetWindowsDirectoryW';
+
+  function SetCurrentDirectoryW(lpPathName:LPCWSTR):WINBOOL; external External_library name 'SetCurrentDirectoryW';
+
+  function GetCurrentDirectoryW(nBufferLength:DWORD; lpBuffer:LPWSTR):DWORD; external External_library name 'GetCurrentDirectoryW';
+
+  function GetDiskFreeSpaceW(lpRootPathName:LPCWSTR; lpSectorsPerCluster:LPDWORD; lpBytesPerSector:LPDWORD; lpNumberOfFreeClusters:LPDWORD; lpTotalNumberOfClusters:LPDWORD):WINBOOL; external External_library name 'GetDiskFreeSpaceW';
+
+  function CreateDirectoryW(lpPathName:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL; external External_library name 'CreateDirectoryW';
+
+  function CreateDirectoryExW(lpTemplateDirectory:LPCWSTR; lpNewDirectory:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):WINBOOL; external External_library name 'CreateDirectoryExW';
+
+  function RemoveDirectoryW(lpPathName:LPCWSTR):WINBOOL; external External_library name 'RemoveDirectoryW';
+
+  function GetFullPathNameW(lpFileName:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR; var lpFilePart:LPWSTR):DWORD; external External_library name 'GetFullPathNameW';
+
+  function DefineDosDeviceW(dwFlags:DWORD; lpDeviceName:LPCWSTR; lpTargetPath:LPCWSTR):WINBOOL; external External_library name 'DefineDosDeviceW';
+
+  function QueryDosDeviceW(lpDeviceName:LPCWSTR; lpTargetPath:LPWSTR; ucchMax:DWORD):DWORD; external External_library name 'QueryDosDeviceW';
+
+  function CreateFileW(lpFileName:LPCWSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD; 
+             dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE; external External_library name 'CreateFileW';
+
+  function SetFileAttributesW(lpFileName:LPCWSTR; dwFileAttributes:DWORD):WINBOOL; external External_library name 'SetFileAttributesW';
+
+  function GetFileAttributesW(lpFileName:LPCWSTR):DWORD; external External_library name 'GetFileAttributesW';
+
+  function GetCompressedFileSizeW(lpFileName:LPCWSTR; lpFileSizeHigh:LPDWORD):DWORD; external External_library name 'GetCompressedFileSizeW';
+
+  function DeleteFileW(lpFileName:LPCWSTR):WINBOOL; external External_library name 'DeleteFileW';
+
+  function SearchPathW(lpPath:LPCWSTR; lpFileName:LPCWSTR; lpExtension:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR; 
+             var lpFilePart:LPWSTR):DWORD; external External_library name 'SearchPathW';
+
+  function CopyFileW(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR; bFailIfExists:WINBOOL):WINBOOL; external External_library name 'CopyFileW';
+
+  function MoveFileW(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR):WINBOOL; external External_library name 'MoveFileW';
+
+  function MoveFileExW(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR; dwFlags:DWORD):WINBOOL; external External_library name 'MoveFileExW';
+
+  function CreateNamedPipeW(lpName:LPCWSTR; dwOpenMode:DWORD; dwPipeMode:DWORD; nMaxInstances:DWORD; nOutBufferSize:DWORD; 
+             nInBufferSize:DWORD; nDefaultTimeOut:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):HANDLE; external External_library name 'CreateNamedPipeW';
+
+  function GetNamedPipeHandleStateW(hNamedPipe:HANDLE; lpState:LPDWORD; lpCurInstances:LPDWORD; lpMaxCollectionCount:LPDWORD; lpCollectDataTimeout:LPDWORD; 
+             lpUserName:LPWSTR; nMaxUserNameSize:DWORD):WINBOOL; external External_library name 'GetNamedPipeHandleStateW';
+
+  function CallNamedPipeW(lpNamedPipeName:LPCWSTR; lpInBuffer:LPVOID; nInBufferSize:DWORD; lpOutBuffer:LPVOID; nOutBufferSize:DWORD; 
+             lpBytesRead:LPDWORD; nTimeOut:DWORD):WINBOOL; external External_library name 'CallNamedPipeW';
+
+  function WaitNamedPipeW(lpNamedPipeName:LPCWSTR; nTimeOut:DWORD):WINBOOL; external External_library name 'WaitNamedPipeW';
+
+  function SetVolumeLabelW(lpRootPathName:LPCWSTR; lpVolumeName:LPCWSTR):WINBOOL; external External_library name 'SetVolumeLabelW';
+
+  function GetVolumeInformationW(lpRootPathName:LPCWSTR; lpVolumeNameBuffer:LPWSTR; nVolumeNameSize:DWORD; lpVolumeSerialNumber:LPDWORD; lpMaximumComponentLength:LPDWORD; 
+             lpFileSystemFlags:LPDWORD; lpFileSystemNameBuffer:LPWSTR; nFileSystemNameSize:DWORD):WINBOOL; external External_library name 'GetVolumeInformationW';
+
+  function ClearEventLogW(hEventLog:HANDLE; lpBackupFileName:LPCWSTR):WINBOOL; external External_library name 'ClearEventLogW';
+
+  function BackupEventLogW(hEventLog:HANDLE; lpBackupFileName:LPCWSTR):WINBOOL; external External_library name 'BackupEventLogW';
+
+  function OpenEventLogW(lpUNCServerName:LPCWSTR; lpSourceName:LPCWSTR):HANDLE; external External_library name 'OpenEventLogW';
+
+  function RegisterEventSourceW(lpUNCServerName:LPCWSTR; lpSourceName:LPCWSTR):HANDLE; external External_library name 'RegisterEventSourceW';
+
+  function OpenBackupEventLogW(lpUNCServerName:LPCWSTR; lpFileName:LPCWSTR):HANDLE; external External_library name 'OpenBackupEventLogW';
+
+  function ReadEventLogW(hEventLog:HANDLE; dwReadFlags:DWORD; dwRecordOffset:DWORD; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; 
+             var pnBytesRead:DWORD; var pnMinNumberOfBytesNeeded:DWORD):WINBOOL; external External_library name 'ReadEventLogW';
+
+  function ReportEventW(hEventLog:HANDLE; wType:WORD; wCategory:WORD; dwEventID:DWORD; lpUserSid:PSID; 
+             wNumStrings:WORD; dwDataSize:DWORD; var lpStrings:LPCWSTR; lpRawData:LPVOID):WINBOOL; external External_library name 'ReportEventW';
+
+  function AccessCheckAndAuditAlarmW(SubsystemName:LPCWSTR; HandleId:LPVOID; ObjectTypeName:LPWSTR; ObjectName:LPWSTR; SecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             DesiredAccess:DWORD; GenericMapping:PGENERIC_MAPPING; ObjectCreation:WINBOOL; GrantedAccess:LPDWORD; AccessStatus:LPBOOL; 
+             pfGenerateOnClose:LPBOOL):WINBOOL; external External_library name 'AccessCheckAndAuditAlarmW';
+
+  function ObjectOpenAuditAlarmW(SubsystemName:LPCWSTR; HandleId:LPVOID; ObjectTypeName:LPWSTR; ObjectName:LPWSTR; pSecurityDescriptor:PSECURITY_DESCRIPTOR; 
+             ClientToken:HANDLE; DesiredAccess:DWORD; GrantedAccess:DWORD; Privileges:PPRIVILEGE_SET; ObjectCreation:WINBOOL; 
+             AccessGranted:WINBOOL; GenerateOnClose:LPBOOL):WINBOOL; external External_library name 'ObjectOpenAuditAlarmW';
+
+  function ObjectPrivilegeAuditAlarmW(SubsystemName:LPCWSTR; HandleId:LPVOID; ClientToken:HANDLE; DesiredAccess:DWORD; Privileges:PPRIVILEGE_SET; 
+             AccessGranted:WINBOOL):WINBOOL; external External_library name 'ObjectPrivilegeAuditAlarmW';
+
+  function ObjectCloseAuditAlarmW(SubsystemName:LPCWSTR; HandleId:LPVOID; GenerateOnClose:WINBOOL):WINBOOL; external External_library name 'ObjectCloseAuditAlarmW';
+
+  function PrivilegedServiceAuditAlarmW(SubsystemName:LPCWSTR; ServiceName:LPCWSTR; ClientToken:HANDLE; Privileges:PPRIVILEGE_SET; AccessGranted:WINBOOL):WINBOOL; external External_library name 'PrivilegedServiceAuditAlarmW';
+
+  function SetFileSecurityW(lpFileName:LPCWSTR; SecurityInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR):WINBOOL; external External_library name 'SetFileSecurityW';
+
+  function GetFileSecurityW(lpFileName:LPCWSTR; RequestedInformation:SECURITY_INFORMATION; pSecurityDescriptor:PSECURITY_DESCRIPTOR; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetFileSecurityW';
+
+  function FindFirstChangeNotificationW(lpPathName:LPCWSTR; bWatchSubtree:WINBOOL; dwNotifyFilter:DWORD):HANDLE; external External_library name 'FindFirstChangeNotificationW';
+
+  function IsBadStringPtrW(lpsz:LPCWSTR; ucchMax:UINT):WINBOOL; external External_library name 'IsBadStringPtrW';
+
+  function LookupAccountSidW(lpSystemName:LPCWSTR; Sid:PSID; Name:LPWSTR; cbName:LPDWORD; ReferencedDomainName:LPWSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL; external External_library name 'LookupAccountSidW';
+
+  function LookupAccountNameW(lpSystemName:LPCWSTR; lpAccountName:LPCWSTR; Sid:PSID; cbSid:LPDWORD; ReferencedDomainName:LPWSTR; 
+             cbReferencedDomainName:LPDWORD; peUse:PSID_NAME_USE):WINBOOL; external External_library name 'LookupAccountNameW';
+
+  function LookupPrivilegeValueW(lpSystemName:LPCWSTR; lpName:LPCWSTR; lpLuid:PLUID):WINBOOL; external External_library name 'LookupPrivilegeValueW';
+
+  function LookupPrivilegeNameW(lpSystemName:LPCWSTR; lpLuid:PLUID; lpName:LPWSTR; cbName:LPDWORD):WINBOOL; external External_library name 'LookupPrivilegeNameW';
+
+  function LookupPrivilegeDisplayNameW(lpSystemName:LPCWSTR; lpName:LPCWSTR; lpDisplayName:LPWSTR; cbDisplayName:LPDWORD; lpLanguageId:LPDWORD):WINBOOL; external External_library name 'LookupPrivilegeDisplayNameW';
+
+  function BuildCommDCBW(lpDef:LPCWSTR; lpDCB:LPDCB):WINBOOL; external External_library name 'BuildCommDCBW';
+
+  function BuildCommDCBAndTimeoutsW(lpDef:LPCWSTR; lpDCB:LPDCB; lpCommTimeouts:LPCOMMTIMEOUTS):WINBOOL; external External_library name 'BuildCommDCBAndTimeoutsW';
+
+  function CommConfigDialogW(lpszName:LPCWSTR; hWnd:HWND; lpCC:LPCOMMCONFIG):WINBOOL; external External_library name 'CommConfigDialogW';
+
+  function GetDefaultCommConfigW(lpszName:LPCWSTR; lpCC:LPCOMMCONFIG; lpdwSize:LPDWORD):WINBOOL; external External_library name 'GetDefaultCommConfigW';
+
+  function SetDefaultCommConfigW(lpszName:LPCWSTR; lpCC:LPCOMMCONFIG; dwSize:DWORD):WINBOOL; external External_library name 'SetDefaultCommConfigW';
+
+  function GetComputerNameW(lpBuffer:LPWSTR; nSize:LPDWORD):WINBOOL; external External_library name 'GetComputerNameW';
+
+  function SetComputerNameW(lpComputerName:LPCWSTR):WINBOOL; external External_library name 'SetComputerNameW';
+
+  function GetUserNameW(lpBuffer:LPWSTR; nSize:LPDWORD):WINBOOL; external External_library name 'GetUserNameW';
+
+  function wvsprintfW(_para1:LPWSTR; _para2:LPCWSTR; arglist:va_list):longint; external External_library name 'wvsprintfW';
+
+  {function wsprintfW(_para1:LPWSTR; _para2:LPCWSTR; ...):longint;CDECL; external External_library name 'wsprintfW';}
+
+  function LoadKeyboardLayoutW(pwszKLID:LPCWSTR; Flags:UINT):HKL; external External_library name 'LoadKeyboardLayoutW';
+
+  function GetKeyboardLayoutNameW(pwszKLID:LPWSTR):WINBOOL; external External_library name 'GetKeyboardLayoutNameW';
+
+  function CreateDesktopW(lpszDesktop:LPWSTR; lpszDevice:LPWSTR; pDevmode:LPDEVMODE; dwFlags:DWORD; dwDesiredAccess:DWORD; 
+             lpsa:LPSECURITY_ATTRIBUTES):HDESK; external External_library name 'CreateDesktopW';
+
+  function OpenDesktopW(lpszDesktop:LPWSTR; dwFlags:DWORD; fInherit:WINBOOL; dwDesiredAccess:DWORD):HDESK; external External_library name 'OpenDesktopW';
+
+  function EnumDesktopsW(hwinsta:HWINSTA; lpEnumFunc:DESKTOPENUMPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumDesktopsW';
+
+  function CreateWindowStationW(lpwinsta:LPWSTR; dwReserved:DWORD; dwDesiredAccess:DWORD; lpsa:LPSECURITY_ATTRIBUTES):HWINSTA; external External_library name 'CreateWindowStationW';
+
+  function OpenWindowStationW(lpszWinSta:LPWSTR; fInherit:WINBOOL; dwDesiredAccess:DWORD):HWINSTA; external External_library name 'OpenWindowStationW';
+
+  function EnumWindowStationsW(lpEnumFunc:ENUMWINDOWSTATIONPROC; lParam:LPARAM):WINBOOL; external External_library name 'EnumWindowStationsW';
+
+  function GetUserObjectInformationW(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD; lpnLengthNeeded:LPDWORD):WINBOOL; external External_library name 'GetUserObjectInformationW';
+
+  function SetUserObjectInformationW(hObj:HANDLE; nIndex:longint; pvInfo:PVOID; nLength:DWORD):WINBOOL; external External_library name 'SetUserObjectInformationW';
+
+  function RegisterWindowMessageW(lpString:LPCWSTR):UINT; external External_library name 'RegisterWindowMessageW';
+
+  function GetMessageW(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT):WINBOOL; external External_library name 'GetMessageW';
+
+  function DispatchMessageW(var lpMsg:MSG):LONG; external External_library name 'DispatchMessageW';
+
+  function PeekMessageW(lpMsg:LPMSG; hWnd:HWND; wMsgFilterMin:UINT; wMsgFilterMax:UINT; wRemoveMsg:UINT):WINBOOL; external External_library name 'PeekMessageW';
+
+  function SendMessageW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'SendMessageW';
+
+  function SendMessageTimeoutW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; fuFlags:UINT; 
+             uTimeout:UINT; lpdwResult:LPDWORD):LRESULT; external External_library name 'SendMessageTimeoutW';
+
+  function SendNotifyMessageW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'SendNotifyMessageW';
+
+  function SendMessageCallbackW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM; lpResultCallBack:SENDASYNCPROC; 
+             dwData:DWORD):WINBOOL; external External_library name 'SendMessageCallbackW';
+
+  function PostMessageW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'PostMessageW';
+
+  function PostThreadMessageW(idThread:DWORD; Msg:UINT; wParam:WPARAM; lParam:LPARAM):WINBOOL; external External_library name 'PostThreadMessageW';
+
+  function DefWindowProcW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefWindowProcW';
+
+  function CallWindowProcW(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'CallWindowProcW';
+
+  function RegisterClassW(var lpWndClass:WNDCLASS):ATOM; external External_library name 'RegisterClassW';
+
+  function UnregisterClassW(lpClassName:LPCWSTR; hInstance:HINSTANCE):WINBOOL; external External_library name 'UnregisterClassW';
+
+  function GetClassInfoW(hInstance:HINSTANCE; lpClassName:LPCWSTR; lpWndClass:LPWNDCLASS):WINBOOL; external External_library name 'GetClassInfoW';
+
+  function RegisterClassExW(var _para1:WNDCLASSEX):ATOM; external External_library name 'RegisterClassExW';
+
+  function GetClassInfoExW(_para1:HINSTANCE; _para2:LPCWSTR; _para3:LPWNDCLASSEX):WINBOOL; external External_library name 'GetClassInfoExW';
+
+  function CreateWindowExW(dwExStyle:DWORD; lpClassName:LPCWSTR; lpWindowName:LPCWSTR; dwStyle:DWORD; X:longint; 
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND; external External_library name 'CreateWindowExW';
+
+  function CreateDialogParamW(hInstance:HINSTANCE; lpTemplateName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND; external External_library name 'CreateDialogParamW';
+
+  function CreateDialogIndirectParamW(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):HWND; external External_library name 'CreateDialogIndirectParamW';
+
+  function DialogBoxParamW(hInstance:HINSTANCE; lpTemplateName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint; external External_library name 'DialogBoxParamW';
+
+  function DialogBoxIndirectParamW(hInstance:HINSTANCE; hDialogTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC; dwInitParam:LPARAM):longint; external External_library name 'DialogBoxIndirectParamW';
+
+  function SetDlgItemTextW(hDlg:HWND; nIDDlgItem:longint; lpString:LPCWSTR):WINBOOL; external External_library name 'SetDlgItemTextW';
+
+  function GetDlgItemTextW(hDlg:HWND; nIDDlgItem:longint; lpString:LPWSTR; nMaxCount:longint):UINT; external External_library name 'GetDlgItemTextW';
+
+  function SendDlgItemMessageW(hDlg:HWND; nIDDlgItem:longint; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LONG; external External_library name 'SendDlgItemMessageW';
+
+  function DefDlgProcW(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefDlgProcW';
+
+  function CallMsgFilterW(lpMsg:LPMSG; nCode:longint):WINBOOL; external External_library name 'CallMsgFilterW';
+
+  function RegisterClipboardFormatW(lpszFormat:LPCWSTR):UINT; external External_library name 'RegisterClipboardFormatW';
+
+  function GetClipboardFormatNameW(format:UINT; lpszFormatName:LPWSTR; cchMaxCount:longint):longint; external External_library name 'GetClipboardFormatNameW';
+
+  function CharToOemW(lpszSrc:LPCWSTR; lpszDst:LPSTR):WINBOOL; external External_library name 'CharToOemW';
+
+  function OemToCharW(lpszSrc:LPCSTR; lpszDst:LPWSTR):WINBOOL; external External_library name 'OemToCharW';
+
+  function CharToOemBuffW(lpszSrc:LPCWSTR; lpszDst:LPSTR; cchDstLength:DWORD):WINBOOL; external External_library name 'CharToOemBuffW';
+
+  function OemToCharBuffW(lpszSrc:LPCSTR; lpszDst:LPWSTR; cchDstLength:DWORD):WINBOOL; external External_library name 'OemToCharBuffW';
+
+  function CharUpperW(lpsz:LPWSTR):LPWSTR; external External_library name 'CharUpperW';
+
+  function CharUpperBuffW(lpsz:LPWSTR; cchLength:DWORD):DWORD; external External_library name 'CharUpperBuffW';
+
+  function CharLowerW(lpsz:LPWSTR):LPWSTR; external External_library name 'CharLowerW';
+
+  function CharLowerBuffW(lpsz:LPWSTR; cchLength:DWORD):DWORD; external External_library name 'CharLowerBuffW';
+
+  function CharNextW(lpsz:LPCWSTR):LPWSTR; external External_library name 'CharNextW';
+
+  function CharPrevW(lpszStart:LPCWSTR; lpszCurrent:LPCWSTR):LPWSTR; external External_library name 'CharPrevW';
+
+  function IsCharAlphaW(ch:WCHAR):WINBOOL; external External_library name 'IsCharAlphaW';
+
+  function IsCharAlphaNumericW(ch:WCHAR):WINBOOL; external External_library name 'IsCharAlphaNumericW';
+
+  function IsCharUpperW(ch:WCHAR):WINBOOL; external External_library name 'IsCharUpperW';
+
+  function IsCharLowerW(ch:WCHAR):WINBOOL; external External_library name 'IsCharLowerW';
+
+  function GetKeyNameTextW(lParam:LONG; lpString:LPWSTR; nSize:longint):longint; external External_library name 'GetKeyNameTextW';
+
+  function VkKeyScanW(ch:WCHAR):SHORT; external External_library name 'VkKeyScanW';
+
+  function VkKeyScanExW(ch:WCHAR; dwhkl:HKL):SHORT; external External_library name 'VkKeyScanExW';
+
+  function MapVirtualKeyW(uCode:UINT; uMapType:UINT):UINT; external External_library name 'MapVirtualKeyW';
+
+  function MapVirtualKeyExW(uCode:UINT; uMapType:UINT; dwhkl:HKL):UINT; external External_library name 'MapVirtualKeyExW';
+
+  function LoadAcceleratorsW(hInstance:HINSTANCE; lpTableName:LPCWSTR):HACCEL; external External_library name 'LoadAcceleratorsW';
+
+  function CreateAcceleratorTableW(_para1:LPACCEL; _para2:longint):HACCEL; external External_library name 'CreateAcceleratorTableW';
+
+  function CopyAcceleratorTableW(hAccelSrc:HACCEL; lpAccelDst:LPACCEL; cAccelEntries:longint):longint; external External_library name 'CopyAcceleratorTableW';
+
+  function TranslateAcceleratorW(hWnd:HWND; hAccTable:HACCEL; lpMsg:LPMSG):longint; external External_library name 'TranslateAcceleratorW';
+
+  function LoadMenuW(hInstance:HINSTANCE; lpMenuName:LPCWSTR):HMENU; external External_library name 'LoadMenuW';
+
+  function LoadMenuIndirectW(var lpMenuTemplate:MENUTEMPLATE):HMENU; external External_library name 'LoadMenuIndirectW';
+
+  function ChangeMenuW(hMenu:HMENU; cmd:UINT; lpszNewItem:LPCWSTR; cmdInsert:UINT; flags:UINT):WINBOOL; external External_library name 'ChangeMenuW';
+
+  function GetMenuStringW(hMenu:HMENU; uIDItem:UINT; lpString:LPWSTR; nMaxCount:longint; uFlag:UINT):longint; external External_library name 'GetMenuStringW';
+
+  function InsertMenuW(hMenu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL; external External_library name 'InsertMenuW';
+
+  function AppendMenuW(hMenu:HMENU; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL; external External_library name 'AppendMenuW';
+
+  function ModifyMenuW(hMnu:HMENU; uPosition:UINT; uFlags:UINT; uIDNewItem:UINT; lpNewItem:LPCWSTR):WINBOOL; external External_library name 'ModifyMenuW';
+
+  function InsertMenuItemW(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL; external External_library name 'InsertMenuItemW';
+
+  function GetMenuItemInfoW(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPMENUITEMINFO):WINBOOL; external External_library name 'GetMenuItemInfoW';
+
+  function SetMenuItemInfoW(_para1:HMENU; _para2:UINT; _para3:WINBOOL; _para4:LPCMENUITEMINFO):WINBOOL; external External_library name 'SetMenuItemInfoW';
+
+  function DrawTextW(hDC:HDC; lpString:LPCWSTR; nCount:longint; lpRect:LPRECT; uFormat:UINT):longint; external External_library name 'DrawTextW';
+
+  function DrawTextExW(_para1:HDC; _para2:LPWSTR; _para3:longint; _para4:LPRECT; _para5:UINT; 
+             _para6:LPDRAWTEXTPARAMS):longint; external External_library name 'DrawTextExW';
+
+  function GrayStringW(hDC:HDC; hBrush:HBRUSH; lpOutputFunc:GRAYSTRINGPROC; lpData:LPARAM; nCount:longint; 
+             X:longint; Y:longint; nWidth:longint; nHeight:longint):WINBOOL; external External_library name 'GrayStringW';
+
+  function DrawStateW(_para1:HDC; _para2:HBRUSH; _para3:DRAWSTATEPROC; _para4:LPARAM; _para5:WPARAM; 
+             _para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:UINT):WINBOOL; external External_library name 'DrawStateW';
+
+  function TabbedTextOutW(hDC:HDC; X:longint; Y:longint; lpString:LPCWSTR; nCount:longint; 
+             nTabPositions:longint; lpnTabStopPositions:LPINT; nTabOrigin:longint):LONG; external External_library name 'TabbedTextOutW';
+
+  function GetTabbedTextExtentW(hDC:HDC; lpString:LPCWSTR; nCount:longint; nTabPositions:longint; lpnTabStopPositions:LPINT):DWORD; external External_library name 'GetTabbedTextExtentW';
+
+  function SetPropW(hWnd:HWND; lpString:LPCWSTR; hData:HANDLE):WINBOOL; external External_library name 'SetPropW';
+
+  function GetPropW(hWnd:HWND; lpString:LPCWSTR):HANDLE; external External_library name 'GetPropW';
+
+  function RemovePropW(hWnd:HWND; lpString:LPCWSTR):HANDLE; external External_library name 'RemovePropW';
+
+  function EnumPropsExW(hWnd:HWND; lpEnumFunc:PROPENUMPROCEX; lParam:LPARAM):longint; external External_library name 'EnumPropsExW';
+
+  function EnumPropsW(hWnd:HWND; lpEnumFunc:PROPENUMPROC):longint; external External_library name 'EnumPropsW';
+
+  function SetWindowTextW(hWnd:HWND; lpString:LPCWSTR):WINBOOL; external External_library name 'SetWindowTextW';
+
+  function GetWindowTextW(hWnd:HWND; lpString:LPWSTR; nMaxCount:longint):longint; external External_library name 'GetWindowTextW';
+
+  function GetWindowTextLengthW(hWnd:HWND):longint; external External_library name 'GetWindowTextLengthW';
+
+  function MessageBoxW(hWnd:HWND; lpText:LPCWSTR; lpCaption:LPCWSTR; uType:UINT):longint; external External_library name 'MessageBoxW';
+
+  function MessageBoxExW(hWnd:HWND; lpText:LPCWSTR; lpCaption:LPCWSTR; uType:UINT; wLanguageId:WORD):longint; external External_library name 'MessageBoxExW';
+
+  function MessageBoxIndirectW(_para1:LPMSGBOXPARAMS):longint; external External_library name 'MessageBoxIndirectW';
+
+  function GetWindowLongW(hWnd:HWND; nIndex:longint):LONG; external External_library name 'GetWindowLongW';
+
+  function SetWindowLongW(hWnd:HWND; nIndex:longint; dwNewLong:LONG):LONG; external External_library name 'SetWindowLongW';
+
+  function GetClassLongW(hWnd:HWND; nIndex:longint):DWORD; external External_library name 'GetClassLongW';
+
+  function SetClassLongW(hWnd:HWND; nIndex:longint; dwNewLong:LONG):DWORD; external External_library name 'SetClassLongW';
+
+  function FindWindowW(lpClassName:LPCWSTR; lpWindowName:LPCWSTR):HWND; external External_library name 'FindWindowW';
+
+  function FindWindowExW(_para1:HWND; _para2:HWND; _para3:LPCWSTR; _para4:LPCWSTR):HWND; external External_library name 'FindWindowExW';
+
+  function GetClassNameW(hWnd:HWND; lpClassName:LPWSTR; nMaxCount:longint):longint; external External_library name 'GetClassNameW';
+
+  function SetWindowsHookExW(idHook:longint; lpfn:HOOKPROC; hmod:HINSTANCE; dwThreadId:DWORD):HHOOK; external External_library name 'SetWindowsHookExW';
+
+  function LoadBitmapW(hInstance:HINSTANCE; lpBitmapName:LPCWSTR):HBITMAP; external External_library name 'LoadBitmapW';
+
+  function LoadCursorW(hInstance:HINSTANCE; lpCursorName:LPCWSTR):HCURSOR; external External_library name 'LoadCursorW';
+
+  function LoadCursorFromFileW(lpFileName:LPCWSTR):HCURSOR; external External_library name 'LoadCursorFromFileW';
+
+  function LoadIconW(hInstance:HINSTANCE; lpIconName:LPCWSTR):HICON; external External_library name 'LoadIconW';
+
+  function LoadImageW(_para1:HINSTANCE; _para2:LPCWSTR; _para3:UINT; _para4:longint; _para5:longint; 
+             _para6:UINT):HANDLE; external External_library name 'LoadImageW';
+
+  function LoadStringW(hInstance:HINSTANCE; uID:UINT; lpBuffer:LPWSTR; nBufferMax:longint):longint; external External_library name 'LoadStringW';
+
+  function IsDialogMessageW(hDlg:HWND; lpMsg:LPMSG):WINBOOL; external External_library name 'IsDialogMessageW';
+
+  function DlgDirListW(hDlg:HWND; lpPathSpec:LPWSTR; nIDListBox:longint; nIDStaticPath:longint; uFileType:UINT):longint; external External_library name 'DlgDirListW';
+
+  function DlgDirSelectExW(hDlg:HWND; lpString:LPWSTR; nCount:longint; nIDListBox:longint):WINBOOL; external External_library name 'DlgDirSelectExW';
+
+  function DlgDirListComboBoxW(hDlg:HWND; lpPathSpec:LPWSTR; nIDComboBox:longint; nIDStaticPath:longint; uFiletype:UINT):longint; external External_library name 'DlgDirListComboBoxW';
+
+  function DlgDirSelectComboBoxExW(hDlg:HWND; lpString:LPWSTR; nCount:longint; nIDComboBox:longint):WINBOOL; external External_library name 'DlgDirSelectComboBoxExW';
+
+  function DefFrameProcW(hWnd:HWND; hWndMDIClient:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefFrameProcW';
+
+  function DefMDIChildProcW(hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external External_library name 'DefMDIChildProcW';
+
+  function CreateMDIWindowW(lpClassName:LPWSTR; lpWindowName:LPWSTR; dwStyle:DWORD; X:longint; Y:longint; 
+             nWidth:longint; nHeight:longint; hWndParent:HWND; hInstance:HINSTANCE; lParam:LPARAM):HWND; external External_library name 'CreateMDIWindowW';
+
+  function WinHelpW(hWndMain:HWND; lpszHelp:LPCWSTR; uCommand:UINT; dwData:DWORD):WINBOOL; external External_library name 'WinHelpW';
+
+  function ChangeDisplaySettingsW(lpDevMode:LPDEVMODE; dwFlags:DWORD):LONG; external External_library name 'ChangeDisplaySettingsW';
+
+  function EnumDisplaySettingsW(lpszDeviceName:LPCWSTR; iModeNum:DWORD; lpDevMode:LPDEVMODE):WINBOOL; external External_library name 'EnumDisplaySettingsW';
+
+  function SystemParametersInfoW(uiAction:UINT; uiParam:UINT; pvParam:PVOID; fWinIni:UINT):WINBOOL; external External_library name 'SystemParametersInfoW';
+
+  function AddFontResourceW(_para1:LPCWSTR):longint; external External_library name 'AddFontResourceW';
+
+  function CopyMetaFileW(_para1:HMETAFILE; _para2:LPCWSTR):HMETAFILE; external External_library name 'CopyMetaFileW';
+
+  function CreateFontIndirectW(var _para1:LOGFONT):HFONT; external External_library name 'CreateFontIndirectW';
+
+  function CreateFontW(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD; _para7:DWORD; _para8:DWORD; _para9:DWORD; _para10:DWORD; 
+             _para11:DWORD; _para12:DWORD; _para13:DWORD; _para14:LPCWSTR):HFONT; external External_library name 'CreateFontW';
+
+  function CreateICW(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR; var _para4:DEVMODE):HDC; external External_library name 'CreateICW';
+
+  function CreateMetaFileW(_para1:LPCWSTR):HDC; external External_library name 'CreateMetaFileW';
+
+  function CreateScalableFontResourceW(_para1:DWORD; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR):WINBOOL; external External_library name 'CreateScalableFontResourceW';
+
+  function DeviceCapabilitiesW(_para1:LPCWSTR; _para2:LPCWSTR; _para3:WORD; _para4:LPWSTR; var _para5:DEVMODE):longint; external External_library name 'DeviceCapabilitiesW';
+
+  function EnumFontFamiliesExW(_para1:HDC; _para2:LPLOGFONT; _para3:FONTENUMEXPROC; _para4:LPARAM; _para5:DWORD):longint; external External_library name 'EnumFontFamiliesExW';
+
+  function EnumFontFamiliesW(_para1:HDC; _para2:LPCWSTR; _para3:FONTENUMPROC; _para4:LPARAM):longint; external External_library name 'EnumFontFamiliesW';
+
+  function EnumFontsW(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external External_library name 'EnumFontsW';
+
+  function GetCharWidthW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL; external External_library name 'GetCharWidthW';
+
+  function GetCharWidth32W(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPINT):WINBOOL; external External_library name 'GetCharWidth32W';
+
+  function GetCharWidthFloatW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:PFLOAT):WINBOOL; external External_library name 'GetCharWidthFloatW';
+
+  function GetCharABCWidthsW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABC):WINBOOL; external External_library name 'GetCharABCWidthsW';
+
+  function GetCharABCWidthsFloatW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPABCFLOAT):WINBOOL; external External_library name 'GetCharABCWidthsFloatW';
+
+  function GetGlyphOutlineW(_para1:HDC; _para2:UINT; _para3:UINT; _para4:LPGLYPHMETRICS; _para5:DWORD; 
+             _para6:LPVOID; var _para7:MAT2):DWORD; external External_library name 'GetGlyphOutlineW';
+
+  function GetMetaFileW(_para1:LPCWSTR):HMETAFILE; external External_library name 'GetMetaFileW';
+
+  function GetOutlineTextMetricsW(_para1:HDC; _para2:UINT; _para3:LPOUTLINETEXTMETRIC):UINT; external External_library name 'GetOutlineTextMetricsW';
+
+  function GetTextExtentPointW(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'GetTextExtentPointW';
+
+  function GetTextExtentPoint32W(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:LPSIZE):WINBOOL; external External_library name 'GetTextExtentPoint32W';
+
+  function GetTextExtentExPointW(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:longint; _para5:LPINT; 
+             _para6:LPINT; _para7:LPSIZE):WINBOOL; external External_library name 'GetTextExtentExPointW';
+
+  function GetCharacterPlacementW(_para1:HDC; _para2:LPCWSTR; _para3:longint; _para4:longint; _para5:LPGCP_RESULTS; 
+             _para6:DWORD):DWORD; external External_library name 'GetCharacterPlacementW';
+
+  function ResetDCW(_para1:HDC; var _para2:DEVMODE):HDC; external External_library name 'ResetDCW';
+
+  function RemoveFontResourceW(_para1:LPCWSTR):WINBOOL; external External_library name 'RemoveFontResourceW';
+
+  function CopyEnhMetaFileW(_para1:HENHMETAFILE; _para2:LPCWSTR):HENHMETAFILE; external External_library name 'CopyEnhMetaFileW';
+
+  function CreateEnhMetaFileW(_para1:HDC; _para2:LPCWSTR; var _para3:RECT; _para4:LPCWSTR):HDC; external External_library name 'CreateEnhMetaFileW';
+
+  function GetEnhMetaFileW(_para1:LPCWSTR):HENHMETAFILE; external External_library name 'GetEnhMetaFileW';
+
+  function GetEnhMetaFileDescriptionW(_para1:HENHMETAFILE; _para2:UINT; _para3:LPWSTR):UINT; external External_library name 'GetEnhMetaFileDescriptionW';
+
+  function GetTextMetricsW(_para1:HDC; _para2:LPTEXTMETRIC):WINBOOL; external External_library name 'GetTextMetricsW';
+
+  function StartDocW(_para1:HDC; var _para2:DOCINFO):longint; external External_library name 'StartDocW';
+
+  function GetObjectW(_para1:HGDIOBJ; _para2:longint; _para3:LPVOID):longint; external External_library name 'GetObjectW';
+
+  function TextOutW(_para1:HDC; _para2:longint; _para3:longint; _para4:LPCWSTR; _para5:longint):WINBOOL; external External_library name 'TextOutW';
+
+  function ExtTextOutW(_para1:HDC; _para2:longint; _para3:longint; _para4:UINT; var _para5:RECT; 
+             _para6:LPCWSTR; _para7:UINT; var _para8:INT):WINBOOL; external External_library name 'ExtTextOutW';
+
+  function PolyTextOutW(_para1:HDC; var _para2:POLYTEXT; _para3:longint):WINBOOL; external External_library name 'PolyTextOutW';
+
+  function GetTextFaceW(_para1:HDC; _para2:longint; _para3:LPWSTR):longint; external External_library name 'GetTextFaceW';
+
+  function GetKerningPairsW(_para1:HDC; _para2:DWORD; _para3:LPKERNINGPAIR):DWORD; external External_library name 'GetKerningPairsW';
+
+  function GetLogColorSpaceW(_para1:HCOLORSPACE; _para2:LPLOGCOLORSPACE; _para3:DWORD):WINBOOL; external External_library name 'GetLogColorSpaceW';
+
+  function CreateColorSpaceW(_para1:LPLOGCOLORSPACE):HCOLORSPACE; external External_library name 'CreateColorSpaceW';
+
+  function GetICMProfileW(_para1:HDC; _para2:DWORD; _para3:LPWSTR):WINBOOL; external External_library name 'GetICMProfileW';
+
+  function SetICMProfileW(_para1:HDC; _para2:LPWSTR):WINBOOL; external External_library name 'SetICMProfileW';
+
+  function UpdateICMRegKeyW(_para1:DWORD; _para2:DWORD; _para3:LPWSTR; _para4:UINT):WINBOOL; external External_library name 'UpdateICMRegKeyW';
+
+  function EnumICMProfilesW(_para1:HDC; _para2:ICMENUMPROC; _para3:LPARAM):longint; external External_library name 'EnumICMProfilesW';
+
+  function CreatePropertySheetPageW(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE; external External_library name 'CreatePropertySheetPageW';
+
+  function PropertySheetW(lppsph:LPCPROPSHEETHEADER):longint; external External_library name 'PropertySheetW';
+
+  function ImageList_LoadImageW(hi:HINSTANCE; lpbmp:LPCWSTR; cx:longint; cGrow:longint; crMask:COLORREF; 
+             uType:UINT; uFlags:UINT):HIMAGELIST; external External_library name 'ImageList_LoadImageW';
+
+  function CreateStatusWindowW(style:LONG; lpszText:LPCWSTR; hwndParent:HWND; wID:UINT):HWND; external External_library name 'CreateStatusWindowW';
+
+  procedure DrawStatusTextW(hDC:HDC; lprc:LPRECT; pszText:LPCWSTR; uFlags:UINT); external External_library name 'DrawStatusTextW';
+
+  function GetOpenFileNameW(_para1:LPOPENFILENAME):WINBOOL; external External_library name 'GetOpenFileNameW';
+
+  function GetSaveFileNameW(_para1:LPOPENFILENAME):WINBOOL; external External_library name 'GetSaveFileNameW';
+
+  function GetFileTitleW(_para1:LPCWSTR; _para2:LPWSTR; _para3:WORD):integer; external External_library name 'GetFileTitleW';
+
+  function ChooseColorW(_para1:LPCHOOSECOLOR):WINBOOL; external External_library name 'ChooseColorW';
+
+  function ReplaceTextW(_para1:LPFINDREPLACE):HWND; external External_library name 'ReplaceTextW';
+
+  function ChooseFontW(_para1:LPCHOOSEFONT):WINBOOL; external External_library name 'ChooseFontW';
+
+  function FindTextW(_para1:LPFINDREPLACE):HWND; external External_library name 'FindTextW';
+
+  function PrintDlgW(_para1:LPPRINTDLG):WINBOOL; external External_library name 'PrintDlgW';
+
+  function PageSetupDlgW(_para1:LPPAGESETUPDLG):WINBOOL; external External_library name 'PageSetupDlgW';
+
+  function CreateProcessW(lpApplicationName:LPCWSTR; lpCommandLine:LPWSTR; lpProcessAttributes:LPSECURITY_ATTRIBUTES; lpThreadAttributes:LPSECURITY_ATTRIBUTES; bInheritHandles:WINBOOL; 
+             dwCreationFlags:DWORD; lpEnvironment:LPVOID; lpCurrentDirectory:LPCWSTR; lpStartupInfo:LPSTARTUPINFO; lpProcessInformation:LPPROCESS_INFORMATION):WINBOOL; external External_library name 'CreateProcessW';
+
+  procedure GetStartupInfoW(lpStartupInfo:LPSTARTUPINFO); external External_library name 'GetStartupInfoW';
+
+  function FindFirstFileW(lpFileName:LPCWSTR; lpFindFileData:LPWIN32_FIND_DATA):HANDLE; external External_library name 'FindFirstFileW';
+
+  function FindNextFileW(hFindFile:HANDLE; lpFindFileData:LPWIN32_FIND_DATA):WINBOOL; external External_library name 'FindNextFileW';
+
+  function GetVersionExW(lpVersionInformation:LPOSVERSIONINFO):WINBOOL; external External_library name 'GetVersionExW';
+
+  { was #define dname(params) def_expr }
+  function CreateWindowW(lpClassName:LPCWSTR; lpWindowName:LPCWSTR; dwStyle:DWORD; X:longint;
+             Y:longint; nWidth:longint; nHeight:longint; hWndParent:HWND; hMenu:HMENU; 
+             hInstance:HINSTANCE; lpParam:LPVOID):HWND;
+    begin
+       CreateWindowW:=CreateWindowExW(0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam);
+    end;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogW(hInstance:HINSTANCE; lpName:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+    begin
+       CreateDialogW:=CreateDialogParamW(hInstance,lpName,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function CreateDialogIndirectW(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):HWND;
+    begin
+       CreateDialogIndirectW:=CreateDialogIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxW(hInstance:HINSTANCE; lpTemplate:LPCWSTR; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+    begin
+       DialogBoxW:=DialogBoxParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  { was #define dname(params) def_expr }
+  function DialogBoxIndirectW(hInstance:HINSTANCE; lpTemplate:LPCDLGTEMPLATE; hWndParent:HWND; lpDialogFunc:DLGPROC):longint;
+    begin
+       DialogBoxIndirectW:=DialogBoxIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,0);
+    end;
+
+  function CreateDCW(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR; var _para4:DEVMODE):HDC; external External_library name 'CreateDCW';
+
+  function CreateFontA(_para1:longint; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+             _para6:DWORD; _para7:DWORD; _para8:DWORD; _para9:DWORD; _para10:DWORD; 
+             _para11:DWORD; _para12:DWORD; _para13:DWORD; _para14:LPCSTR):HFONT; external External_library name 'CreateFontA';
+
+  function VerInstallFileW(uFlags:DWORD; szSrcFileName:LPWSTR; szDestFileName:LPWSTR; szSrcDir:LPWSTR; szDestDir:LPWSTR; 
+             szCurDir:LPWSTR; szTmpFile:LPWSTR; lpuTmpFileLen:PUINT):DWORD; external External_library name 'VerInstallFileW';
+
+  function GetFileVersionInfoSizeW(lptstrFilename:LPWSTR; lpdwHandle:LPDWORD):DWORD; external External_library name 'GetFileVersionInfoSizeW';
+
+  function GetFileVersionInfoW(lptstrFilename:LPWSTR; dwHandle:DWORD; dwLen:DWORD; lpData:LPVOID):WINBOOL; external External_library name 'GetFileVersionInfoW';
+
+  function VerLanguageNameW(wLang:DWORD; szLang:LPWSTR; nSize:DWORD):DWORD; external External_library name 'VerLanguageNameW';
+
+  function VerQueryValueW(pBlock:LPVOID; lpSubBlock:LPWSTR; var lplpBuffer:LPVOID; puLen:PUINT):WINBOOL; external External_library name 'VerQueryValueW';
+
+  function VerFindFileW(uFlags:DWORD; szFileName:LPWSTR; szWinDir:LPWSTR; szAppDir:LPWSTR; szCurDir:LPWSTR; 
+             lpuCurDirLen:PUINT; szDestDir:LPWSTR; lpuDestDirLen:PUINT):DWORD; external External_library name 'VerFindFileW';
+
+  function RegSetValueExW(hKey:HKEY; lpValueName:LPCWSTR; Reserved:DWORD; dwType:DWORD; var lpData:BYTE; 
+             cbData:DWORD):LONG; external External_library name 'RegSetValueExW';
+
+  function RegUnLoadKeyW(hKey:HKEY; lpSubKey:LPCWSTR):LONG; external External_library name 'RegUnLoadKeyW';
+
+  function InitiateSystemShutdownW(lpMachineName:LPWSTR; lpMessage:LPWSTR; dwTimeout:DWORD; bForceAppsClosed:WINBOOL; bRebootAfterShutdown:WINBOOL):WINBOOL; external External_library name 'InitiateSystemShutdownW';
+
+  function AbortSystemShutdownW(lpMachineName:LPWSTR):WINBOOL; external External_library name 'AbortSystemShutdownW';
+
+  function RegRestoreKeyW(hKey:HKEY; lpFile:LPCWSTR; dwFlags:DWORD):LONG; external External_library name 'RegRestoreKeyW';
+
+  function RegSaveKeyW(hKey:HKEY; lpFile:LPCWSTR; lpSecurityAttributes:LPSECURITY_ATTRIBUTES):LONG; external External_library name 'RegSaveKeyW';
+
+  function RegSetValueW(hKey:HKEY; lpSubKey:LPCWSTR; dwType:DWORD; lpData:LPCWSTR; cbData:DWORD):LONG; external External_library name 'RegSetValueW';
+
+  function RegQueryValueW(hKey:HKEY; lpSubKey:LPCWSTR; lpValue:LPWSTR; lpcbValue:PLONG):LONG; external External_library name 'RegQueryValueW';
+
+  function RegQueryMultipleValuesW(hKey:HKEY; val_list:PVALENT; num_vals:DWORD; lpValueBuf:LPWSTR; ldwTotsize:LPDWORD):LONG; external External_library name 'RegQueryMultipleValuesW';
+
+  function RegQueryValueExW(hKey:HKEY; lpValueName:LPCWSTR; lpReserved:LPDWORD; lpType:LPDWORD; lpData:LPBYTE; 
+             lpcbData:LPDWORD):LONG; external External_library name 'RegQueryValueExW';
+
+  function RegReplaceKeyW(hKey:HKEY; lpSubKey:LPCWSTR; lpNewFile:LPCWSTR; lpOldFile:LPCWSTR):LONG; external External_library name 'RegReplaceKeyW';
+
+  function RegConnectRegistryW(lpMachineName:LPWSTR; hKey:HKEY; phkResult:PHKEY):LONG; external External_library name 'RegConnectRegistryW';
+
+  function RegCreateKeyW(hKey:HKEY; lpSubKey:LPCWSTR; phkResult:PHKEY):LONG; external External_library name 'RegCreateKeyW';
+
+  function RegCreateKeyExW(hKey:HKEY; lpSubKey:LPCWSTR; Reserved:DWORD; lpClass:LPWSTR; dwOptions:DWORD; 
+             samDesired:REGSAM; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; phkResult:PHKEY; lpdwDisposition:LPDWORD):LONG; external External_library name 'RegCreateKeyExW';
+
+  function RegDeleteKeyW(hKey:HKEY; lpSubKey:LPCWSTR):LONG; external External_library name 'RegDeleteKeyW';
+
+  function RegDeleteValueW(hKey:HKEY; lpValueName:LPCWSTR):LONG; external External_library name 'RegDeleteValueW';
+
+  function RegEnumKeyW(hKey:HKEY; dwIndex:DWORD; lpName:LPWSTR; cbName:DWORD):LONG; external External_library name 'RegEnumKeyW';
+
+  function RegEnumKeyExW(hKey:HKEY; dwIndex:DWORD; lpName:LPWSTR; lpcbName:LPDWORD; lpReserved:LPDWORD; 
+             lpClass:LPWSTR; lpcbClass:LPDWORD; lpftLastWriteTime:PFILETIME):LONG; external External_library name 'RegEnumKeyExW';
+
+  function RegEnumValueW(hKey:HKEY; dwIndex:DWORD; lpValueName:LPWSTR; lpcbValueName:LPDWORD; lpReserved:LPDWORD; 
+             lpType:LPDWORD; lpData:LPBYTE; lpcbData:LPDWORD):LONG; external External_library name 'RegEnumValueW';
+
+  function RegLoadKeyW(hKey:HKEY; lpSubKey:LPCWSTR; lpFile:LPCWSTR):LONG; external External_library name 'RegLoadKeyW';
+
+  function RegOpenKeyW(hKey:HKEY; lpSubKey:LPCWSTR; phkResult:PHKEY):LONG; external External_library name 'RegOpenKeyW';
+
+  function RegOpenKeyExW(hKey:HKEY; lpSubKey:LPCWSTR; ulOptions:DWORD; samDesired:REGSAM; phkResult:PHKEY):LONG; external External_library name 'RegOpenKeyExW';
+
+  function RegQueryInfoKeyW(hKey:HKEY; lpClass:LPWSTR; lpcbClass:LPDWORD; lpReserved:LPDWORD; lpcSubKeys:LPDWORD; 
+             lpcbMaxSubKeyLen:LPDWORD; lpcbMaxClassLen:LPDWORD; lpcValues:LPDWORD; lpcbMaxValueNameLen:LPDWORD; lpcbMaxValueLen:LPDWORD; 
+             lpcbSecurityDescriptor:LPDWORD; lpftLastWriteTime:PFILETIME):LONG; external External_library name 'RegQueryInfoKeyW';
+
+  function CompareStringW(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCWSTR; cchCount1:longint; lpString2:LPCWSTR; 
+             cchCount2:longint):longint; external External_library name 'CompareStringW';
+
+  function LCMapStringW(Locale:LCID; dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestStr:LPWSTR; 
+             cchDest:longint):longint; external External_library name 'LCMapStringW';
+
+  function GetLocaleInfoW(Locale:LCID; LCType:LCTYPE; lpLCData:LPWSTR; cchData:longint):longint; external External_library name 'GetLocaleInfoW';
+
+  function SetLocaleInfoW(Locale:LCID; LCType:LCTYPE; lpLCData:LPCWSTR):WINBOOL; external External_library name 'SetLocaleInfoW';
+
+  function GetTimeFormatW(Locale:LCID; dwFlags:DWORD; var lpTime:SYSTEMTIME; lpFormat:LPCWSTR; lpTimeStr:LPWSTR; 
+             cchTime:longint):longint; external External_library name 'GetTimeFormatW';
+
+  function GetDateFormatW(Locale:LCID; dwFlags:DWORD; var lpDate:SYSTEMTIME; lpFormat:LPCWSTR; lpDateStr:LPWSTR; 
+             cchDate:longint):longint; external External_library name 'GetDateFormatW';
+
+  function GetNumberFormatW(Locale:LCID; dwFlags:DWORD; lpValue:LPCWSTR; var lpFormat:NUMBERFMT; lpNumberStr:LPWSTR; 
+             cchNumber:longint):longint; external External_library name 'GetNumberFormatW';
+
+  function GetCurrencyFormatW(Locale:LCID; dwFlags:DWORD; lpValue:LPCWSTR; var lpFormat:CURRENCYFMT; lpCurrencyStr:LPWSTR; 
+             cchCurrency:longint):longint; external External_library name 'GetCurrencyFormatW';
+
+  function EnumCalendarInfoW(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL; external External_library name 'EnumCalendarInfoW';
+
+  function EnumTimeFormatsW(lpTimeFmtEnumProc:TIMEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external External_library name 'EnumTimeFormatsW';
+
+  function EnumDateFormatsW(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external External_library name 'EnumDateFormatsW';
+
+  function GetStringTypeExW(Locale:LCID; dwInfoType:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL; external External_library name 'GetStringTypeExW';
+
+  function GetStringTypeW(dwInfoType:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpCharType:LPWORD):WINBOOL; external External_library name 'GetStringTypeW';
+
+  function FoldStringW(dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestStr:LPWSTR; cchDest:longint):longint; external External_library name 'FoldStringW';
+
+  function EnumSystemLocalesW(lpLocaleEnumProc:LOCALE_ENUMPROC; dwFlags:DWORD):WINBOOL; external External_library name 'EnumSystemLocalesW';
+
+  function EnumSystemCodePagesW(lpCodePageEnumProc:CODEPAGE_ENUMPROC; dwFlags:DWORD):WINBOOL; external External_library name 'EnumSystemCodePagesW';
+
+  function PeekConsoleInputW(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL; external External_library name 'PeekConsoleInputW';
+
+  function ReadConsoleInputW(hConsoleInput:HANDLE; lpBuffer:PINPUT_RECORD; nLength:DWORD; lpNumberOfEventsRead:LPDWORD):WINBOOL; external External_library name 'ReadConsoleInputW';
+
+  function WriteConsoleInputW(hConsoleInput:HANDLE; var lpBuffer:INPUT_RECORD; nLength:DWORD; lpNumberOfEventsWritten:LPDWORD):WINBOOL; external External_library name 'WriteConsoleInputW';
+
+  function ReadConsoleOutputW(hConsoleOutput:HANDLE; lpBuffer:PCHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpReadRegion:PSMALL_RECT):WINBOOL; external External_library name 'ReadConsoleOutputW';
+
+  function WriteConsoleOutputW(hConsoleOutput:HANDLE; var lpBuffer:CHAR_INFO; dwBufferSize:COORD; dwBufferCoord:COORD; lpWriteRegion:PSMALL_RECT):WINBOOL; external External_library name 'WriteConsoleOutputW';
+
+  function ReadConsoleOutputCharacterW(hConsoleOutput:HANDLE; lpCharacter:LPWSTR; nLength:DWORD; dwReadCoord:COORD; lpNumberOfCharsRead:LPDWORD):WINBOOL; external External_library name 'ReadConsoleOutputCharacterW';
+
+  function WriteConsoleOutputCharacterW(hConsoleOutput:HANDLE; lpCharacter:LPCWSTR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL; external External_library name 'WriteConsoleOutputCharacterW';
+
+  function FillConsoleOutputCharacterW(hConsoleOutput:HANDLE; cCharacter:WCHAR; nLength:DWORD; dwWriteCoord:COORD; lpNumberOfCharsWritten:LPDWORD):WINBOOL; external External_library name 'FillConsoleOutputCharacterW';
+
+  function ScrollConsoleScreenBufferW(hConsoleOutput:HANDLE; var lpScrollRectangle:SMALL_RECT; var lpClipRectangle:SMALL_RECT; dwDestinationOrigin:COORD; var lpFill:CHAR_INFO):WINBOOL; external External_library name 'ScrollConsoleScreenBufferW';
+
+  function GetConsoleTitleW(lpConsoleTitle:LPWSTR; nSize:DWORD):DWORD; external External_library name 'GetConsoleTitleW';
+
+  function SetConsoleTitleW(lpConsoleTitle:LPCWSTR):WINBOOL; external External_library name 'SetConsoleTitleW';
+
+  function ReadConsoleW(hConsoleInput:HANDLE; lpBuffer:LPVOID; nNumberOfCharsToRead:DWORD; lpNumberOfCharsRead:LPDWORD; lpReserved:LPVOID):WINBOOL; external External_library name 'ReadConsoleW';
+
+  function WriteConsoleW(hConsoleOutput:HANDLE;lpBuffer:pointer; nNumberOfCharsToWrite:DWORD; lpNumberOfCharsWritten:LPDWORD; lpReserved:LPVOID):WINBOOL; external External_library name 'WriteConsoleW';
+
+  function WNetAddConnectionW(lpRemoteName:LPCWSTR; lpPassword:LPCWSTR; lpLocalName:LPCWSTR):DWORD; external External_library name 'WNetAddConnectionW';
+
+  function WNetAddConnection2W(lpNetResource:LPNETRESOURCE; lpPassword:LPCWSTR; lpUserName:LPCWSTR; dwFlags:DWORD):DWORD; external External_library name 'WNetAddConnection2W';
+
+  function WNetAddConnection3W(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpPassword:LPCWSTR; lpUserName:LPCWSTR; dwFlags:DWORD):DWORD; external External_library name 'WNetAddConnection3W';
+
+  function WNetCancelConnectionW(lpName:LPCWSTR; fForce:WINBOOL):DWORD; external External_library name 'WNetCancelConnectionW';
+
+  function WNetCancelConnection2W(lpName:LPCWSTR; dwFlags:DWORD; fForce:WINBOOL):DWORD; external External_library name 'WNetCancelConnection2W';
+
+  function WNetGetConnectionW(lpLocalName:LPCWSTR; lpRemoteName:LPWSTR; lpnLength:LPDWORD):DWORD; external External_library name 'WNetGetConnectionW';
+
+  function WNetUseConnectionW(hwndOwner:HWND; lpNetResource:LPNETRESOURCE; lpUserID:LPCWSTR; lpPassword:LPCWSTR; dwFlags:DWORD; 
+             lpAccessName:LPWSTR; lpBufferSize:LPDWORD; lpResult:LPDWORD):DWORD; external External_library name 'WNetUseConnectionW';
+
+  function WNetSetConnectionW(lpName:LPCWSTR; dwProperties:DWORD; pvValues:LPVOID):DWORD; external External_library name 'WNetSetConnectionW';
+
+  function WNetConnectionDialog1W(lpConnDlgStruct:LPCONNECTDLGSTRUCT):DWORD; external External_library name 'WNetConnectionDialog1W';
+
+  function WNetDisconnectDialog1W(lpConnDlgStruct:LPDISCDLGSTRUCT):DWORD; external External_library name 'WNetDisconnectDialog1W';
+
+  function WNetOpenEnumW(dwScope:DWORD; dwType:DWORD; dwUsage:DWORD; lpNetResource:LPNETRESOURCE; lphEnum:LPHANDLE):DWORD; external External_library name 'WNetOpenEnumW';
+
+  function WNetEnumResourceW(hEnum:HANDLE; lpcCount:LPDWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetEnumResourceW';
+
+  function WNetGetUniversalNameW(lpLocalPath:LPCWSTR; dwInfoLevel:DWORD; lpBuffer:LPVOID; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetGetUniversalNameW';
+
+  function WNetGetUserW(lpName:LPCWSTR; lpUserName:LPWSTR; lpnLength:LPDWORD):DWORD; external External_library name 'WNetGetUserW';
+
+  function WNetGetProviderNameW(dwNetType:DWORD; lpProviderName:LPWSTR; lpBufferSize:LPDWORD):DWORD; external External_library name 'WNetGetProviderNameW';
+
+  function WNetGetNetworkInformationW(lpProvider:LPCWSTR; lpNetInfoStruct:LPNETINFOSTRUCT):DWORD; external External_library name 'WNetGetNetworkInformationW';
+
+  function WNetGetLastErrorW(lpError:LPDWORD; lpErrorBuf:LPWSTR; nErrorBufSize:DWORD; lpNameBuf:LPWSTR; nNameBufSize:DWORD):DWORD; external External_library name 'WNetGetLastErrorW';
+
+  function MultinetGetConnectionPerformanceW(lpNetResource:LPNETRESOURCE; lpNetConnectInfoStruct:LPNETCONNECTINFOSTRUCT):DWORD; external External_library name 'MultinetGetConnectionPerformanceW';
+
+  function ChangeServiceConfigW(hService:SC_HANDLE; dwServiceType:DWORD; dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCWSTR; 
+             lpLoadOrderGroup:LPCWSTR; lpdwTagId:LPDWORD; lpDependencies:LPCWSTR; lpServiceStartName:LPCWSTR; lpPassword:LPCWSTR; 
+             lpDisplayName:LPCWSTR):WINBOOL; external External_library name 'ChangeServiceConfigW';
+
+  function CreateServiceW(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; lpDisplayName:LPCWSTR; dwDesiredAccess:DWORD; dwServiceType:DWORD; 
+             dwStartType:DWORD; dwErrorControl:DWORD; lpBinaryPathName:LPCWSTR; lpLoadOrderGroup:LPCWSTR; lpdwTagId:LPDWORD; 
+             lpDependencies:LPCWSTR; lpServiceStartName:LPCWSTR; lpPassword:LPCWSTR):SC_HANDLE; external External_library name 'CreateServiceW';
+
+  function EnumDependentServicesW(hService:SC_HANDLE; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD; 
+             lpServicesReturned:LPDWORD):WINBOOL; external External_library name 'EnumDependentServicesW';
+
+  function EnumServicesStatusW(hSCManager:SC_HANDLE; dwServiceType:DWORD; dwServiceState:DWORD; lpServices:LPENUM_SERVICE_STATUS; cbBufSize:DWORD; 
+             pcbBytesNeeded:LPDWORD; lpServicesReturned:LPDWORD; lpResumeHandle:LPDWORD):WINBOOL; external External_library name 'EnumServicesStatusW';
+
+  function GetServiceKeyNameW(hSCManager:SC_HANDLE; lpDisplayName:LPCWSTR; lpServiceName:LPWSTR; lpcchBuffer:LPDWORD):WINBOOL; external External_library name 'GetServiceKeyNameW';
+
+  function GetServiceDisplayNameW(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; lpDisplayName:LPWSTR; lpcchBuffer:LPDWORD):WINBOOL; external External_library name 'GetServiceDisplayNameW';
+
+  function OpenSCManagerW(lpMachineName:LPCWSTR; lpDatabaseName:LPCWSTR; dwDesiredAccess:DWORD):SC_HANDLE; external External_library name 'OpenSCManagerW';
+
+  function OpenServiceW(hSCManager:SC_HANDLE; lpServiceName:LPCWSTR; dwDesiredAccess:DWORD):SC_HANDLE; external External_library name 'OpenServiceW';
+
+  function QueryServiceConfigW(hService:SC_HANDLE; lpServiceConfig:LPQUERY_SERVICE_CONFIG; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL; external External_library name 'QueryServiceConfigW';
+
+  function QueryServiceLockStatusW(hSCManager:SC_HANDLE; lpLockStatus:LPQUERY_SERVICE_LOCK_STATUS; cbBufSize:DWORD; pcbBytesNeeded:LPDWORD):WINBOOL; external External_library name 'QueryServiceLockStatusW';
+
+  function RegisterServiceCtrlHandlerW(lpServiceName:LPCWSTR; lpHandlerProc:LPHANDLER_FUNCTION):SERVICE_STATUS_HANDLE; external External_library name 'RegisterServiceCtrlHandlerW';
+
+  function StartServiceCtrlDispatcherW(lpServiceStartTable:LPSERVICE_TABLE_ENTRY):WINBOOL; external External_library name 'StartServiceCtrlDispatcherW';
+
+  function StartServiceW(hService:SC_HANDLE; dwNumServiceArgs:DWORD; var lpServiceArgVectors:LPCWSTR):WINBOOL; external External_library name 'StartServiceW';
+
+  function wglUseFontBitmapsW(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD):WINBOOL; external External_library name 'wglUseFontBitmapsW';
+
+  function wglUseFontOutlinesW(_para1:HDC; _para2:DWORD; _para3:DWORD; _para4:DWORD; _para5:FLOAT; 
+             _para6:FLOAT; _para7:longint; _para8:LPGLYPHMETRICSFLOAT):WINBOOL; external External_library name 'wglUseFontOutlinesW';
+
+  function DragQueryFileW(_para1:HDROP; _para2:cardinal; _para3:LPCWSTR; _para4:cardinal):cardinal; external External_library name 'DragQueryFileW';
+
+  function ExtractAssociatedIconW(_para1:HINSTANCE; _para2:LPCWSTR; var _para3:WORD):HICON; external External_library name 'ExtractAssociatedIconW';
+
+  function ExtractIconW(_para1:HINSTANCE; _para2:LPCWSTR; _para3:cardinal):HICON; external External_library name 'ExtractIconW';
+
+  function FindExecutableW(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR):HINSTANCE; external External_library name 'FindExecutableW';
+
+  function ShellAboutW(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:HICON):longint; external External_library name 'ShellAboutW';
+
+  function ShellExecuteW(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR; _para5:LPCWSTR; 
+             _para6:longint):HINSTANCE; external External_library name 'ShellExecuteW';
+
+  function DdeCreateStringHandleW(_para1:DWORD; _para2:LPCWSTR; _para3:longint):HSZ; external External_library name 'DdeCreateStringHandleW';
+
+  function DdeInitializeW(var _para1:DWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT; external External_library name 'DdeInitializeW';
+
+  function DdeQueryStringW(_para1:DWORD; _para2:HSZ; _para3:LPCWSTR; _para4:DWORD; _para5:longint):DWORD; external External_library name 'DdeQueryStringW';
+
+  function LogonUserW(_para1:LPWSTR; _para2:LPWSTR; _para3:LPWSTR; _para4:DWORD; _para5:DWORD; 
+             var _para6:HANDLE):WINBOOL; external External_library name 'LogonUserW';
+
+  function CreateProcessAsUserW(_para1:HANDLE; _para2:LPCWSTR; _para3:LPWSTR; var _para4:SECURITY_ATTRIBUTES; var _para5:SECURITY_ATTRIBUTES; 
+             _para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCWSTR; var _para10:STARTUPINFO; 
+             var _para11:PROCESS_INFORMATION):WINBOOL; external External_library name 'CreateProcessAsUserW';
+
+
+{$endif read_implementation}
+
+{$ifndef windows_include_files}
+end.
+{$endif not windows_include_files}
+{
+  $Log$
+  Revision 1.1  1998-08-31 11:54:02  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+}

+ 72 - 0
rtl/win32/windows.pp

@@ -0,0 +1,72 @@
+{
+    $Id$
+    This file is part of the Free Pascal run time library.
+    This unit contains the record definition for the Win32 API
+    Copyright (c) 1993,97 by Florian KLaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+unit windows;
+
+{$define windows_include_files}
+
+  interface
+
+{$define read_interface}
+{$undef read_implementation}
+  
+{$warning starting interface of windows unit }
+
+{$i base.pp}
+{$i errors.pp}
+{$i defines.pp}
+{$i messages.pp}
+{$i struct.pp}
+{$i ascfun.pp}
+{$i unifun.pp}
+{$ifdef UNICODE}
+{$i unidef.pp}
+{$else not UNICODE}
+{$i ascdef.pp}
+{$endif UNICODE}
+{$i func.pp}
+
+  implementation
+
+{$undef read_interface}
+{$define read_implementation}
+  
+const External_library='kernel32';
+
+{$i base.pp}
+{$i errors.pp}
+{$i defines.pp}
+{$i messages.pp}
+{$i struct.pp}
+{$i ascfun.pp}
+{$i unifun.pp}
+{$ifdef UNICODE}
+{$i unidef.pp}
+{$else not UNICODE}
+{$i ascdef.pp}
+{$endif UNICODE}
+{$i func.pp}
+
+end.
+{
+  $Log$
+  Revision 1.1  1998-08-31 11:54:02  pierre
+    * compilable windows.pp file
+      still to do :
+       - findout problems
+       - findout the correct DLL for each call !!
+
+}