gpt4 book ai didi

c# - 如何在指定打印机上使用 C# 设置打印机端口

转载 作者:行者123 更新时间:2023-11-30 21:05:21 26 4
gpt4 key购买 nike

我希望能够在 C# 中执行以下等效操作:

  • 进入“设备和打印机”
  • 右键单击打印机
  • 转到端口标签
  • 选择 COM12:端口
  • 点击确定

我已经设法为指定的打印机获取了一个 ManagementObject 并尝试调用:

mObj.SetPropertyValue("PortName","COM12:");

在该打印机的 ManagementObject 上 - 从 ManagementBaseObject 继承。

但是,这段代码没有对打印机设置做任何事情。

我怀疑我需要在适当的库上使用 P/Invoke,但经过大量搜索后,我找不到该库或有关如何从 C# 执行此操作的教程。

如有任何帮助,我们将不胜感激。

最佳答案

在互联网的一个模糊部分找到答案:

public static void SetPrinterPort(string printerName, string portName)
{
var oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
oManagementScope.Connect();

SelectQuery oSelectQuery = new SelectQuery();
oSelectQuery.QueryString = @"SELECT * FROM Win32_Printer
WHERE Name = '" + printerName.Replace("\\", "\\\\") + "'";

ManagementObjectSearcher oObjectSearcher =
new ManagementObjectSearcher(oManagementScope, @oSelectQuery);
ManagementObjectCollection oObjectCollection = oObjectSearcher.Get();

foreach (ManagementObject oItem in oObjectCollection)
{
oItem.Properties["PortName"].Value = portName;
oItem.Put();
}
}

我很确定最后一部分是您在任何管理对象上设置属性所需的全部内容。令我抓狂的是,我看到 Win32 API 说我想设置的属性是读/写的,但似乎没有任何地方有设置它的代码。

现在我们知道了! :-)

我希望这对某人有用。

关于c# - 如何在指定打印机上使用 C# 设置打印机端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11733319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com