как распечатать тестовую страницу на принтере по умолчанию? - PullRequest
1 голос
/ 14 сентября 2010

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

с использованием C # Winform Code?

Спасибо заранее

Ответы [ 3 ]

2 голосов
/ 14 сентября 2010

Чтобы создать встроенную тестовую страницу Windows, вы также можете использовать p / invoke против PrintUI.dll. Вот простой класс, который позволяет вам сделать это:

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();
    }

}
1 голос
/ 14 сентября 2010

Используйте WMI, в частности, метод PrintTestPage класса Win32_Printer .

См. Эту статью MSDN, чтобы узнать, как выполнить метод WMI из C #: Как: выполнить метод

0 голосов
/ 14 сентября 2010

Как сказал 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.");
}

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

PrintDocument doc = new PrintDocument();
doc.Print(); // will print a blank page
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...