我使用
WINAPI: ReadConsoleOutputCharacterA KERNEL32.DLL
这似乎是可行的,但如何处理输入和输出参数?尤其是如何
控制台屏幕缓冲区句柄中的hConsoleOutput。句柄必须具有GENERIC_READ访问权限。有关更多信息,请参见控制台缓冲区安全性和访问权限。
发布于 2015-06-01 23:58:35
hConsoleOutput只有一个合适的句柄。ReadConsoleOutputCharacter的一些使用示例可以在devel目录中找到(贡献)。
此API使用示例:
\ Global variables in dictionary space just for learning,
\ -- don't use such approach, especially in multithreading.
VARIABLE lpNumberOfCharsRead
CREATE lpCharacter 5 CHARS ALLOT \ buffer for 5 chars
: XYC@ ( x y -- c )
16 LSHIFT OR >R \ COORD
0 lpCharacter C!
lpNumberOfCharsRead \ _Out_ LPDWORD lpNumberOfCharsRead
R> \ dwReadCoord
1 \ nLength \ to read
lpCharacter \ _Out_ LPTSTR lpCharacter
H-STDOUT
ReadConsoleOutputCharacterA ERR THROW
lpCharacter C@
;
\ test
0 0 XYC@ EMIT有用的包装:
: READOUT-CONSOLE-XY ( a-buf u x y -- a-buf u2 ior )
2SWAP 2>R 16 LSHIFT OR >R
0 SP@ R> ( 0 addr-cnt coord )
R> R@ H-STDOUT ( 0 addr-cnt coord u a-buf handle )
ReadConsoleOutputCharacterA ERR ( u2 ior )
R> -ROT
;
\ test
HERE 50 0 0 READOUT-CONSOLE-XY THROW TYPEhttps://stackoverflow.com/questions/30580334
复制相似问题