我如何编程与WebBrowser控件更改打印机设置? [英] How do I programatically change printer settings with the WebBrowser control?

查看:508
本文介绍了我如何编程与WebBrowser控件更改打印机设置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我终于想通了如何打印转换的XML 不提示用户或呈现一个IE窗口,但现在我需要指定份数和其他可能的打印机设置的。

有没有办法在一个WebBrowser控件编程更改打印机设置?

在code问题:

 私有静态无效PrintReport(字符串reportFilename)
{
    web浏览器浏览器=新的web浏览器();    browser.DocumentCompleted + = browser_DocumentCompleted;    browser.Navigate(reportFilename);
}私有静态无效browser_DocumentCompleted
    (对象发件人,WebBrowserDocumentCompletedEventArgs E)
{
    web浏览器浏览器=发送者的web浏览器;    如果(空==浏览器)
    {
        返回;
    }    browser.Print();    browser.Dispose();
}


解决方案

我已经与正在修改动态注册表(和改变他们回不影响任何东西)成功的唯一方法。

您可以找到您所需要的软件\\微软\\的Internet Explorer \\ PAGESETUP的currentUser下的设置。

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

 使用System.Management公共静态布尔SetDefaultPrinter(字符串defaultPrinter)
{
    使用(ManagementObjectSearcher objectSearcher =新ManagementObjectSearcher(SELECT * FROM Win32_Printer))
    {
        使用(ManagementObjectCollection objectCollection = objectSearcher.Get())
        {
            的foreach(在objectCollection的ManagementObject月)
            {
                如果(的String.Compare(MO [名称]。的ToString(),defaultPrinter,真)== 0)
                {
                    mo.InvokeMethod(SetDefaultPrinter,NULL,NULL);
                    返回true;
                }
            }
        }
    }
}


至于拷贝数,你可以随时把WebBrowser.Print在一个while循环。

I finally figured out how to print transformed XML without prompting the user or showing an IE window, but now I need to specify a number of copies and possibly other printer settings.

Is there a way to programatically change printer settings on a WebBrowser control?

The code in question:

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

解决方案

The only method I've had success with is modifying the registry on the fly (and changing them back to not affect anything else).

You can find the settings you need at "Software\Microsoft\Internet Explorer\PageSetup" under CurrentUser.

To change the printer, you can use this:

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


As for the number of copies, you can always put the WebBrowser.Print in a while loop.

这篇关于我如何编程与WebBrowser控件更改打印机设置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆