Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

HOWTO: Use Automation to Set the Printer from an MFC Project


View products that this article applies to.

This article was previously published under Q180312

↑ Back to the top


Summary

This article discusses how to use version 4.2 of the Microsoft Foundation Class (MFC) library installed with Microsoft Visual C++ versions 5.0 and 6.0 to automate specifying and setting the printer used with a project.

This article shows how to use the IDispatch interface of the _Application object from the typelib of the application that you are automating. The sample code specifically uses Microsoft Word, but the approach works with any other application where the _Application IDispatch interface has the appropriate member functions.

Alternatively, you can use the Windows API library functions to set the printer directly; however, this article does not discuss this approach.

↑ Back to the top


More information

You can copy the code in this article to the message handler function of an event defined in an MFC .cpp file. However, the purpose of the code is to illustrate the process of using the IDispatch interfaces and member functions defined in the Msword8.olb type library. If you are using Word 2000, use the Msword9.olb type library. If you are using Word 2002, use the MSWord.olb Type library. The primary benefit comes from reading and understanding the code so that you can modify the example, or write code from scratch to automate setting the printer.

Steps to Create the Project

  1. Follow steps 1 through 12 in the following Microsoft Knowledge Base article to create a sample project that uses the IDispatch interfaces and member functions defined in the MSWord8.olb, or the MSWord9.olb, or the MSWord.olb type library:
    178749� HOWTO: Create an Automation Project Using MFC and a Type Library
  2. At the top of the AutoProjectDlg.cpp, add the following line:
          #include "msword8.h"
    						
    For Word 2000, include msword9.h. For Word 2002, include msword.h.
  3. Add the following code to CAutoProjectDlg::OnRun() in the AutoProjectDlg.cpp file:Sample Code:
          CWaitCursor begin;     // Hourglass.
          {
           _Application objApp;  // You need an application's typelib;
                                 // therefore, you need an object.
           // You can use any application that has an IDispatch
           // interface containing SetActivePrinter()
           // and GetActivePrinter() member functions.
           objApp.CreateDispatch("Word.Application");
           // This could be objApp.CreateDispatch("Excel.Application");
    
           // For a network printer, use:
           // objApp.SetActivePrinter("\\\\PrnServr\\HP3SI@1134 on NE01");
    
           // For a local printer, use:
           objApp.SetActivePrinter("HP LaserJet IIISi");
    
           ::Sleep(10000);       // You need to provide a considerable wait if
                                 // you are using a network printer.
    
           CString thePrinter = objApp.GetActivePrinter();  // Verify the new
                                                            // setting.
           MessageBox(thePrinter, "The Active Printer Is",
                      MB_SETFOREGROUND | MB_OK);
    
           // Release the objApp object and close Word.
           objApp.Quit(COleVariant((short)FALSE),  // VARIANT* SaveChanges
                        COleVariant((short)TRUE),   // VARIANT* OriginalFormat
                        COleVariant((short)FALSE)   // VARIANT* RouteDocument
                        );
           // If you use Excel for its IDispatch interface functions,
           // objApp.Quit() takes no parameters.
          }
    					

↑ Back to the top


References

For additional information about the Automation of Office applications, click the article number below to view the article in the Microsoft Knowledge Base:
222101� HOWTO: Find and Use Office Object Model Documentation

↑ Back to the top


Keywords: KB180312, kbhowto

↑ Back to the top

Article Info
Article ID : 180312
Revision : 9
Created on : 1/22/2007
Published on : 1/22/2007
Exists online : False
Views : 611