C# 如何在指定的打印机上用C设置打印机端口
我希望能够在c中执行以下等效操作: 进入设备和打印机 右键单击打印机 转到“端口”选项卡 选择COM12:端口 单击“确定” 我已成功获取命名打印机的ManagementObject,并尝试调用: mObj.SetPropertyValuePortName,COM12: 在该打印机的ManagementObject上-whch继承自ManagementBaseObject 但是,这段代码对打印机设置没有任何影响 我怀疑我需要在适当的库上使用p/Invoke,但是在大量搜索之后,我找不到该库,也找不到如何从c中执行此操作的教程C# 如何在指定的打印机上用C设置打印机端口,c#,com,ports,printers,C#,Com,Ports,Printers,我希望能够在c中执行以下等效操作: 进入设备和打印机 右键单击打印机 转到“端口”选项卡 选择COM12:端口 单击“确定” 我已成功获取命名打印机的ManagementObject,并尝试调用: mObj.SetPropertyValuePortName,COM12: 在该打印机的ManagementObject上-whch继承自ManagementBaseObject 但是,这段代码对打印机设置没有任何影响 我怀疑我需要在适当的库上使用p/Invoke,但是在大量搜索之后,我找不到该库,也找
如果有任何帮助,我们将不胜感激。在互联网的一个模糊部分找到了答案:
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说我想设置的属性是读/写的,但似乎没有任何地方有设置它的代码,这让我抓狂
现在我们知道了
我希望这对某些人有用。在互联网的一个模糊部分找到了答案:
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说我想设置的属性是读/写的,但似乎没有任何地方有设置它的代码,这让我抓狂
现在我们知道了
我希望这对某人有用