当前位置:  开发笔记 > 编程语言 > 正文

如何使用WebBrowser控件以编程方式更改打印机设置?

如何解决《如何使用WebBrowser控件以编程方式更改打印机设置?》经验,为你挑选了1个好方法。

我终于想出了如何在不提示用户或显示IE窗口的情况下打印转换后的XML,但现在我需要指定一些副本以及可能的其他打印机设置.

有没有办法以编程方式更改WebBrowser控件上的打印机设置?

有问题的代码:

private static void PrintReport(string reportFilename)
{
    WebBrowser browser = new WebBrowser();

    browser.DocumentCompleted += browser_DocumentCompleted;

    browser.Navigate(reportFilename);
}

private static void browser_DocumentCompleted
    (object sender, WebBrowserDocumentCompletedEventArgs e)
{
    WebBrowser browser = sender as WebBrowser;

    if (null == browser)
    {
        return;
    }

    browser.Print();

    browser.Dispose();
}

Austin Salon.. 13

我成功的唯一方法是动态修改注册表(并将其更改回不影响其他任何内容).

您可以在CurrentUser下的"Software\Microsoft\Internet Explorer\PageSetup"中找到所需的设置.

要更改打印机,您可以使用:

using System.Management

public static bool SetDefaultPrinter(string defaultPrinter)
{
    using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer"))
    {
        using (ManagementObjectCollection objectCollection = objectSearcher.Get())
        {
            foreach (ManagementObject mo in objectCollection)
            {
                if (string.Compare(mo["Name"].ToString(), defaultPrinter, true) == 0)
                {
                    mo.InvokeMethod("SetDefaultPrinter", null, null);
                    return true;
                }
            }
        }
    }
    return false;
}


至于副本数量,您始终可以将WebBrowser.Print置于while循环中.



1> Austin Salon..:

我成功的唯一方法是动态修改注册表(并将其更改回不影响其他任何内容).

您可以在CurrentUser下的"Software\Microsoft\Internet Explorer\PageSetup"中找到所需的设置.

要更改打印机,您可以使用:

using System.Management

public static bool SetDefaultPrinter(string defaultPrinter)
{
    using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer"))
    {
        using (ManagementObjectCollection objectCollection = objectSearcher.Get())
        {
            foreach (ManagementObject mo in objectCollection)
            {
                if (string.Compare(mo["Name"].ToString(), defaultPrinter, true) == 0)
                {
                    mo.InvokeMethod("SetDefaultPrinter", null, null);
                    return true;
                }
            }
        }
    }
    return false;
}


至于副本数量,您始终可以将WebBrowser.Print置于while循环中.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有