File "DosPrint.inc"

Path: /linkbatch/DosPrint.inc
File size: 2.12 KB
MIME-type:
Charset: utf-8

'--------------------------------------------------------------------------------
' This is "DosPrint.inc"
' It allows to print output to Windows console (CMD)
'--------------------------------------------------------------------------------
' In order to work, the produced .exe needs to have its byte #221 changed to
' CHR$(3), in order to enable console mode. See http://mougino.free.fr/code/
'--------------------------------------------------------------------------------

'--------------------------------------------------------------------------------
#INCLUDE ONCE "Win32Api.inc"
#INCLUDE ONCE "WinBase.inc"
#INCLUDE ONCE "WinCon.inc"
'--------------------------------------------------------------------------------

'--------------------------------------------------------------------------------
FUNCTION DosPrint(BYVAL sText AS STRING) AS LONG
    STATIC iTxtDone, isConsole AS LONG
    STATIC hCon AS DWORD

    IF hCon = 0 THEN hCon = GetStdHandle(BYVAL %STD_OUTPUT_HANDLE)
    IF hCon = %INVALID_HANDLE_VALUE THEN
        isConsole = 1
        CALL FreeConsole()
        IF AllocConsole() THEN hCon = GetStdHandle(BYVAL %STD_OUTPUT_HANDLE)
    END IF
    IF hCon <> %INVALID_HANDLE_VALUE THEN
        sText += $CRLF
        CALL WriteConsole(hCon, BYCOPY sText, LEN(sText), iTxtDone, BYVAL 0)
    END IF
    FUNCTION = isConsole
END FUNCTION
'--------------------------------------------------------------------------------

'--------------------------------------------------------------------------------
FUNCTION DosCol(BYVAL fc AS LONG, BYVAL bc AS LONG) AS LONG
    STATIC iTxtDone, isConsole AS LONG
    STATIC hCon AS DWORD
    LOCAL  col  AS WORD

    IF hCon = 0 THEN hCon = GetStdHandle(BYVAL %STD_OUTPUT_HANDLE)
    IF hCon = %INVALID_HANDLE_VALUE THEN
        isConsole = 1
        CALL FreeConsole()
        IF AllocConsole() THEN hCon = GetStdHandle(BYVAL %STD_OUTPUT_HANDLE)
    END IF
    IF hCon <> %INVALID_HANDLE_VALUE THEN
        col = bc*2^4 + fc
        SetConsoleTextAttribute hCon, BYVAL col
    END IF
    FUNCTION = isConsole
END FUNCTION
'--------------------------------------------------------------------------------