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 BOOL
SetConsoleCtrlHandler(HANDLER_ROUTINE
* func
, BOOL a
)
34 /***********************************************************************
35 * GetConsoleScreenBufferInfo (KERNEL32.190)
37 BOOL32
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
GetLargestConsoleWindowSize( HANDLE32 hConsoleOutput
)
59 return (DWORD
)MAKELONG(dummyinfo
.dwMaximumWindowSize
.x
,dummyinfo
.dwMaximumWindowSize
.y
);
62 /***********************************************************************
63 * GetConsoleCP (KERNEL32.226)
65 UINT32
GetConsoleCP(VOID
)
70 /***********************************************************************
71 * GetConsoleOutputCP (KERNEL32.189)
73 UINT32
GetConsoleOutputCP(VOID
)
75 return GetConsoleCP();
78 /***********************************************************************
79 * GetConsoleMode (KERNEL32.188)
81 BOOL32
GetConsoleMode(HANDLE32 hcon
,LPDWORD mode
)
83 *mode
= ENABLE_PROCESSED_INPUT
|
91 /***********************************************************************
92 * SetConsoleMode (KERNEL32.188)
94 BOOL32
SetConsoleMode(HANDLE32 hcon
,DWORD mode
)
96 fprintf(stdnimp
,"SetConsoleMode(%08x,%08lx)\n",hcon
,mode
);
100 /***********************************************************************
101 * GetConsoleTitleA (KERNEL32.191)
103 DWORD
GetConsoleTitle32A(LPSTR title
,DWORD size
)
105 lstrcpyn32A(title
,"Console",size
);
106 return strlen("Console");
109 /***********************************************************************
110 * GetConsoleTitleW (KERNEL32.192)
112 DWORD
GetConsoleTitle32W(LPWSTR title
,DWORD size
)
114 lstrcpynAtoW(title
,"Console",size
);
115 return strlen("Console");
118 /***********************************************************************
119 * WriteConsoleA (KERNEL32.567)
121 BOOL32
WriteConsole32A(
122 HANDLE32 hConsoleOutput
,
124 DWORD nNumberOfCharsToWrite
,
125 LPDWORD lpNumberOfCharsWritten
,
128 LPSTR buf
= (LPSTR
)xmalloc(nNumberOfCharsToWrite
+1);
130 lstrcpyn32A(buf
,lpBuffer
,nNumberOfCharsToWrite
);
131 buf
[nNumberOfCharsToWrite
]=0;
132 fprintf(stderr
,"%s",buf
);
134 *lpNumberOfCharsWritten
=nNumberOfCharsToWrite
;
138 /***********************************************************************
139 * WriteConsoleW (KERNEL32.577)
141 BOOL32
WriteConsole32W(
142 HANDLE32 hConsoleOutput
,
144 DWORD nNumberOfCharsToWrite
,
145 LPDWORD lpNumberOfCharsWritten
,
148 LPSTR buf
= (LPSTR
)xmalloc(2*nNumberOfCharsToWrite
+1);
150 lstrcpynWtoA(buf
,lpBuffer
,nNumberOfCharsToWrite
);
151 buf
[nNumberOfCharsToWrite
]=0;
152 fprintf(stderr
,"%s",buf
);
154 *lpNumberOfCharsWritten
=nNumberOfCharsToWrite
;
158 /***********************************************************************
159 * ReadConsoleA (KERNEL32.419)
161 BOOL32
ReadConsole32A(
162 HANDLE32 hConsoleInput
,
164 DWORD nNumberOfCharsToRead
,
165 LPDWORD lpNumberOfCharsRead
,
168 fgets(lpBuffer
,nNumberOfCharsToRead
,stdin
);
169 *lpNumberOfCharsRead
= strlen(lpBuffer
);
173 /***********************************************************************
174 * ReadConsoleW (KERNEL32.427)
176 BOOL32
ReadConsole32W(
177 HANDLE32 hConsoleInput
,
179 DWORD nNumberOfCharsToRead
,
180 LPDWORD lpNumberOfCharsRead
,
183 LPSTR buf
= (LPSTR
)xmalloc(nNumberOfCharsToRead
);
185 fgets(buf
,nNumberOfCharsToRead
,stdin
);
186 lstrcpynAtoW(lpBuffer
,buf
,nNumberOfCharsToRead
);
187 *lpNumberOfCharsRead
= strlen(buf
);
191 /***********************************************************************
192 * SetConsoleTitle32A (KERNEL32.476)
194 BOOL32
SetConsoleTitle32A(LPCSTR title
)
196 fprintf(stderr
,"SetConsoleTitle(%s)\n",title
);
200 /***********************************************************************
201 * SetConsoleTitle32W (KERNEL32.477)
203 BOOL32
SetConsoleTitle32W( LPCWSTR title
)
205 LPSTR titleA
= HEAP_strdupWtoA( GetProcessHeap(), 0, title
);
206 fprintf(stderr
,"SetConsoleTitle(%s)\n",titleA
);
207 HeapFree( GetProcessHeap(), 0, titleA
);