| | |
| | |
| | |
| | |
| |
|
| | #define _WIN32_WINNT 0x0501 |
| | #include "../src/shared/DebugClient.cc" |
| | #include <windows.h> |
| | #include <stdio.h> |
| |
|
| | const int SC_CONSOLE_MARK = 0xFFF2; |
| |
|
| | CALLBACK DWORD writerThread(void*) |
| | { |
| | CHAR_INFO xChar, fillChar; |
| | memset(&xChar, 0, sizeof(xChar)); |
| | xChar.Char.AsciiChar = 'X'; |
| | xChar.Attributes = 7; |
| | memset(&fillChar, 0, sizeof(fillChar)); |
| | fillChar.Char.AsciiChar = ' '; |
| | fillChar.Attributes = 7; |
| | COORD oneCoord = { 1, 1 }; |
| | COORD zeroCoord = { 0, 0 }; |
| |
|
| | while (true) { |
| | SMALL_RECT writeRegion = { 5, 5, 5, 5 }; |
| | WriteConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE), |
| | &xChar, oneCoord, |
| | zeroCoord, |
| | &writeRegion); |
| | Sleep(500); |
| | SMALL_RECT scrollRect = { 1, 1, 20, 20 }; |
| | COORD destCoord = { 0, 0 }; |
| | ScrollConsoleScreenBuffer(GetStdHandle(STD_OUTPUT_HANDLE), |
| | &scrollRect, |
| | NULL, |
| | destCoord, |
| | &fillChar); |
| | } |
| | } |
| |
|
| | int main() |
| | { |
| | CreateThread(NULL, 0, writerThread, NULL, 0, NULL); |
| | trace("marking console"); |
| | HWND hwnd = GetConsoleWindow(); |
| | PostMessage(hwnd, WM_SYSCOMMAND, SC_CONSOLE_MARK, 0); |
| |
|
| | Sleep(2000); |
| |
|
| | trace("reading output"); |
| | CHAR_INFO buf[1]; |
| | COORD bufSize = { 1, 1 }; |
| | COORD zeroCoord = { 0, 0 }; |
| | SMALL_RECT readRect = { 0, 0, 0, 0 }; |
| | ReadConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE), |
| | buf, |
| | bufSize, |
| | zeroCoord, |
| | &readRect); |
| | trace("done reading output"); |
| |
|
| | Sleep(2000); |
| |
|
| | PostMessage(hwnd, WM_CHAR, 27, 0x00010001); |
| |
|
| | Sleep(1100); |
| |
|
| | return 0; |
| | } |
| |
|