14
« on: January 04, 2019, 11:27:53 am »
Hi,
The program allows you to select the default printer from the list of printers that your computer has.
When it starts, the red line indicates the current printer and with the arrows up and down another one is indicated in the list. With the ENTER key the new printer is selected and with the ESC key the program is left without changing it.
I hope it works for you in your programs.
CLS
COLOR 15, 0
SHELL _HIDE "cmd/c wmic printer get name, default> impresora.txt"
DIM impresora(50) AS STRING
OPEN "I", 10, "impresora.txt"
n% = 0
LINE INPUT #10, dato$
DO
LINE INPUT #10, dato$: LINE INPUT #10, dato$
IF EOF(10) THEN EXIT DO
n% = n% + 1
DO
a% = INSTR(dato$, CHR$(0))
IF a% = 0 THEN EXIT DO
IF a% = 1 THEN
dato$ = MID$(dato$, a% + 1)
ELSEIF a% = LEN(dato$) THEN
dato$ = LEFT$(dato$, a% - 1)
ELSE
dato$ = LEFT$(dato$, a% - 1) + MID$(dato$, a% + 1)
END IF
LOOP
a% = INSTR(dato$, "FALSE"): b% = INSTR(dato$, "TRUE")
IF a% <> 0 THEN
MID$(dato$, a%, 5) = SPACE$(5)
dato$ = LTRIM$(RTRIM$(dato$))
END IF
IF b% <> 0 THEN
MID$(dato$, b%, 5) = SPACE$(4)
dato$ = LTRIM$(RTRIM$(dato$))
loca% = n%
END IF
impresora(n%) = dato$
impresora(0) = LTRIM$(STR$(n%))
LOOP
COLOR 7, 0
CLS
COLOR 1, 7
LOCATE 8, 20: PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
LOCATE 9, 20: PRINT "º º"
LOCATE 10, 20: PRINT "ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹"
LOCATE 11, 20: PRINT "º º"
LOCATE 12, 20: PRINT "º º"
LOCATE 13, 20: PRINT "º º"
LOCATE 14, 20: PRINT "º º"
LOCATE 15, 20: PRINT "º º"
LOCATE 16, 20: PRINT "ÈÍÍÍÍÍÍÍ<Esc>ÍÍÍÍ<"; CHR$(24); ">Í<"; CHR$(25); ">ÍÍÍÍ<"; CHR$(17); CHR$(217); ">ÍÍÍÍÍÍÍÍͼ"
COLOR 15, 1
LOCATE 9, 21: PRINT " SELECT PRINTER ";
COLOR 1, 7
max% = VAL(impresora(0))
GOSUB impridatos
DO
x$ = "": WHILE x$ = "": x$ = INKEY$: WEND
x$ = UCASE$(x$)
x% = ASC(RIGHT$(x$, 1))
SELECT CASE x%
CASE IS = 27
a$ = "@"
EXIT DO
CASE IS = 13
a$ = impresora(loca%)
EXIT DO
CASE IS = 72: '--Subir
IF loca% > 1 THEN
loca% = loca% - 1
GOSUB impridatos
END IF
CASE IS = 80: '--Bajar
IF loca% < max% THEN
loca% = loca% + 1
GOSUB impridatos
END IF
END SELECT
LOOP
COLOR 7, 0
CLS
IF a$ <> "@" THEN
SHELL _HIDE "cmd/c wmic printer where name='" + a$ + "' call setdefaultprinter"
PRINT "Selected printer: "; a$
ELSE
PRINT "The printer has not been modified"
END IF
END
impridatos:
y% = 1
FOR n% = loca% - 2 TO loca% + 2
IF n% < 1 OR n% > max% THEN
COLOR 1, 7: LOCATE y% + 10, 21: PRINT " "
ELSE
IF n% = loca% THEN COLOR 15, 4 ELSE COLOR 1, 7
LOCATE y% + 10, 21: PRINT " "
LOCATE y% + 10, 21: PRINT LEFT$(impresora(n%), 40)
END IF
y% = y% + 1
NEXT
RETURN