Click here to Skip to main content
Click here to Skip to main content

Windows Printing using the Shell

, 1 Nov 2004
Rate this:
Please Sign up or sign in to vote.
This project describes how print files using windows programming

Introduction

We needed to have a way to perform batch printing of a list of files in windows.i was able to find a way to print non-imaging files (.doc,.xls.txt.pdf) usign the System.Diagnostics.Process function and passing the "Print" verb.However,I was having trouble to find a way to print images escpecially since XP does it using the Windows XP Photo Printing Wizard.

However,I finally found a very useful example project at MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/FotoVisionDesktop.asp).
"Photos are printed using the Windows XP Photo Printing Wizard . The wizard is implemented in the system file photowiz.dll but the custom interface is not exposed. Instead, the Windows Image Acquisition Library (WIA) from Microsoft is used that provides a COM wrapper for the printing wizard. The printing code is encapsulated in the Print class."

More information about the WIA library can be found at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wiaaut/wia/wiax/overviews/gettingstartedsamples.asp

The library can be downloaded and installed from http://www.microsoft.com/downloads/details.aspx?FamilyID=a332a77a-01b8-4de6-91c2-b7ea32537e29&DisplayLang=en

Though MSDN suggest the examples are in VB and scripting languages I was able to reproduce them in C#.

hope you enjoy it!!

Notes

  1. WIA imaging toolkit is available for developers who need to develop image-enabled applications for Windows ME and XP (Service Pack 1).The WIA Automation Layer exposes features in Windows XP Service Pack 1 or later to make it easy to acquire images on digital cameras, scanners, or web cameras, and to rotate, scale, and annotate your image files.
  2. Supported image formats include PNG, JPG, GIF, BMP and TIFF. These are defined by the FormatID Constants in the WIA library

 

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Supriya Angle

United States United States
No Biography provided

Comments and Discussions

 
GeneralMy vote of 1 Pinmembercrystalmac26-Jun-09 3:14 
GeneralMy vote of 1 PinmemberJacquers26-Jun-09 2:30 
QuestionHas anybody figured out where the "printprocess" class is? Pinmembercatchfire14-Jul-05 5:56 
AnswerRe: Has anybody figured out where the "printprocess" class is? Pinmemberrvdt13-Oct-05 1:03 

Hi,
 
I was looking for the same thing today and found this in MSDN,
can be transformed to the printprocess easily
 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDiagnosticsProcessClassTopic.asp[^]
 
regards,
rob
 
using System;
using System.Diagnostics;
using System.ComponentModel;
 
namespace MyProcessSample
{
///
/// Shell for the sample.
///

public class MyProcess
{
// These are the Win32 error code for file not found or access denied.
const int ERROR_FILE_NOT_FOUND =2;
const int ERROR_ACCESS_DENIED = 5;
 
///
/// Prints a file with a .doc extension.
///

public void PrintDoc()
{
Process myProcess = new Process();

try
{
// Get the path that stores user documents.
string myDocumentsPath =
Environment.GetFolderPath(Environment.SpecialFolder.Personal);
 
myProcess.StartInfo.FileName = myDocumentsPath + "\\MyFile.doc";
myProcess.StartInfo.Verb = "Print";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();
}
catch (Win32Exception e)
{
if(e.NativeErrorCode == ERROR_FILE_NOT_FOUND)
{
Console.WriteLine(e.Message + ". Check the path.");
}
 
else if (e.NativeErrorCode == ERROR_ACCESS_DENIED)
{
// Note that if your word processor might generate exceptions
// such as this, which are handled first.
Console.WriteLine(e.Message +
". You do not have permission to print this file.");
}
}
}
 

public static void Main()
{
MyProcess myProcess = new MyProcess();
myProcess.PrintDoc();
}
}
}

GeneralMore Information Pinsussbeatsunique20-Feb-05 12:02 
GeneralRe: More Information Pinmemberbenchva7-Apr-05 4:54 
GeneralRe: More Information Pinmemberbeatsunique7-Apr-05 12:56 
GeneralRe: More Information Pinmemberdevikta6-May-05 11:21 
GeneralRe: More Information PinmemberAndi Oliver Ion12-Aug-07 7:08 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.150123.1 | Last Updated 1 Nov 2004
Article Copyright 2004 by Supriya Angle
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid