Rev 7983 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7983 | leency | 1 | (* |
2 | BSD 2-Clause License |
||
3 | |||
4 | Copyright (c) 2019-2020, Anton Krotov |
||
5 | All rights reserved. |
||
6 | *) |
||
7 | |||
8 | MODULE WINAPI; |
||
9 | |||
10 | IMPORT SYSTEM, API; |
||
11 | |||
12 | |||
13 | CONST |
||
14 | |||
15 | OFS_MAXPATHNAME* = 128; |
||
16 | |||
8097 | maxcodehac | 17 | KERNEL = "kernel32.dll"; |
18 | USER = "user32.dll"; |
||
19 | MSVCRT = "msvcrt.dll"; |
||
7983 | leency | 20 | |
8097 | maxcodehac | 21 | |
7983 | leency | 22 | TYPE |
23 | |||
24 | DLL_ENTRY* = API.DLL_ENTRY; |
||
25 | |||
26 | STRING = ARRAY 260 OF CHAR; |
||
27 | |||
28 | TCoord* = RECORD |
||
29 | |||
30 | X*, Y*: WCHAR |
||
31 | |||
32 | END; |
||
33 | |||
34 | TSmallRect* = RECORD |
||
35 | |||
36 | Left*, Top*, Right*, Bottom*: WCHAR |
||
37 | |||
38 | END; |
||
39 | |||
40 | TConsoleScreenBufferInfo* = RECORD |
||
41 | |||
42 | dwSize*: TCoord; |
||
43 | dwCursorPosition*: TCoord; |
||
44 | wAttributes*: WCHAR; |
||
45 | srWindow*: TSmallRect; |
||
46 | dwMaximumWindowSize*: TCoord |
||
47 | |||
48 | END; |
||
49 | |||
50 | TSystemTime* = RECORD |
||
51 | |||
52 | Year*, |
||
53 | Month*, |
||
54 | DayOfWeek*, |
||
55 | Day*, |
||
56 | Hour*, |
||
57 | Min*, |
||
58 | Sec*, |
||
59 | MSec*: WCHAR |
||
60 | |||
61 | END; |
||
62 | |||
8097 | maxcodehac | 63 | tm* = RECORD |
64 | |||
65 | sec*, |
||
66 | min*, |
||
67 | hour*, |
||
68 | mday*, |
||
69 | mon*, |
||
70 | year*, |
||
71 | wday*, |
||
72 | yday*, |
||
73 | isdst*: SYSTEM.CARD32 |
||
74 | |||
75 | END; |
||
76 | |||
7983 | leency | 77 | PSecurityAttributes* = POINTER TO TSecurityAttributes; |
78 | |||
79 | TSecurityAttributes* = RECORD |
||
80 | |||
8097 | maxcodehac | 81 | nLength*: SYSTEM.CARD32; |
7983 | leency | 82 | lpSecurityDescriptor*: INTEGER; |
8097 | maxcodehac | 83 | bInheritHandle*: SYSTEM.CARD32 (* BOOL *) |
7983 | leency | 84 | |
85 | END; |
||
86 | |||
87 | TFileTime* = RECORD |
||
88 | |||
89 | dwLowDateTime*, |
||
8097 | maxcodehac | 90 | dwHighDateTime*: SYSTEM.CARD32 |
7983 | leency | 91 | |
92 | END; |
||
93 | |||
94 | TWin32FindData* = RECORD |
||
95 | |||
8097 | maxcodehac | 96 | dwFileAttributes*: SYSTEM.CARD32; |
7983 | leency | 97 | ftCreationTime*: TFileTime; |
98 | ftLastAccessTime*: TFileTime; |
||
99 | ftLastWriteTime*: TFileTime; |
||
8097 | maxcodehac | 100 | nFileSizeHigh*: SYSTEM.CARD32; |
101 | nFileSizeLow*: SYSTEM.CARD32; |
||
102 | dwReserved0*: SYSTEM.CARD32; |
||
103 | dwReserved1*: SYSTEM.CARD32; |
||
7983 | leency | 104 | cFileName*: STRING; |
8097 | maxcodehac | 105 | cAlternateFileName*: ARRAY 14 OF CHAR; |
106 | dwFileType*: SYSTEM.CARD32; |
||
107 | dwCreatorType*: SYSTEM.CARD32; |
||
108 | wFinderFlags*: WCHAR |
||
7983 | leency | 109 | |
110 | END; |
||
111 | |||
112 | OFSTRUCT* = RECORD |
||
113 | |||
8097 | maxcodehac | 114 | cBytes*: BYTE; |
115 | fFixedDisk*: BYTE; |
||
7983 | leency | 116 | nErrCode*: WCHAR; |
117 | Reserved1*: WCHAR; |
||
118 | Reserved2*: WCHAR; |
||
119 | szPathName*: ARRAY OFS_MAXPATHNAME OF CHAR |
||
120 | |||
121 | END; |
||
122 | |||
123 | POverlapped* = POINTER TO OVERLAPPED; |
||
124 | |||
125 | OVERLAPPED* = RECORD |
||
126 | |||
127 | Internal*: INTEGER; |
||
128 | InternalHigh*: INTEGER; |
||
8097 | maxcodehac | 129 | Offset*: SYSTEM.CARD32; |
130 | OffsetHigh*: SYSTEM.CARD32; |
||
7983 | leency | 131 | hEvent*: INTEGER |
132 | |||
133 | END; |
||
134 | |||
135 | |||
8097 | maxcodehac | 136 | PROCEDURE [windows-, KERNEL, ""] SetConsoleCursorPosition* (hConsoleOutput, dwCursorPosition: INTEGER): INTEGER; |
7983 | leency | 137 | |
8097 | maxcodehac | 138 | PROCEDURE [windows-, KERNEL, ""] GetConsoleScreenBufferInfo* (hConsoleOutput: INTEGER; ConsoleScreenBufferInfo: TConsoleScreenBufferInfo): INTEGER; |
7983 | leency | 139 | |
8097 | maxcodehac | 140 | PROCEDURE [windows-, KERNEL, ""] FillConsoleOutputCharacterA* (hConsoleOutput, cCaracter, nLength, dwWriteCoord, lpNumberOfCharsWritten: INTEGER): INTEGER; |
7983 | leency | 141 | |
8097 | maxcodehac | 142 | PROCEDURE [windows-, KERNEL, ""] FillConsoleOutputAttribute* (hConsoleOutput, wAttribute, nLength, dwWriteCoord, lpNumberOfAttrsWritten: INTEGER): INTEGER; |
7983 | leency | 143 | |
8097 | maxcodehac | 144 | PROCEDURE [windows-, KERNEL, ""] SetConsoleTextAttribute* (hConsoleOutput, wAttributes: INTEGER): INTEGER; |
7983 | leency | 145 | |
8097 | maxcodehac | 146 | PROCEDURE [windows-, KERNEL, ""] GetStdHandle* (nStdHandle: INTEGER): INTEGER; |
7983 | leency | 147 | |
8097 | maxcodehac | 148 | PROCEDURE [windows-, KERNEL, ""] GetLocalTime* (T: TSystemTime); |
7983 | leency | 149 | |
8097 | maxcodehac | 150 | PROCEDURE [windows-, KERNEL, ""] RemoveDirectoryA* (lpPathName: INTEGER): INTEGER; |
7983 | leency | 151 | |
8097 | maxcodehac | 152 | PROCEDURE [windows-, KERNEL, ""] GetFileAttributesA* (lpPathName: INTEGER): SET; |
7983 | leency | 153 | |
8097 | maxcodehac | 154 | PROCEDURE [windows-, KERNEL, ""] CreateDirectoryA* (lpPathName: INTEGER; lpSecurityAttributes: PSecurityAttributes): INTEGER; |
7983 | leency | 155 | |
8097 | maxcodehac | 156 | PROCEDURE [windows-, KERNEL, ""] FindFirstFileA* (lpFileName: INTEGER; lpFindFileData: TWin32FindData): INTEGER; |
7983 | leency | 157 | |
8097 | maxcodehac | 158 | PROCEDURE [windows-, KERNEL, ""] DeleteFileA* (lpFileName: INTEGER): INTEGER; |
7983 | leency | 159 | |
8097 | maxcodehac | 160 | PROCEDURE [windows-, KERNEL, ""] FindClose* (hFindFile: INTEGER): INTEGER; |
7983 | leency | 161 | |
8097 | maxcodehac | 162 | PROCEDURE [windows-, KERNEL, ""] CloseHandle* (hObject: INTEGER): INTEGER; |
7983 | leency | 163 | |
8097 | maxcodehac | 164 | PROCEDURE [windows-, KERNEL, ""] CreateFileA* ( |
7983 | leency | 165 | lpFileName, dwDesiredAccess, dwShareMode: INTEGER; |
166 | lpSecurityAttributes: PSecurityAttributes; |
||
167 | dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile: INTEGER): INTEGER; |
||
168 | |||
8097 | maxcodehac | 169 | PROCEDURE [windows-, KERNEL, ""] OpenFile* (lpFileName: INTEGER; lpReOpenBuff: OFSTRUCT; uStyle: INTEGER): INTEGER; |
7983 | leency | 170 | |
8097 | maxcodehac | 171 | PROCEDURE [windows-, KERNEL, ""] SetFilePointer* (hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod: INTEGER): INTEGER; |
7983 | leency | 172 | |
8097 | maxcodehac | 173 | PROCEDURE [windows-, KERNEL, ""] ReadFile* (hFile, Buffer, nNumberOfBytesToRead, lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): INTEGER; |
7983 | leency | 174 | |
8097 | maxcodehac | 175 | PROCEDURE [windows-, KERNEL, ""] WriteFile* (hFile, Buffer, nNumberOfBytesToRead, lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): INTEGER; |
7983 | leency | 176 | |
8097 | maxcodehac | 177 | PROCEDURE [windows-, KERNEL, ""] ReadConsoleA* (hConsoleInput, lpBuffer, nNumberOfCharsToRead, lpNumberOfCharsRead, lpReserved: INTEGER): INTEGER; |
7983 | leency | 178 | |
8097 | maxcodehac | 179 | PROCEDURE [windows-, KERNEL, ""] GetCommandLineA* (): INTEGER; |
7983 | leency | 180 | |
8097 | maxcodehac | 181 | PROCEDURE [windows-, KERNEL, ""] GlobalAlloc* (uFlags, dwBytes: INTEGER): INTEGER; |
7983 | leency | 182 | |
8097 | maxcodehac | 183 | PROCEDURE [windows-, KERNEL, ""] GlobalFree* (hMem: INTEGER): INTEGER; |
7983 | leency | 184 | |
8097 | maxcodehac | 185 | PROCEDURE [windows-, KERNEL, ""] WriteConsoleW* (hConsoleOutput, lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved: INTEGER): INTEGER; |
7983 | leency | 186 | |
8097 | maxcodehac | 187 | PROCEDURE [windows-, KERNEL, ""] ExitProcess* (code: INTEGER); |
7983 | leency | 188 | |
8097 | maxcodehac | 189 | PROCEDURE [windows-, KERNEL, ""] WriteConsoleA* (hConsoleOutput, lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved: INTEGER): INTEGER; |
7983 | leency | 190 | |
8097 | maxcodehac | 191 | PROCEDURE [windows-, KERNEL, ""] GetTickCount* (): INTEGER; |
7983 | leency | 192 | |
8097 | maxcodehac | 193 | PROCEDURE [windows-, KERNEL, ""] Sleep* (dwMilliseconds: INTEGER); |
7983 | leency | 194 | |
8097 | maxcodehac | 195 | PROCEDURE [windows-, KERNEL, ""] FreeLibrary* (hLibModule: INTEGER): INTEGER; |
7983 | leency | 196 | |
8097 | maxcodehac | 197 | PROCEDURE [windows-, KERNEL, ""] GetProcAddress* (hModule, name: INTEGER): INTEGER; |
7983 | leency | 198 | |
8097 | maxcodehac | 199 | PROCEDURE [windows-, KERNEL, ""] LoadLibraryA* (name: INTEGER): INTEGER; |
7983 | leency | 200 | |
8097 | maxcodehac | 201 | PROCEDURE [windows-, KERNEL, ""] AllocConsole* (): BOOLEAN; |
7983 | leency | 202 | |
8097 | maxcodehac | 203 | PROCEDURE [windows-, KERNEL, ""] FreeConsole* (): BOOLEAN; |
7983 | leency | 204 | |
8097 | maxcodehac | 205 | PROCEDURE [windows-, USER, ""] MessageBoxA* (hWnd, lpText, lpCaption, uType: INTEGER): INTEGER; |
206 | |||
207 | PROCEDURE [windows-, USER, ""] MessageBoxW* (hWnd, lpText, lpCaption, uType: INTEGER): INTEGER; |
||
208 | |||
209 | PROCEDURE [windows-, USER, ""] CreateWindowExA* ( |
||
7983 | leency | 210 | dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, |
211 | nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam: INTEGER): INTEGER; |
||
212 | |||
8097 | maxcodehac | 213 | PROCEDURE [ccall-, MSVCRT, ""] time* (ptr: INTEGER): INTEGER; |
7983 | leency | 214 | |
8097 | maxcodehac | 215 | PROCEDURE [ccall-, MSVCRT, ""] mktime* (time: tm): INTEGER; |
7983 | leency | 216 | |
217 | |||
218 | PROCEDURE SetDllEntry* (process_detach, thread_detach, thread_attach: DLL_ENTRY); |
||
219 | BEGIN |
||
220 | API.SetDll(process_detach, thread_detach, thread_attach) |
||
221 | END SetDllEntry; |
||
222 | |||
223 | |||
8097 | maxcodehac | 224 | END WINAPI. |