2010-09-14 2 views
1

Как распечатать тестовую страницу по умолчанию ПринтерКак распечатать тестовую страницу по умолчанию?

используя код C# Winform Code?

благодарственное-х заранее

+0

Нажмите кнопку «Печать тестовой страницы» в диалоговом окне драйвера принтера. Почему на Земле вы хотели бы написать код C# для этого? –

+0

@HansPassant, потому что если вы хотите самостоятельно управлять принтером и хотите дать пользователю возможность напрямую их протестировать. – BendEg

ответ

0

Как сказал HO1 WMI может вместить вас:

ManagementClass processClass = new ManagementClass("Win32_Printer"); 
ManagementBaseObject outP = processClass.InvokeMethod("PrintTestPage", null); 
if (Convert.ToUInt32(outP["ReturnValue"]) != 0) 
{ 
    MessageBox.Show("Failed to print test page."); 
} 

Всякий раз, когда вы звоните печать на PrintDocument без указания принтера он будет, конечно, использовать по умолчанию:

PrintDocument doc = new PrintDocument(); 
doc.Print(); // will print a blank page 
2

Для создания встроенной тестовой страницы Windows, вы можете также использовать п/ссылаться на PrintUI.dl л. Вот простой класс, который позволяет вам сделать это:

public static class PrintTestPageHelper 
{ 
    [DllImport("printui.dll", SetLastError = true, CharSet = CharSet.Unicode)] 
    private static extern void PrintUIEntryW(IntPtr hwnd, 
     IntPtr hinst, string lpszCmdLine, int nCmdShow); 

    /// <summary> 
    /// Print a Windows test page. 
    /// </summary> 
    /// <param name="printerName"> 
    /// Format: \\Server\printer name, for example: 
    /// \\myserver\sap3 
    /// </param> 
    public static void Print(string printerName) 
    { 
     var printParams = string.Format(@"/k /n{0}", printerName); 
     PrintUIEntryW(IntPtr.Zero, IntPtr.Zero, printParams, 0); 
    } 
} 

public class Program 
{ 

    static void Main(string[] args) 
    { 
     PrintTestPageHelper.Print(@"\\printserver.code4life.com\sap3"); 

     Console.WriteLine("Press enter to exit."); 
     Console.ReadLine(); 
    } 

} 
Смежные вопросы