Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; #INDEX# =======================================================================================================================
- ; Title .........: Console
- ; AutoIt Version : 3.3.8.1+
- ; Language ......: English
- ; Description ...: Functions that assist with native consoles.
- ; Author(s) .....: Janus Thorborg (Shaggi)
- ; ===============================================================================================================================
- #include-once
- #include <WinApiError.au3>
- #OnAutoItStartRegister "__Console__StartUp"
- ; #CURRENT# =====================================================================================================================
- ;Cout
- ;Cin
- ;Cerr
- ;Getch
- ;system
- ;RegisterConsoleEvent
- ; ===============================================================================================================================
- ; #INTERNAL_USE_ONLY# ===========================================================================================================
- ;__Console__CreateConsole
- ;__Console__KillConsole
- ;__Console__StartUp
- ;__Console__ShutDown
- ;__Console__GetStdHandle
- ;__Console__HandlerRoutine
- ; ===============================================================================================================================
- ; #VARIABLES# ===================================================================================================================
- ; Don't touch these.
- Global $__Dll_Kernel32, $__Amount__Startup_Console
- Global $__Console__hCtrlHandler = 0
- Global $_Included_Console = True
- ; $_bConsole__PrintToStdStreams will cause the output functions to write to autoit's own streams, too.
- Global $_bConsole__PrintToStdStreams = False
- ; ===============================================================================================================================
- ; #ENUMS# =======================================================================================================================
- Global Enum $sigCtrlC = 0, $sigCtrlBreak, $sigCtrlClose, $sigCtrlLogOff = 5, $sigCtrlShutDown = 6
- Global Enum $_eWrite = 0, $_eRead, $_eSetCT, $_eGetCM, $_eSetCM
- Global Enum $_cOut, $_cIn, $_cErr
- ; ===============================================================================================================================
- ; #TABLES# ======================================================================================================================
- ; These tables, on startup, get initialized to a table with function pointers and handles.
- Global Const $_sfTable[5] = ["WriteConsoleW","ReadConsoleW", "SetConsoleTextAttribute", "GetConsoleMode", "SetConsoleMode"]
- Global $_pfTable[5]
- Global $__Console__Handlers[2][2]
- Global $__CStreams[3]
- ; ===============================================================================================================================
- ; #CONSTANTS# ===================================================================================================================
- ; Thanks to Matt Diesel (Mat) for writing these down.
- ; Attributes flags (colors)
- ; WinCon.h (153 - 160)
- Global Const $FOREGROUND_BLUE = 0x0001 ; text color contains blue.
- Global Const $FOREGROUND_GREEN = 0x0002 ; text color contains green.
- Global Const $FOREGROUND_RED = 0x0004 ; text color contains red.
- Global Const $FOREGROUND_INTENSITY = 0x0008 ; text color is intensified.
- Global Const $BACKGROUND_BLUE = 0x0010 ; background color contains blue.
- Global Const $BACKGROUND_GREEN = 0x0020 ; background color contains green.
- Global Const $BACKGROUND_RED = 0x0040 ; background color contains red.
- Global Const $BACKGROUND_INTENSITY = 0x0080 ; background color is intensified.
- ; Attributes flags
- ; WinCon.h (161 - 169)
- Global Const $COMMON_LVB_LEADING_BYTE = 0x0100 ; Leading Byte of DBCS
- Global Const $COMMON_LVB_TRAILING_BYTE = 0x0200 ; Trailing Byte of DBCS
- Global Const $COMMON_LVB_GRID_HORIZONTAL = 0x0400 ; DBCS: Grid attribute: top horizontal.
- Global Const $COMMON_LVB_GRID_LVERTICAL = 0x0800 ; DBCS: Grid attribute: left vertical.
- Global Const $COMMON_LVB_GRID_RVERTICAL = 0x1000 ; DBCS: Grid attribute: right vertical.
- Global Const $COMMON_LVB_REVERSE_VIDEO = 0x4000 ; DBCS: Reverse fore/back ground attribute.
- Global Const $COMMON_LVB_UNDERSCORE = 0x8000 ; DBCS: Underscore.
- Global Const $COMMON_LVB_SBCSDBCS = 0x0300 ; SBCS or DBCS flag.
- ; ===============================================================================================================================
- ; #STRUCTURES# ==================================================================================================================
- ; $tag_CONSOLE_SCREEN_BUFFER_INFO
- ; $tagCHAR_INFO_W
- ; $tagPSMALL_RECT
- ; ===============================================================================================================================
- ; These are merely provided for convinience, they aren't used (yet)
- Global Const $tag_CONSOLE_SCREEN_BUFFER_INFO = "short dwSizeX; short dwSizeY; short dwCursorPositionX;short dwCursorPositionY; word wAttributes;" & _
- "SHORT srWindowLeft; SHORT srWindowRight; SHORT srWindowLeft; SHORT srWindowBottom;" & _
- "short dwMaximumWindowSizeX; short dwMaximumWindowSizeY"
- Global Const $tagCHAR_INFO_W = "WCHAR UnicodeChar; WORD Attributes"
- Global Const $tagPSMALL_RECT = "SHORT Left; SHORT Right; SHORT Left; SHORT Bottom;"
- ; ===============================================================================================================================
- ; #FUNCTION# ====================================================================================================================
- ; Name...........: system
- ; Description ...: Invokes the command processor to execute a command. Once the command execution has terminated, the processor
- ; gives the control back to the program, returning an int value, whose interpretation is system-dependent.
- ; Syntax.........: system($szCommand)
- ; Parameters ....: $szString - A string containing a system command to be executed.
- ; Return values .: Success - Depends on command given.
- ; Failure - Depends on command given.
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 06/08/2012
- ; Remarks .......: Common use is system("pause") or system("cls").
- ; Related .......: RunWait
- ; Link ..........: http://www.cplusplus.com/reference/clibrary/cstdlib/system/
- ; Example .......: No
- ; ===============================================================================================================================
- Func system($szCommand)
- If $szCommand Then
- If Not $__Amount__Startup_Console Then
- __Console__CreateConsole()
- $__Amount__Startup_Console += 1
- EndIf
- Return RunWait(@ComSpec & " /c " & $szCommand, @ScriptDir, Default, 0x10)
- EndIf
- Return False
- EndFunc ;==>system
- ; #FUNCTION# ====================================================================================================================
- ; Name...........: Cout
- ; Description ...: Writes a UNICODE string to the Standard Output Stream, with optional attributes. Similar to std::cout in C++ and
- ; ConsoleWrite().
- ; Syntax.........: Cout($szString [, $iAttr = -1])
- ; Parameters ....: $szString - A string to write to the Standard Output Stream.
- ; $iAttr - If supplied, the function sets the current text attributes to this before writing,
- ; and resets it back to normal after writing. Attributes (Thanks to Matt Diesel (Mat)):
- ; |FOREGROUND_BLUE - Text color contains blue.
- ; |FOREGROUND_GREEN - Text color contains green.
- ; |FOREGROUND_RED - Text color contains red.
- ; |FOREGROUND_INTENSITY - Text color is intensified.
- ; |BACKGROUND_BLUE - Background color contains blue.
- ; |BACKGROUND_GREEN - Background color contains green.
- ; |BACKGROUND_RED - Background color contains red.
- ; |BACKGROUND_INTENSITY - Background color is intensified.
- ; BitOR these together, if more than one attribute is used.
- ; Return values .: Success - True
- ; Failure - False - @error is set and DllCall() @error is kept in @extended.
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 09/07/2011
- ; Remarks .......:
- ; Related .......: Cerr
- ; Link ..........: http://msdn.microsoft.com/en-us/library/ms687401(VS.85).aspx
- ; Example .......: No
- ; ===============================================================================================================================
- Func Cout($szString, $iAttr = -1)
- If Not $__Amount__Startup_Console Then
- __Console__CreateConsole()
- $__Amount__Startup_Console += 1
- EndIf
- Local $lpBuffer = DllStructCreate("wchar[" & StringLen($szString) + 1 & "]")
- DllStructSetData($lpBuffer, 1, $szString)
- Local $lpNumberOfCharsWritten = 0
- If $_bConsole__PrintToStdStreams Then ConsoleWrite($szString)
- Switch $iAttr
- Case -1
- Local $aResult = DllCallAddress("BOOL", $_pfTable[$_eWrite], _
- "handle", $__CStreams[$_cOut], _
- "ptr", DllStructGetPtr($lpBuffer), _
- "dword", StringLen($szString), _
- "dword*", $lpNumberOfCharsWritten, _
- "ptr", 0)
- Return $aResult[0]
- Case Else
- Local $aResult1 = DllCallAddress("BOOL", $_pfTable[$_eSetCT], _
- "handle", $__CStreams[$_cOut], "word", $iAttr)
- Local $aResult2 = DllCallAddress("BOOL", $_pfTable[$_eWrite], _
- "handle", $__CStreams[$_cOut], _
- "ptr", DllStructGetPtr($lpBuffer), _
- "dword", StringLen($szString), _
- "dword*", $lpNumberOfCharsWritten, _
- "ptr", 0)
- Local $aResult3 = DllCallAddress("BOOL", $_pfTable[$_eSetCT], _
- "handle", $__CStreams[$_cOut], "word", 0x7)
- Switch $aResult2[0]
- Case 0
- Return SetError(1,@error,False)
- Case Else
- Return (($aResult1[0] <> 0) AND ($aResult3[0] <> 0))
- EndSwitch
- EndSwitch
- Return False
- EndFunc ;==>Cout
- ; #FUNCTION# ====================================================================================================================
- ; Name...........: Cerr
- ; Description ...: Writes a UNICODE string to the Standard Error Stream, with optional attributes. Similar to std::cerr in C++ and
- ; ConsoleWriteError().
- ; Syntax.........: Cerr($szString [, $iAttr = -1])
- ; Parameters ....: $szString - A string to write to the Standard Error Stream.
- ; $iAttr - If supplied, the function sets the current text attributes to this before writing,
- ; and resets it back to normal after writing. Attributes (Thanks to Matt Diesel (Mat)):
- ; |FOREGROUND_BLUE - Text color contains blue.
- ; |FOREGROUND_GREEN - Text color contains green.
- ; |FOREGROUND_RED - Text color contains red.
- ; |FOREGROUND_INTENSITY - Text color is intensified.
- ; |BACKGROUND_BLUE - Background color contains blue.
- ; |BACKGROUND_GREEN - Background color contains green.
- ; |BACKGROUND_RED - Background color contains red.
- ; |BACKGROUND_INTENSITY - Background color is intensified.
- ; BitOR these together, if more than one attribute is used.
- ; Return values .: Success - True
- ; Failure - False - @error is set - see @extended for DllCall() @error.
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 09/07/2011
- ; Remarks .......:
- ; Related .......: Cout
- ; Link ..........: http://msdn.microsoft.com/en-us/library/ms687401(VS.85).aspx
- ; Example .......: No
- ; ===============================================================================================================================
- Func Cerr($szString, $iAttr = -1)
- If Not $__Amount__Startup_Console Then
- __Console__CreateConsole()
- $__Amount__Startup_Console += 1
- EndIf
- Local $lpBuffer = DllStructCreate("wchar[" & StringLen($szString) + 1 & "]")
- DllStructSetData($lpBuffer, 1, $szString)
- Local $lpNumberOfCharsWritten = 0
- If $_bConsole__PrintToStdStreams Then ConsoleWrite($szString)
- Switch $iAttr
- Case -1
- Local $aResult = DllCallAddress("BOOL", $_pfTable[$_eWrite], _
- "handle", $__CStreams[$_cErr], _
- "ptr", DllStructGetPtr($lpBuffer), _
- "dword", StringLen($szString), _
- "dword*", $lpNumberOfCharsWritten, _
- "ptr", 0)
- Return $aResult[0]
- Case Else
- Local $aResult1 = DllCallAddress("BOOL", $_pfTable[$_eSetCT], _
- "handle", $__CStreams[$_cErr], "word", $iAttr)
- Local $aResult2 = DllCallAddress("BOOL", $_pfTable[$_eWrite], _
- "handle", $__CStreams[$_cErr], _
- "ptr", DllStructGetPtr($lpBuffer), _
- "dword", StringLen($szString), _
- "dword*", $lpNumberOfCharsWritten, _
- "ptr", 0)
- Local $aResult3 = DllCallAddress("BOOL", $_pfTable[$_eSetCT], _
- "handle", $__CStreams[$_cErr], "word", 0x7)
- Switch $aResult2[0]
- Case 0
- Return SetError(1,@error,False)
- Case Else
- Return (($aResult1[0] <> 0) AND ($aResult3[0] <> 0))
- EndSwitch
- EndSwitch
- Return False
- EndFunc ;==>Cerr
- ; #FUNCTION# ====================================================================================================================
- ; Name...........: Cin
- ; Description ...: Retrieves a UNICODE string from the Standard Input Stream, with optional size. Similar to std::cin in C++.
- ; Syntax.........: Cin(ByRef $szString [, $iSize = 128])
- ; Parameters ....: $szString - A string the content is copied to.
- ; $iSize - If supplied, the function sets the maximal size of the characters read to this.
- ; Return values .: Success - Actual amount of characters read.
- ; Failure - False - @error is set and @extended holds DllCall() @error
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 09/07/2011
- ; Remarks .......: Returns once something has been typed into console AND enter is pressed.
- ; Related .......: Getch
- ; Link ..........: http://msdn.microsoft.com/en-us/library/ms684958(VS.85).aspx
- ; Example .......: No
- ; ===============================================================================================================================
- Func Cin(ByRef $szString, $iSize = 128)
- If Not $__Amount__Startup_Console Then
- __Console__CreateConsole()
- $__Amount__Startup_Console += 1
- EndIf
- Local $lpBuffer = DllStructCreate("wchar[" & $iSize + 3 & "]")
- Local $lpNumberOfCharsRead = 0
- Local $aResult = DllCallAddress("BOOL", $_pfTable[$_eRead], _
- "handle", $__CStreams[$_cIn], _
- "ptr", DllStructGetPtr($lpBuffer), _
- "dword", DllStructGetSize($lpBuffer), _
- "dword*", $lpNumberOfCharsRead, _
- "ptr", 0)
- Select
- Case Not $aResult[0]
- Return SetError(1,@error,False)
- Case Else
- $szString = StringTrimRight(DllStructGetData($lpBuffer, 1),2)
- Return $aResult[4]
- EndSelect
- EndFunc ;==>Cin
- ; #FUNCTION# ====================================================================================================================
- ; Name...........: Getch
- ; Description ...: Retrieves 1 unicode character from the input buffer. Blocks.
- ; Syntax.........: Getch()
- ; Parameters ....:
- ; Return values .: Success - A single wide character.
- ; Failure - False and @error is set - see @extended for DllCall() @error.
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 09/07/2011
- ; Remarks .......: Returns once something has been typed into console. Doesn't work with Esc, arrows or F1-12. Don't use it in
- ; callback events, it will halt the console!
- ; Related .......: Cin
- ; Link ..........:
- ; Example .......: No
- ; ===============================================================================================================================
- Func Getch()
- If Not $__Amount__Startup_Console Then
- __Console__CreateConsole()
- $__Amount__Startup_Console += 1
- EndIf
- Local $mode, $Char, $Count, $lpNumberOfCharsRead
- Local $Ret = DllCallAddress("BOOL", $_pfTable[$_eGetCM], _
- "handle",$__CStreams[$_cIn],"dword*",$mode)
- If @Error OR NOT $Ret[0] Then Return SetError(1,@error,False)
- $Mode = $Ret[2]
- $Ret = DllCallAddress("BOOL", $_pfTable[$_eSetCM], _
- "handle",$__CStreams[$_cIn],"dword",0)
- If @Error OR NOT $Ret[0] Then Return SetError(2,@error,False)
- Local $aResult = DllCallAddress("BOOL", $_pfTable[$_eRead], _
- "handle", $__CStreams[$_cIn], _
- "int*", $Char, _
- "dword", 2, _
- "int*", $lpNumberOfCharsRead, _
- "ptr", 0)
- If @Error OR NOT $aResult[0] Then Return SetError(3,@error,False)
- Local $Return = ChrW($aResult[2])
- $Ret = DllCallAddress("BOOL", $_pfTable[$_eSetCM], _
- "handle",$__CStreams[$_cIn],"dword",$Mode)
- If @Error OR NOT $Ret[0] Then return SetError(4,@error,False)
- Return $Return
- EndFunc ;==>Getch
- ; #FUNCTION# ====================================================================================================================
- ; Name...........: RegisterConsoleEvent
- ; Description ...: Registers a function to be called when a specified signal is emitted from the system.
- ; Syntax.........: RegisterConsoleEvent($fFunc [, $dwSig = $sigCtrlClose [, $bRegisterExit = True]])
- ; Parameters ....: $fFunc - Either a string with the function name, or a function (only applies to beta).
- ; $dwSig - The signal the function is associated with. Can be one of the following values:
- ; |$sigCtrlC - A CTRL+C signal was received.
- ; |$sigCtrlBreak - A CTRL+BREAK signal was received.
- ; |$sigCtrlClose - A signal that the system sends to all processes attached to a console
- ; when the user closes the console (either by clicking Close on the console
- ; window's window menu, or by clicking the End Task button command
- ; from Task Manager).
- ; |$sigCtrlLogOff - A signal that the system sends to all console processes when a user
- ; is logging off. This signal does not indicate which user is logging off,
- ; so no assumptions can be made.
- ; Note that this signal is received only by services. Interactive
- ; applications are terminated at logoff, so they are not present
- ; when the system sends this signal.
- ; |$sigCtrlShutDown - A signal that the system sends when the system is shutting down.
- ; Interactive applications are not present by the time the system sends
- ; this signal, therefore it can be received only be services in this
- ; situation. Services also have their own notification mechanism
- ; for shutdown events.
- ; $bRegisterExit - If true, registers the function to be called OnAutoItExit also.
- ; Return values .: Success - True
- ; Failure - False and @error is set - see @extended for DllCall() @error.
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 18/06/2012
- ; Remarks .......: Note that if only a function is passed, it is considered to be called on the close event, and the same function
- ; is also registrered for normal AutoIt exit, so it gets called no matter what. Currently, there is no way to
- ; terminate AutoIt normally (ie. call normal OnExit handlers) on close event, so this must be used in case of
- ; something vital that has to be cleaned up on exit.
- ; Related .......: OnAutoItExitRegister
- ; Link ..........: http://msdn.microsoft.com/en-us/library/windows/desktop/ms683242(v=vs.85).aspx
- ; Example .......: No
- ; ===============================================================================================================================
- Func RegisterConsoleEvent($fFunc, $dwSig = $sigCtrlClose, $bRegisterExit = True)
- If Not $__Amount__Startup_Console Then
- __Console__CreateConsole()
- $__Amount__Startup_Console += 1
- EndIf
- #cs
- Check bounds in the function table, resize if needed
- #ce
- $nCap = UBound($__Console__Handlers) -1
- $nAmountNeeded = $__Console__Handlers[0][0] + 1
- If $nAmountNeeded > $nCap Then
- ReDim $__Console__Handlers[$nCap + 2][2]
- EndIf
- $__Console__Handlers[0][0] += 1
- #cs
- Has the handler been registrered yet? If not, do it. Else pass.
- #ce
- If NOT $__Console__hCtrlHandler Then
- $__Console__hCtrlHandler = DllCallBackRegister("__Console__HandlerRoutine","bool","dword")
- Local $pCtrlHandler = DllCallBackGetPtr($__Console__hCtrlHandler)
- $aRet = DllCall($__Dll_Kernel32,"bool","SetConsoleCtrlHandler","ptr",$pCtrlHandler,"bool",1)
- If @Error OR NOT $aRet[0] OR _WinApi_GetLastError() Then Return SetError(_WinApi_GetLastError(), @extended, False)
- EndIf
- #cs
- Register the event and the function
- #ce
- $__Console__Handlers[ $__Console__Handlers[0][0] ][0] = $dwSig
- $__Console__Handlers[ $__Console__Handlers[0][0] ][1] = $fFunc
- If $bRegisterExit AND $dwSig = $sigCtrlClose Then OnAutoItExitRegister($fFunc)
- Return True
- EndFunc
- ; #INTERNAL_USE_ONLY# ===========================================================================================================
- ; Name...........: __Console__HandlerRoutine
- ; Description ...: A callback called on system-generated signals. Calls any event handlers registrered using RegisterConsoleEvent.
- ; Syntax.........: __Console__HandlerRoutine()
- ; Parameters ....: $dwSig - the generated signal.
- ; Return values .: None
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 18/06/2012
- ; ===============================================================================================================================
- Func __Console__HandlerRoutine($dwSig)
- Local $fFunc
- For $i = 1 to UBound($__Console__Handlers) - 1
- If $dwSig = $__Console__Handlers[$i][0] AND $__Console__Handlers[$i][1] <> "" Then
- If VarGetType($__Console__Handlers[$i][1]) = "string" Then ; string name passed
- Call($__Console__Handlers[$i][1])
- ElseIf VarGetType($__Console__Handlers[$i][1]) = "userfunction" Then ; function passed, applies to beta.
- $fFunc = $__Console__Handlers[$i][1]
- $fFunc()
- EndIf
- EndIf
- Next
- __Console__ShutDown()
- Exit
- Return False
- EndFunc
- ; #INTERNAL_USE_ONLY# ===========================================================================================================
- ; Name...........: __Console_StartUp()
- ; Description ...: Checks if running under SciTE, if, then executes the script via ShellExecute so own console can be opened.
- ; Exits with the errorcode the executed script did.
- ; Syntax.........: __Console_StartUp()
- ; Parameters ....: None
- ; Return values .: None
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 16/03/2011
- ; Remarks .......: This function is used internally. Called automatically on AutoIt startup.
- ; Related .......:
- ; Link ..........:
- ; Example .......:
- ; ===============================================================================================================================
- Func __Console__StartUp()
- Local $bIsRunningFromScite = StringInStr($CmdLineRaw, "/ErrorStdOut")
- Local $bIsRecursed = Execute(StringLeft($Cmdline[$Cmdline[0]],StringLen("/Console=")))
- If ($bIsRunningFromScite > 0) AND NOT $bIsRecursed Then
- Local $szCommandLine = '"' & @AutoItExe & '" "' & @ScriptFullPath & '" /Console=True'
- ConsoleWrite(@CRLF & "!<Console.au3>:" & @CRLF & @TAB & "Launching process on own..." & @CRLF & "+" & @TAB & "CmdLine:" & $szCommandLine & @CRLF)
- Local $iReturnCode = RunWait($szCommandline)
- ConsoleWrite(@CRLF & ">" & @TAB & @ScriptName & " returned " & $iReturnCode & " (0x" & Hex($iReturnCode, 8) & ")" & @CRLF)
- Exit $iReturnCode
- EndIf
- Global $__Dll_Kernel32 = DllOpen("kernel32.dll")
- OnAutoItExitRegister("__Console__ShutDown")
- EndFunc ;==>__Console_StartUp
- ; #INTERNAL_USE_ONLY# ===========================================================================================================
- ; Name...........: __Console_ShutDown()
- ; Description ...: If a console is present, it detaches and closes any handles opened.
- ; Syntax.........: __Console_ShutDown()
- ; Parameters ....: None
- ; Return values .: None
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 15/03/2011
- ; Remarks .......: This function is used internally. Called automatically on AutoIt shutdown.
- ; Related .......:
- ; Link ..........:
- ; Example .......:
- ; ===============================================================================================================================
- Func __Console__ShutDown()
- If $__Amount__Startup_Console Then
- For $cStream in $__CStreams
- DllCall($__Dll_Kernel32,"BOOL","CloseHandle","handle",$CStream)
- Next
- __Console__KillConsole()
- EndIf
- DllClose($__Dll_Kernel32)
- EndFunc ;==>__Console_ShutDown
- ; #INTERNAL_USE_ONLY# ===========================================================================================================
- ; Name...........: __Console_CreateConsole()
- ; Description ...: Allocates an console, and opens up handles for the three standard streams: Input, Output and Error.
- ; Syntax.........: __Console_CreateConsole()
- ; Parameters ....: None
- ; Return values .: Success - True
- ; Failure - False
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 18/06/2012
- ; Remarks .......: This function is used internally. Called automatically the first time any of the Cin, Cerr or Cout funcs is used.
- ; Related .......:
- ; Link ..........:
- ; Example .......:
- ; ===============================================================================================================================
- Func __Console__CreateConsole()
- If Not $__Amount__Startup_Console Then
- $__Amount__Startup_Console += 1
- Local $aResult = DllCall($__Dll_Kernel32, "BOOL", "AllocConsole")
- Local $fpTemp, $mKernelHandle = DllCall($__Dll_Kernel32, _
- "HANDLE","GetModuleHandleW", _
- "wstr", "Kernel32.dll")
- If @Error Or NOT $mKernelHandle[0] Then
- Exit(0xF)
- EndIf
- For $i = 0 To 4
- $fpTemp = DllCall($__Dll_Kernel32, _
- "ptr", "GetProcAddress", _
- "HANDLE", $mKernelHandle[0], _
- "str", $_sfTable[$i])
- If @Error Or NOT $fpTemp[0] Then
- Exit(0xF + $i)
- EndIf
- $_pfTable[$i] = $fpTemp[0]
- Next
- $__CStreams[$_cOut] = __Console__GetStdHandle()
- $__CStreams[$_cIn] = __Console__GetStdHandle(-10)
- $__CStreams[$_cErr] = __Console__GetStdHandle(-12)
- Return $aResult[0]
- EndIf
- EndFunc ;==>__Console__CreateConsole
- ; #INTERNAL_USE_ONLY# ===========================================================================================================
- ; Name...........: __Console_ShutDown()
- ; Description ...: Frees the console from the process.
- ; Syntax.........: __Console_ShutDown()
- ; Parameters ....: None
- ; Return values .: None
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 15/03/2011
- ; Remarks .......: This function is used internally. Called automatically on AutoIt shutdown.
- ; Related .......:
- ; Link ..........:
- ; Example .......:
- ; ===============================================================================================================================
- Func __Console__KillConsole()
- Local $aResult = DllCall($__Dll_Kernel32, "BOOL", "FreeConsole")
- Return $aResult[0]
- EndFunc ;==>__Console__KillConsole
- ; #INTERNAL_USE_ONLY# ===========================================================================================================
- ; Name...........: __Console_GetStdHandle()
- ; Description ...: Returns an handle to the desired standard stream.
- ; Syntax.........: __Console_GetStdHandle()
- ; Parameters ....: None
- ; Return values .: Success - A handle to the stream.
- ; Failure - 0
- ; Author ........: Janus Thorborg (Shaggi)
- ; Modified.......: 15/03/2011
- ; Remarks .......: This function is used internally. Called automatically the first time any of the Cin, Cerr or Cout funcs is used.
- ; Related .......:
- ; Link ..........:
- ; Example .......:
- ; ===============================================================================================================================
- Func __Console__GetStdHandle($nStdHandle = -11)
- Local $aResult = DllCall($__Dll_Kernel32, "handle", "GetStdHandle", _
- "dword", $nStdHandle)
- Return $aResult[0]
- EndFunc ;==>__Console__GetStdHandle
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement