Components for Developers & PDF Software → Virtual Printer Delphi Tutorials

How to create Virtual Printer using Delphi

 

How to print files programmatically using the ShellExecute function

The code sample below demonstrates how to print files programmatically on either a physical or a virtual printer using the ShellExecute function. It also demonstrates how to change the default system printer.

function GetDefaultPrinter(szPrinter:PAnsiChar; var bufferSize:DWORD):
BOOL; stdcall; external 'winspool.drv' name 'GetDefaultPrinterA';

function SetDefaultPrinter(szPrinter:PAnsiChar):
BOOL; stdcall; external 'winspool.drv' name 'SetDefaultPrinterA';

procedure PrintDocumentUsingShellExecute (szPrinter: String,  szDocumentPath: String)
    var
    szDefaultPrinter, szNamePrinterBuff: String;
    bufferSize: DWord;

    begin
    
    // get the default printer
    SetLength(szDefaultPrinter, MAX_PATH);
    bufferSize:= MAX_PATH;
    GetDefaultPrinter(Pchar(szDefaultPrinter), bufferSize);
    szDefaultPrinter:= String (PChar(szDefaultPrinter));

    //change the default printer
    if(szPrinter <> szDefPrinter)
    then SetDefaultPrinter(PChar(szPrinter));

    // send the document  to the print
    ShellExecute(0, 'print', PChar(szDocumentPath), nil, nil, SW_HIDE);  

    //set default printer back to original
    if(szPrinter <> szDefaultPrinter)
    then SetDefaultPrinter(PChar(szDefaultPrinter));

    end;

Then it's necessary to call these functions with the required parameters. For example, you can print MS Word and PDF documents this way:

PrintDocumentUsingShellExecute('Your Virtual Printer', 
						'c:\Documents\AnyDocument.doc')
PrintDocumentUsingShellExecute('Your Virtual Printer', 
						'c:\ Documents \AnyDocument.pdf')

Virtual Printer menu

Latest news

April 27 2010
Now we have a new service: the development of POS-printer.

Send us your comments

We're really eager to hear from you. Please send us your suggestions in one of two ways: