2 * Win32 kernel functions
4 * Copyright 1995 Martin von Loewis and Cameron Heide
17 static CONSOLE_SCREEN_BUFFER_INFO dummyinfo
=
26 /***********************************************************************
27 * SetConsoleCtrlHandler (KERNEL32.459)
29 BOOL32 WINAPI
SetConsoleCtrlHandler(HANDLER_ROUTINE
* func
, BOOL32 a
)
34 /***********************************************************************
35 * GetConsoleScreenBufferInfo (KERNEL32.190)
37 BOOL32 WINAPI
GetConsoleScreenBufferInfo( HANDLE32 hConsoleOutput
,
38 LPCONSOLE_SCREEN_BUFFER_INFO csbi
)
42 csbi
->dwCursorPosition
.x
= 0;
43 csbi
->dwCursorPosition
.y
= 0;
44 csbi
->wAttributes
= 0;
45 csbi
->srWindow
.Left
= 0;
46 csbi
->srWindow
.Right
= 79;
47 csbi
->srWindow
.Top
= 0;
48 csbi
->srWindow
.Bottom
= 23;
49 csbi
->dwMaximumWindowSize
.x
= 80;
50 csbi
->dwMaximumWindowSize
.y
= 24;
54 /***********************************************************************
55 * GetLargestConsoleWindowSize (KERNEL32.226)
57 DWORD WINAPI
GetLargestConsoleWindowSize( HANDLE32 hConsoleOutput
)
59 return (DWORD
)MAKELONG(dummyinfo
.dwMaximumWindowSize
.x
,dummyinfo
.dwMaximumWindowSize
.y
);
62 /***********************************************************************
63 * GetConsoleCP (KERNEL32.226)
65 UINT32 WINAPI
GetConsoleCP(VOID
)
70 /***********************************************************************
71 * GetConsoleOutputCP (KERNEL32.189)
73 UINT32 WINAPI
GetConsoleOutputCP(VOID
)
75 return GetConsoleCP();
78 /***********************************************************************
79 * GetConsoleMode (KERNEL32.188)
81 BOOL32 WINAPI
GetConsoleMode(HANDLE32 hcon
,LPDWORD mode
)
83 *mode
= ENABLE_PROCESSED_INPUT
|
91 /***********************************************************************
92 * SetConsoleMode (KERNEL32.188)
94 BOOL32 WINAPI
SetConsoleMode(HANDLE32 hcon
,DWORD mode
)
96 fprintf(stdnimp
,"SetConsoleMode(%08x,%08lx)\n",hcon
,mode
);
100 /***********************************************************************
101 * GetConsoleTitleA (KERNEL32.191)
103 DWORD WINAPI
GetConsoleTitle32A(LPSTR title
,DWORD size
)
105 lstrcpyn32A(title
,"Console",size
);
106 return strlen("Console");
109 /***********************************************************************
110 * GetConsoleTitleW (KERNEL32.192)
112 DWORD WINAPI
GetConsoleTitle32W(LPWSTR title
,DWORD size
)
114 lstrcpynAtoW(title
,"Console",size
);
115 return strlen("Console");
118 /***********************************************************************
119 * WriteConsoleA (KERNEL32.567)
121 BOOL32 WINAPI
WriteConsole32A( HANDLE32 hConsoleOutput
,
123 DWORD nNumberOfCharsToWrite
,
124 LPDWORD lpNumberOfCharsWritten
,
127 LPSTR buf
= (LPSTR
)xmalloc(nNumberOfCharsToWrite
+1);
129 lstrcpyn32A(buf
,lpBuffer
,nNumberOfCharsToWrite
);
130 buf
[nNumberOfCharsToWrite
]=0;
131 fprintf(stderr
,"%s",buf
);
133 *lpNumberOfCharsWritten
=nNumberOfCharsToWrite
;
137 /***********************************************************************
138 * WriteConsoleW (KERNEL32.577)
140 BOOL32 WINAPI
WriteConsole32W( HANDLE32 hConsoleOutput
,
142 DWORD nNumberOfCharsToWrite
,
143 LPDWORD lpNumberOfCharsWritten
,
146 LPSTR buf
= (LPSTR
)xmalloc(2*nNumberOfCharsToWrite
+1);
148 lstrcpynWtoA(buf
,lpBuffer
,nNumberOfCharsToWrite
);
149 buf
[nNumberOfCharsToWrite
]=0;
150 fprintf(stderr
,"%s",buf
);
152 *lpNumberOfCharsWritten
=nNumberOfCharsToWrite
;
156 /***********************************************************************
157 * ReadConsoleA (KERNEL32.419)
159 BOOL32 WINAPI
ReadConsole32A( HANDLE32 hConsoleInput
,
161 DWORD nNumberOfCharsToRead
,
162 LPDWORD lpNumberOfCharsRead
,
165 fgets(lpBuffer
,nNumberOfCharsToRead
,stdin
);
166 *lpNumberOfCharsRead
= strlen(lpBuffer
);
170 /***********************************************************************
171 * ReadConsoleW (KERNEL32.427)
173 BOOL32 WINAPI
ReadConsole32W( HANDLE32 hConsoleInput
,
175 DWORD nNumberOfCharsToRead
,
176 LPDWORD lpNumberOfCharsRead
,
179 LPSTR buf
= (LPSTR
)xmalloc(nNumberOfCharsToRead
);
181 fgets(buf
,nNumberOfCharsToRead
,stdin
);
182 lstrcpynAtoW(lpBuffer
,buf
,nNumberOfCharsToRead
);
183 *lpNumberOfCharsRead
= strlen(buf
);
187 /***********************************************************************
188 * SetConsoleTitle32A (KERNEL32.476)
190 BOOL32 WINAPI
SetConsoleTitle32A(LPCSTR title
)
192 fprintf(stderr
,"SetConsoleTitle(%s)\n",title
);
196 /***********************************************************************
197 * SetConsoleTitle32W (KERNEL32.477)
199 BOOL32 WINAPI
SetConsoleTitle32W( LPCWSTR title
)
201 LPSTR titleA
= HEAP_strdupWtoA( GetProcessHeap(), 0, title
);
202 fprintf(stderr
,"SetConsoleTitle(%s)\n",titleA
);
203 HeapFree( GetProcessHeap(), 0, titleA
);
207 /***********************************************************************
208 * FlushConsoleInputBuffer (KERNEL32.132)
210 BOOL32 WINAPI
FlushConsoleInputBuffer(HANDLE32 hConsoleInput
){
211 fprintf(stderr
,"FlushConsoleInputBuffer(%d)\n",hConsoleInput
);
215 BOOL32 WINAPI
SetConsoleCursorPosition(HANDLE32 hcons
,COORD c
)
217 /* x are columns, y rows */
219 fprintf(stderr
,"\r");
221 fprintf(stderr
,"\e[%dC",c
.x
);
224 /* handle rest of the cases */
228 /***********************************************************************
229 * GetNumberOfConsoleInputEvents (KERNEL32.246)
231 BOOL32 WINAPI
GetNumberOfConsoleInputEvents(HANDLE32 hcon
,LPDWORD nrofevents
)