亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 C# 檢索 macOS 上已安裝的打印機

如何使用 C# 檢索 macOS 上已安裝的打印機

C#
瀟湘沐 2023-09-16 17:47:44
我正在編寫一個控制臺應用程序,該應用程序需要做的事情之一是檢索所有用戶安裝的打印機(及其紙張來源)的列表。我們可以通過 Windows 上的 System.Drawing.Printing.PrinterSettings.InstalledPrinters 輕松獲取此信息,但在 macOS 上訪問相同的屬性似乎會返回一個空列表。我們在此應用程序中使用 .NET Core v2.2。我們使用的代碼如下:foreach (string pName in PrinterSettings.InstalledPrinters) {  // this should iterate each of the installed printers}在 Windows 上,它會按預期迭代每臺打印機。但在 Mac 上,它什么也不做。InstalledPrinters 屬性是否在 macOS 上不起作用,或者是否可能有其他原因阻止其正常工作?如果它不起作用,還有其他方法來檢索列表嗎?
查看完整描述

3 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

是的,我也有同樣的問題。添加System.Drawing.Common命名空間就可以了。然后就可以解析命名空間了。我的列表中充滿了可用的打印機。



查看完整回答
反對 回復 2023-09-16
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

Lpinfo (CUPS) 解決方法:


using System.Diagnostics;

var startInfo = new ProcessStartInfo("lpstat", "-p")

                {

                    RedirectStandardOutput = true,

                    CreateNoWindow         = true

                };

var process   = Process.Start(startInfo);

var output = await process.StandardOutput.ReadToEndAsync();

var printerNames = output.Split("\n", StringSplitOptions.RemoveEmptyEntries)

                         .Select(line => line.Split(" ")[1])

                         .Where(name => !string.IsNullOrWhiteSpace(name))

                         .ToArray();

await process.WaitForExitAsync();


Console.WriteLine(string.Join("\n",printerNames));


查看完整回答
反對 回復 2023-09-16
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

對我來說聽起來像是 .NET Core 中的一個錯誤。

您使用什么版本的 .NET Core?

.NET Core 2.1(及更高版本)具有在 macOS/Linux 上實現查找 InstalledPrinters 的代碼:https://github.com/dotnet/corefx/blob/master/src/System.Drawing.Common/src/System/Drawing /Printing/PrintingServices.Unix.cs

所以它應該可以工作(除非某個地方有錯誤)。


查看完整回答
反對 回復 2023-09-16
  • 3 回答
  • 0 關注
  • 160 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號