home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibdemo3.zip / SOURCE.DAT / SOURCE / WIN32 / WINCON.PAS < prev    next >
Pascal/Delphi Source File  |  1995-11-24  |  13KB  |  277 lines

  1. UNIT WinCon;
  2.  
  3. INTERFACE
  4.  
  5. USES WinNT,WinDef;
  6.  
  7. TYPE
  8.     PCOORD=^COORD;
  9.     COORD=RECORD
  10.                 X:INTEGER;
  11.                 Y:INTEGER;
  12.     END;
  13.  
  14.     PSMALL_RECT=^SMALL_RECT;
  15.     SMALL_RECT=RECORD
  16.                      Left:INTEGER;
  17.                      Top:INTEGER;
  18.                      Right:INTEGER;
  19.                      Bottom:INTEGER;
  20.     END;
  21.  
  22.     PKEY_EVENT_RECORD=^KEY_EVENT_RECORD;
  23.     KEY_EVENT_RECORD=RECORD
  24.                            bKeyDown:BOOL;
  25.                            wRepeatCount:WORD;
  26.                            wVirtualKeyCode:WORD;
  27.                            wVirtualScanCode:WORD;
  28.                            uChar:RECORD
  29.                                     CASE Integer OF
  30.                                       1:(UnicodeChar:WORD);
  31.                                       2:(AsciiChar:CHAR);
  32.                                  END;
  33.                            dwControlKeyState:LONGWORD;
  34.     END;
  35.  
  36. CONST
  37.      RIGHT_ALT_PRESSED     =$0001;
  38.      LEFT_ALT_PRESSED      =$0002;
  39.      RIGHT_CTRL_PRESSED    =$0004;
  40.      LEFT_CTRL_PRESSED     =$0008;
  41.      SHIFT_PRESSED         =$0010;
  42.      NUMLOCK_ON            =$0020;
  43.      SCROLLLOCK_ON         =$0040;
  44.      CAPSLOCK_ON           =$0080;
  45.      ENHANCED_KEY          =$0100;
  46.  
  47. TYPE
  48.     PMOUSE_EVENT_RECORD=^MOUSE_EVENT_RECORD;
  49.     MOUSE_EVENT_RECORD=RECORD
  50.                              dwMousePosition:COORD;
  51.                              dwButtonState:LONGWORD;
  52.                              dwControlKeyState:LONGWORD;
  53.                              dwEventFlags:LONGWORD;
  54.     END;
  55.  
  56. CONST
  57.       FROM_LEFT_1ST_BUTTON_PRESSED    =$0001;
  58.       RIGHTMOST_BUTTON_PRESSED        =$0002;
  59.       FROM_LEFT_2ND_BUTTON_PRESSED    =$0004;
  60.       FROM_LEFT_3RD_BUTTON_PRESSED    =$0008;
  61.       FROM_LEFT_4TH_BUTTON_PRESSED    =$0010;
  62.  
  63.       MOUSE_MOVED                     =$0001;
  64.       DOUBLE_CLICK                    =$0002;
  65.  
  66. TYPE
  67.     PWINDOW_BUFFER_SIZE_RECORD=^WINDOW_BUFFER_SIZE_RECORD;
  68.     WINDOW_BUFFER_SIZE_RECORD=RECORD
  69.                                     dwSize:COORD;
  70.     END;
  71.  
  72.     PMENU_EVENT_RECORD=^MENU_EVENT_RECORD;
  73.     MENU_EVENT_RECORD=RECORD
  74.                             dwCommandId:LONGWORD;
  75.     END;
  76.  
  77.     PFOCUS_EVENT_RECORD=^FOCUS_EVENT_RECORD;
  78.     FOCUS_EVENT_RECORD=RECORD
  79.                              bSetFocus:BOOL;
  80.     END;
  81.  
  82.     PINPUT_RECORD=^INPUT_RECORD;
  83.     INPUT_RECORD=RECORD
  84.                        EventType:WORD;
  85.                        Event:RECORD
  86.                          CASE Integer OF
  87.                            1:(KeyEvent:KEY_EVENT_RECORD);
  88.                            2:(MouseEvent:MOUSE_EVENT_RECORD);
  89.                            3:(WindowBufferSizeEvent:WINDOW_BUFFER_SIZE_RECORD);
  90.                            4:(MenuEvent:MENU_EVENT_RECORD);
  91.                            5:(FocusEvent:FOCUS_EVENT_RECORD);
  92.                        END;
  93.     END;
  94.  
  95. CONST
  96.       KEY_EVENT                =$0001;
  97.       MOUSE_EVENT              =$0002;
  98.       WINDOW_BUFFER_SIZE_EVENT =$0004;
  99.       MENU_EVENT               =$0008;
  100.       FOCUS_EVENT              =$0010;
  101.  
  102. TYPE
  103.     PCHAR_INFO=^CHAR_INFO;
  104.     CHAR_INFO=RECORD
  105.                     Char:RECORD
  106.                        CASE Integer OF
  107.                            1:(UniCodeChar:WORD);
  108.                            2:(AsciiChar:CHAR);
  109.                     END;
  110.                     Attributes:WORD;
  111.     END;
  112.  
  113. CONST
  114.       FOREGROUND_BLUE      =$0001;
  115.       FOREGROUND_GREEN     =$0002;
  116.       FOREGROUND_RED       =$0004;
  117.       FOREGROUND_INTENSITY =$0008;
  118.       BACKGROUND_BLUE      =$0010;
  119.       BACKGROUND_GREEN     =$0020;
  120.       BACKGROUND_RED       =$0040;
  121.       BACKGROUND_INTENSITY =$0080;
  122.  
  123.  
  124. TYPE
  125.     PCONSOLE_SCREEN_BUFFER_INFO=^CONSOLE_SCREEN_BUFFER_INFO;
  126.     CONSOLE_SCREEN_BUFFER_INFO=RECORD
  127.                                      dwSize:COORD;
  128.                                      dwCursorPosition:COORD;
  129.                                      wAttributes:WORD;
  130.                                      srWindow:SMALL_RECT;
  131.                                      dwMaximumWindowSize:COORD;
  132.     END;
  133.  
  134.     PCONSOLE_CURSOR_INFO=^CONSOLE_CURSOR_INFO;
  135.     CONSOLE_CURSOR_INFO=RECORD
  136.                               dwSize:LONGWORD;
  137.                               bVisible:BOOL;
  138.     END;
  139.  
  140. TYPE
  141.     PHANDLER_ROUTINE=FUNCTION(CtrlType:LONGWORD):BOOL;APIENTRY;
  142.  
  143. CONST
  144.       CTRL_C_EVENT        =0;
  145.       CTRL_BREAK_EVENT    =1;
  146.       CTRL_CLOSE_EVENT    =2;
  147.       CTRL_LOGOFF_EVENT   =5;
  148.       CTRL_SHUTDOWN_EVENT =6;
  149.  
  150.       ENABLE_PROCESSED_INPUT =$0001;
  151.       ENABLE_LINE_INPUT      =$0002;
  152.       ENABLE_ECHO_INPUT      =$0004;
  153.       ENABLE_WINDOW_INPUT    =$0008;
  154.       ENABLE_MOUSE_INPUT     =$0010;
  155.  
  156.       ENABLE_PROCESSED_OUTPUT    =$0001;
  157.       ENABLE_WRAP_AT_EOL_OUTPUT  =$0002;
  158.  
  159.  
  160. IMPORTS
  161.  
  162. FUNCTION PeekConsoleInput(hConsoleInput:HANDLE;VAR lpBuffer:INPUT_RECORD;
  163.                           nLength:LONGWORD;VAR lpNumberOfEventsRead:LONGWORD):BOOL;
  164.              APIENTRY;  'KERNEL32' name 'PeekConsoleInputA';
  165. FUNCTION ReadConsoleInput(hConsoleInput:HANDLE;VAR lpBuffer:INPUT_RECORD;
  166.                           nLength:LONGWORD;VAR lpNumberOfEventsRead:LONGWORD):BOOL;
  167.              APIENTRY;  'KERNEL32' name 'ReadConsoleInputA';
  168. FUNCTION WriteConsoleInput(hConsoleInput:HANDLE;CONST lpBuffer:INPUT_RECORD;
  169.                            nLength:LONGWORD;VAR lpNumberOfEventsWritten:LONGWORD):BOOL;
  170.              APIENTRY;  'KERNEL32' name 'WriteConsoleInputA';
  171. FUNCTION ReadConsoleOutput(hConsoleOutput:HANDLE;VAR lpBuffer:CHAR_INFO;
  172.                            dwBufferSize,dwBufferCoord:LONGWORD{COORD};
  173.                            VAR lpReadRegion:SMALL_RECT):BOOL;
  174.              APIENTRY;  'KERNEL32' name 'ReadConsoleOutputA';
  175. FUNCTION WriteConsoleOutput(hConsoleOutput:HANDLE;CONST lpBuffer:CHAR_INFO;
  176.                             dwBufferSize,dwBufferCoord:LONGWORD{COORD};
  177.                             VAR lpWriteRegion:SMALL_RECT):BOOL;
  178.              APIENTRY;  'KERNEL32' name 'WriteConsoleOutputA';
  179. FUNCTION ReadConsoleOutputCharacter(hConsoleOutput:HANDLE;VAR lpCharacter:CSTRING;
  180.                                     nLength:LONGWORD;dwReadCoord:LONGWORD{COORD};
  181.                                     VAR lpNumberOfCharsRead:LONGWORD):BOOL;
  182.              APIENTRY;  'KERNEL32' name 'ReadConsoleOutputCharacterA';
  183. FUNCTION ReadConsoleOutputAttribute(hConsoleOutput:HANDLE;VAR lpAttribute:WORD;
  184.                                     nLength:LONGWORD;dwReadCoord:LONGWORD{COORD};
  185.                                     VAR lpNumberOfAttrsRead:LONGWORD):BOOL;
  186.              APIENTRY;  'KERNEL32' name 'ReadConsoleOutputAttribute';
  187. FUNCTION WriteConsoleOutputCharacter(hConsoleOutput:HANDLE;CONST lpCharacter:CSTRING;
  188.                                      nLength:LONGWORD;dwWriteCoord:LONGWORD{COORD};
  189.                                      VAR lpNumberOfCharsWritten:LONGWORD):BOOL;
  190.              APIENTRY;  'KERNEL32' name 'WriteConsoleOutputCharacterA';
  191. FUNCTION WriteConsoleOutputAttribute(hConsoleOutput:HANDLE;VAR lpAttribute:WORD;
  192.                                      nLength:LONGWORD;dwWriteCoord:LONGWORD{COORD};
  193.                                      VAR lpNumberOfAttrsWritten:LONGWORD):BOOL;
  194.              APIENTRY;  'KERNEL32' name 'WriteConsoleOutputAttribute';
  195. FUNCTION FillConsoleOutputCharacter(hConsoleOutput:HANDLE;cCharacter:CHAR;
  196.                                     nLength:LONGWORD;dwWriteCoord:LONGWORD{COORD};
  197.                                     VAR lpNumberOfCharsWritten:LONGWORD):BOOL;
  198.              APIENTRY;  'KERNEL32' name 'FillConsoleOutputCharacterA';
  199. FUNCTION FillConsoleOutputAttribute(hConsoleOutput:HANDLE;wAttribute:WORD;
  200.                                     nLength:LONGWORD;dwWriteCoord:LONGWORD{COORD};
  201.                                     VAR lpNumberOfAttrsWritten:LONGWORD):BOOL;
  202.              APIENTRY;  'KERNEL32' name 'FillConsoleOutputAttribute';
  203. FUNCTION GetConsoleMode(hConsoleHandle:HANDLE;VAR lpMode:LONGWORD):BOOL;
  204.              APIENTRY;  'KERNEL32' name 'GetConsoleMode';
  205. FUNCTION GetNumberOfConsoleInputEvents(hConsoleInput:HANDLE;
  206.                                        VAR lpNumberOfEvents:LONGWORD):BOOL;
  207.              APIENTRY;  'KERNEL32' name 'GetNumberOfConsoleInputEvents';
  208. FUNCTION GetConsoleScreenBufferInfo(hConsoleOutput:HANDLE;
  209.                                     VAR lpConsoleScreenBufferInfo:CONSOLE_SCREEN_BUFFER_INFO):BOOL;
  210.              APIENTRY;  'KERNEL32' name 'GetConsoleScreenBufferInfo';
  211. FUNCTION GetLargestConsoleWindowSize(hConsoleOutput:HANDLE):LONGWORD{COORD};
  212.              APIENTRY;  'KERNEL32' name 'GetLargestConsoleWindowSize';
  213. FUNCTION GetConsoleCursorInfo(hConsoleOutput:HANDLE;
  214.                               VAR lpConsoleCursorInfo:CONSOLE_CURSOR_INFO):BOOL;
  215.              APIENTRY;  'KERNEL32' name 'GetConsoleCursorInfo';
  216. FUNCTION GetNumberOfConsoleMouseButtons(VAR lpNumberOfMouseButtons:LONGWORD):BOOL;
  217.              APIENTRY;  'KERNEL32' name 'GetNumberOfConsoleMouseButtons';
  218. FUNCTION SetConsoleMode(hConsoleHandle:HANDLE;dwMode:LONGWORD):BOOL;
  219.              APIENTRY;  'KERNEL32' name 'SetConsoleMode';
  220. FUNCTION SetConsoleActiveScreenBuffer(hConsoleOutput:HANDLE):BOOL;
  221.              APIENTRY;  'KERNEL32' name 'SetConsoleActiveScreenBuffer';
  222. FUNCTION FlushConsoleInputBuffer(hConsoleInput:HANDLE):BOOL;
  223.              APIENTRY;  'KERNEL32' name 'FlushConsoleInputBuffer';
  224. FUNCTION SetConsoleScreenBufferSize(hConsoleOutput:HANDLE;dwSize:LONGWORD{COORD}):BOOL;
  225.              APIENTRY;  'KERNEL32' name 'SetConsoleScreenBufferSize';
  226. FUNCTION SetConsoleCursorPosition(hConsoleOutput:HANDLE;dwCursorPosition:LONGWORD{COORD}):BOOL;
  227.              APIENTRY;  'KERNEL32' name 'SetConsoleCursorPosition';
  228. FUNCTION SetConsoleCursorInfo(hConsoleOutput:HANDLE;
  229.                               VAR lpConsoleCursorInfo:CONSOLE_CURSOR_INFO):BOOL;
  230.              APIENTRY;  'KERNEL32' name 'SetConsoleCursorInfo';
  231. FUNCTION ScrollConsoleScreenBuffer(hConsoleOutput:HANDLE;
  232.                                    VAR lpScrollRectangle:SMALL_RECT;
  233.                                    VAR lpClipRectangle:SMALL_RECT;
  234.                                    dwDestinationOrigin:LONGWORD{COORD};
  235.                                    VAR lpFill:CHAR_INFO):BOOL;
  236.              APIENTRY;  'KERNEL32' name 'ScrollConsoleScreenBufferA';
  237. FUNCTION SetConsoleWindowInfo(hConsoleOutput:HANDLE;bAbsolute:BOOL;
  238.                               VAR lpConsoleWindow:SMALL_RECT):BOOL;
  239.              APIENTRY;  'KERNEL32' name 'SetConsoleWindowInfo';
  240. FUNCTION SetConsoleTextAttribute(hConsoleOutput:HANDLE;wAttributes:WORD):BOOL;
  241.              APIENTRY;  'KERNEL32' name 'SetConsoleTextAttribute';
  242. FUNCTION SetConsoleCtrlHandler(HandlerRoutine:PHANDLER_ROUTINE;Add:BOOL):BOOL;
  243.              APIENTRY;  'KERNEL32' name 'SetConsoleCtrlHandler';
  244. FUNCTION GenerateConsoleCtrlEvent(dwCtrlEvent,dwProcessGroupId:LONGWORD):BOOL;
  245.              APIENTRY;  'KERNEL32' name 'GenerateConsoleCtrlEvent';
  246. FUNCTION AllocConsole:BOOL;
  247.              APIENTRY;  'KERNEL32' name 'AllocConsole';
  248. FUNCTION FreeConsole:BOOL;
  249.              APIENTRY;  'KERNEL32' name 'FreeConsole';
  250. FUNCTION GetConsoleTitle(VAR lpConsoleTitle:CSTRING;nSize:LONGWORD):LONGWORD;
  251.              APIENTRY;  'KERNEL32' name 'GetConsoleTitleA';
  252. FUNCTION SetConsoleTitle(CONST lpConsoleTitle:CSTRING):BOOL;
  253.              APIENTRY;  'KERNEL32' name 'SetConsoleTitleA';
  254. FUNCTION ReadConsole(hConsoleInput:HANDLE;VAR lpBuffer;nNumberOfCharsToRead:LONGWORD;
  255.                      VAR lpNumberOfCharsRead:LONGWORD;lpReserved:POINTER):BOOL;
  256.              APIENTRY;  'KERNEL32' name 'ReadConsoleA';
  257. FUNCTION WriteConsole(hConsoleOutput:HANDLE;CONST lpBuffer;nNumberOfCharsToWrite:LONGWORD;
  258.                       VAR lpNumberOfCharsWritten:LONGWORD;lpReserved:POINTER):BOOL;
  259.              APIENTRY;  'KERNEL32' name 'WriteConsoleA';
  260. {FUNCTION CreateConsoleScreenBuffer(dwDesiredAccess:LONGWORD;dwShareMode:LONGWORD;
  261.                                    CONST lpSecurityAttributes:SECURITY_ATTRIBUTES;
  262.                                    dwFlags:LONGWORD;VAR lpScreenBufferData):HANDLE;
  263.              APIENTRY;  'KERNEL32' name 'CreateConsoleScreenBuffer';}
  264. FUNCTION GetConsoleCP:LONGWORD;
  265.              APIENTRY;  'KERNEL32' name 'GetConsoleCP';
  266. FUNCTION SetConsoleCP(wCodePageID:LONGWORD):BOOL;
  267.              APIENTRY;  'KERNEL32' name 'SetConsoleCP';
  268. FUNCTION GetConsoleOutputCP:LONGWORD;
  269.              APIENTRY;  'KERNEL32' name 'GetConsoleOutputCP';
  270. FUNCTION SetConsoleOutputCP(wCodePageID:LONGWORD):BOOL;
  271.              APIENTRY;  'KERNEL32' name 'SetConsoleOutputCP';
  272. END;
  273.  
  274. IMPLEMENTATION
  275.  
  276. BEGIN
  277. END.