Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

Program to test for printers duplex mode being turn on

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • PBCC Program to test for printers duplex mode being turn on

    A console program to test if a printer's duplex mode is set to on

    can be called by another program and a returned value given without displaying the results
    program returns a error level of 1 if duplex printing is turned on

    the program should be flexible for all purposes.

    Any printer named "fax" will be skipped automatically

    Great for batch files!

    This program was designed so that early detection of printers that can print in duplex and have the dulpex setting turned on does not make a mess of things if these printers are chosen to print with. Batch files or other programs that can run this program and look for a returned errorlevel to check a printers duplex setting.

    I guess i should of placed code in there for checking the default printer, oh well, on next set of code i am sure.


    added code should now handle all fax printers correctly( meaning do not get information from them) except where the fax printer is the default printer and there is two or more printers and when the program is asked to get the duplex setting specifically of the default printer.






    Code:
    #COMPILE EXE
    
    FUNCTION PBMAIN () AS LONG
        LOCAL a$
        LOCAL i&,j&,k&
        LOCAL ix AS LONG, sPrinters AS STRING,sprinter AS STRING
        LOCAL temp$
        LOCAL quiet&
        LOCAL pause&
    
    
        temp$=" "+UCASE$(COMMAND$)+" "
    
        IF TRIM$(temp$)="/HELP" OR TRIM$(temp$)="?" OR TRIM$(temp$)="/?" THEN
            STDOUT  "command tail options to this program"
            STDOUT  "/quiet = do not display results, just return a errorlevel of 1(one)"
            STDOUT  "         if there are any printers with the duplex mode set on."
            STDOUT  "/pause  = pause after results are displayed if quiet is not chosen"
            STDOUT  "/allprinters = check all printers"
            STDOUT  "/default     = check just the default printer"
            STDOUT  "no printers on command tail means all printers will be checked"
            STDOUT  "specfic printers only need to be on the command line"
            STDOUT  "any printer name with "+$DQ+" fax "+$DQ+" in it will be skipped"
            STDOUT  "ex options:   HP LaserJet /pause"
            STDOUT  "              HP LaserJet /quiet"
            STDOUT  "              /allprinters /pause"
            STDOUT  "              /pause"
            STDOUT  "              /quiet"
            STDOUT  "errorlevel 1(one) will be returned if printers duplex setting is on"
            STDOUT  "press any key to continue"
            WAITKEY$
            EXIT FUNCTION
    
        END IF
        IF PRINTERCOUNT=0& THEN EXIT FUNCTION
    
    
        J&=0&
        j&=INSTR(temp$," /QUIET ")
        IF J& THEN quiet&=1&:REPLACE " /QUIET " WITH "" IN TEMP$:TEMP$=" "+TRIM$(TEMP$)+" "
        j&=INSTR(temp$," /PAUSE ")
        IF J& THEN pause&=1&:REPLACE " /PAUSE " WITH "" IN TEMP$:TEMP$=" "+TRIM$(TEMP$)+" "
    
        IF TRIM$(TEMP$)="" THEN TEMP$=" /ALLPRINTERS "
    
        i&=0    'returned errorlevel
        k&=0    'flag for setting if any printers have the duplex setting on
    
        IF INSTR(temp$," /DEFAULT ") THEN
          j&=0&  'set j to zero, being used as a duplex mode flag
          IF PRINTERCOUNT=1& THEN
            sprinter=TRIM$(PRINTER$(NAME,1&))
          IF INSTR(" "+UCASE$(sprinter)+" "," FAX ") THEN EXIT FUNCTION
          END IF
          XPRINT ATTACH DEFAULT
          sprinter=XPRINT$
          IF sprinter="" THEN XPRINT CLOSE:EXIT FUNCTION
          IF INSTR(" "+UCASE$(sprinter)+" "," FAX ") THEN
               XPRINT CANCEL
               XPRINT CLOSE
               EXIT FUNCTION
          END IF
    
          XPRINT GET DUPLEX TO j&
          IF j&>1& THEN INCR K&:sprinters=sprinters+$CRLF+sprinter
          XPRINT CANCEL
          XPRINT CLOSE
          GOTO reportresults
        END IF
    
        FOR ix = 1 TO PRINTERCOUNT
          j&=0&  'set j to zero, being used as a duplex mode flag
          sprinter=TRIM$(PRINTER$(NAME,ix))
          IF INSTR(" "+UCASE$(sprinter)+" "," FAX ") THEN ITERATE FOR
          IF INSTR(temp$," /ALLPRINTERS ")=0 THEN
               IF INSTR(temp$," "+UCASE$(sprinter)+" ")=0 THEN ITERATE FOR
          END IF
          XPRINT ATTACH sprinter
          XPRINT GET DUPLEX TO j&
          XPRINT CANCEL
          XPRINT CLOSE
          'When j& <2 then the duplex mode should be set to off on most printers
          IF j&>1& THEN INCR K&:sprinters=sprinters+$CRLF+sprinter
      NEXT
    
    
    reportresults:
        IF k&>0 THEN
            IF quiet&=0 THEN
                sprinters="Printer(s) with duplex mode set to on."+sprinters
                STDOUT sprinters
                IF pause&=1 THEN STDOUT $CRLF+"press any key to continue":WAITKEY$
            END IF
            i&=1&   'errorlevel 1 is returned, found a printer with a duplex setting on
        END IF
           FUNCTION=i&
    END FUNCTION
    Attached Files
    Last edited by Paul Purvis; 19 Oct 2009, 09:39 PM.
    p purvis
Working...
X