[英]How to detect type of selected printer that is dot matrix or not?
通常,在舊版Windows(98或更早版本)中,我可以使用Printer api中的MarkingTechnology來獲取當前類型的打印機。 但它在Windows 2000或更高版本中不可用。 在Windows 2000或更高版本中,您還有其他方法可以檢測到它嗎?
通過C#中的WMI查詢查詢打印機信息的示例代碼
var queryResult = string.Empty;
var query = new WqlObjectQuery("Select * from Win32_Printer");
var searcher = new ManagementObjectSearcher(query);
foreach (ManagementObject printer in searcher.Get())
{
foreach (var p in printer.Properties)
{
queryResult += p.Name + ": " + printer[p.Name] + Environment.NewLine;
}
queryResult += "--------------------------------" + Environment.NewLine;
}
謝謝,
簡短的回答:不,似乎沒有一致的方法來做到這一點。
我盡力找出檢測點陣打印機的可行方法。 我嘗試調用GetDeviceCaps函數(檢索指定設備的特定於設備的信息。)以獲取應該返回為字符流的 技術項目,如果選擇的打印機是點陣。
var hdc = CreateDC("WINSPOOL", printerName, null, IntPtr.Zero);
var technology = (DeviceCapTechnology)GetDeviceCaps(hdc, (int)DeviceCap.TECHNOLOGY);
但是,它始終將技術項目作為光柵顯示返回。 我不知道為什么它總會像這樣返回價值。
[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
[DllImport("gdi32.dll")]
static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, IntPtr lpInitData);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.