1 from ctypes import *
2 from ctypes.wintypes import *
3
4 CONSOLE_REAL_OUTPUT_HANDLE=-2
5
7 _fields_=[
8 ('x',c_short),
9 ('y',c_short),
10 ]
11
13 _fields_=[
14 ('dwSize',COORD),
15 ('dwCursorPosition',COORD),
16 ('wAttributes',WORD),
17 ('srWindow',SMALL_RECT),
18 ('dwMaximumWindowSize',COORD),
19 ]
20
22 _fields_=[
23 ('dwFlags',DWORD),
24 ('dwSelectionAnchor',COORD),
25 ('srSelection',SMALL_RECT),
26 ]
27
29 _fields_ = [
30 ('Char', c_wchar),
31 ('Attributes', WORD)
32 ]
33
34 PHANDLER_ROUTINE=WINFUNCTYPE(BOOL,DWORD)
35
36 CTRL_C_EVENT=0
37 CTRL_BREAK_EVENT=1
38 CTRL_CLOSE_EVENT=2
39
40 CONSOLE_NO_SELECTION=0X0
41 CONSOLE_SELECTION_IN_PROGRESS=0X1
42 CONSOLE_SELECTION_NOT_EMPTY=0x2
43 CONSOLE_MOUSE_SELECTION=0X4
44 CONSOLE_MOUSE_DOWN=0x8
45
51
53 buf=create_unicode_buffer(length)
54 numCharsRead=c_int()
55 if windll.kernel32.ReadConsoleOutputCharacterW(handle,buf,length,COORD(x,y),byref(numCharsRead))==0:
56 raise WinError()
57 return buf.value
58
60 BufType=CHAR_INFO*length
61 buf=BufType()
62
63 if windll.kernel32.ReadConsoleOutputW(handle, buf, COORD(rect.Right-rect.Left+1, rect.Bottom-rect.Top+1), COORD(0,0), byref(rect))==0:
64 raise WinError()
65 return buf
66
72
76
80
83
88
92