AutoIT-调用SVN相关命令,Console.au3

源代码:

------------------------------------------------------------------------------------------

#include <Console.au3>
system("svn cleanup d:\autoit3\")
system("svn up d:\autoit3\")
system("pause")

------------------------------------------------------------------------------------------

 

代码虽然简单,但依赖了别外一个AU3的脚本Console.au3

以后为Console.au3的脚本文件,AutoIT的工具里未自带此脚本。从风行者处索取,感谢风行者

; #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

 

你可能感兴趣的:(console)