Module wincon
[hide private]
[frames] | no frames]

Source Code for Module wincon

 1  from ctypes import * 
 2  from ctypes.wintypes import * 
 3   
 4  CONSOLE_REAL_OUTPUT_HANDLE=-2 
 5   
6 -class COORD(Structure):
7 _fields_=[ 8 ('x',c_short), 9 ('y',c_short), 10 ]
11
12 -class CONSOLE_SCREEN_BUFFER_INFO(Structure):
13 _fields_=[ 14 ('dwSize',COORD), 15 ('dwCursorPosition',COORD), 16 ('wAttributes',WORD), 17 ('srWindow',SMALL_RECT), 18 ('dwMaximumWindowSize',COORD), 19 ]
20
21 -class CONSOLE_SELECTION_INFO(Structure):
22 _fields_=[ 23 ('dwFlags',DWORD), 24 ('dwSelectionAnchor',COORD), 25 ('srSelection',SMALL_RECT), 26 ]
27
28 -class CHAR_INFO(Structure):
29 _fields_ = [ 30 ('Char', c_wchar), #union of char and wchar_t isn't needed since we deal only with unicode 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
46 -def GetConsoleSelectionInfo():
47 info=CONSOLE_SELECTION_INFO() 48 if windll.kernel32.GetConsoleSelectionInfo(byref(info))==0: 49 raise WinError() 50 return info
51
52 -def ReadConsoleOutputCharacter(handle,length,x,y):
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
59 -def ReadConsoleOutput(handle, length, rect):
60 BufType=CHAR_INFO*length 61 buf=BufType() 62 #rect=SMALL_RECT(x, y, x+length-1, y) 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
67 -def GetConsoleScreenBufferInfo(handle):
68 info=CONSOLE_SCREEN_BUFFER_INFO() 69 if windll.kernel32.GetConsoleScreenBufferInfo(handle,byref(info))==0: 70 raise WinError() 71 return info
72
73 -def FreeConsole():
74 if windll.kernel32.FreeConsole()==0: 75 raise WinError()
76
77 -def AttachConsole(processID):
78 if windll.kernel32.AttachConsole(processID)==0: 79 raise WinError()
80
81 -def GetConsoleWindow():
82 return windll.kernel32.GetConsoleWindow()
83
84 -def GetConsoleProcessList(maxProcessCount):
85 processList=(c_int*maxProcessCount)() 86 num=windll.kernel32.GetConsoleProcessList(processList,maxProcessCount) 87 return processList[0:num]
88
89 -def SetConsoleCtrlHandler(handler,add):
90 if windll.kernel32.SetConsoleCtrlHandler(handler,add)==0: 91 raise WinError()
92