Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C设置默认全局打印首选项#_C#_.net_Windows_Winapi_C# 4.0 - Fatal编程技术网

C# 使用C设置默认全局打印首选项#

C# 使用C设置默认全局打印首选项#,c#,.net,windows,winapi,c#-4.0,C#,.net,Windows,Winapi,C# 4.0,目标:我正在尝试创建一个简单的控制台应用程序,其功能是为我的本地计算机设置默认打印首选项。默认情况下,任何访问打印机的本地应用程序都将使用此设置 下面是我试图设置默认值的属性 纸张类型 纸张方向 边际 默认打印机 我实现了下面的代码,但没有什么用处 using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer")) {

目标:我正在尝试创建一个简单的控制台应用程序,其功能是为我的本地计算机设置默认打印首选项。默认情况下,任何访问打印机的本地应用程序都将使用此设置

下面是我试图设置默认值的属性

  • 纸张类型
  • 纸张方向
  • 边际
  • 默认打印机
  • 我实现了下面的代码,但没有什么用处

     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(), "OneNote", true) == 0)
                        {
                            mo.InvokeMethod("SetDefaultPrinter", null, null);
                            return true;
                        }
                    }
                }
            }
    
    即使默认打印机也会更新,但每次执行
    ctrl+p
    时,都会选择不同的打印机

    第二,我已实施以下代码来修改香港大学,但它没有提供预期的结果

            string pageSetupKey = "Software\\Microsoft\\Internet Explorer\\PageSetup";
            bool isWritable = true;
    
            RegistryKey rKey = Registry.CurrentUser.OpenSubKey(pageSetupKey, isWritable);
    
            rKey.SetValue("margin_bottom",1000, RegistryValueKind.DWord);
            rKey.SetValue("margin_top", 1000, RegistryValueKind.DWord);
            rKey.SetValue("margin_left", 1000, RegistryValueKind.DWord);
            rKey.SetValue("margin_right", 1000, RegistryValueKind.DWord);
    
    请澄清我打算做的事情是可以实现的,以及实现的方法。 我还提到了其他没有帮助的帖子和问题。
    注意:我想做这些更改,不是基于流程/程序,而是针对当前用户。

    。注册表不是一个编程接口。@IInspectable至少有办法绕过打印对话框吗?这能给你一些帮助吗?如果你有新问题,请单击按钮。