Browse Source

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

pierre 27 năm trước cách đây
mục cha
commit
a0eda71f84
15 tập tin đã thay đổi với 30092 bổ sung10405 xóa
  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 !!
+
+}