Ich habe eine Liste aller in WinXP verfügbaren Drucker. Ich brauche den Code (idealerweise .NET), um alle virtuellen Drucker aus dieser Liste herauszufiltern. Ist es möglich zu tun? Ich habe alle Eigenschaften der Klasse Win32_Printer wmi analysiert, kann aber keine geeignete Klasse erkennen. Bitte helfen Sie.Gibt es eine Möglichkeit, virtuelle Drucker von physischen zu unterscheiden?
Antwort
Ich glaube nicht, dass es möglich ist, zumindest mit Sicherheit. Der Sinn eines virtuellen Druckers besteht darin, einen echten so genau wie möglich zu imitieren, so dass alle Unterschiede, die Sie erkennen können, im Grunde nur Fehler im virtuellen Drucker sind.
Das heißt, Sie können einige Vermutungen basierend auf der PortName
machen. Nur für ein paar Beispiele, eine PortName
, die eine IP-Adresse enthält oder mit "USB" beginnt, bezieht sich wahrscheinlich auf eine physische Verbindung.
Große Antwort, Jerry. Zog einige Beispiele und fand es nicht möglich. Bezüglich Ihres Tippvorschlags gibt es eine Einschränkung: Faxe. Einer unserer PC's hat einen Direktverbindungs-Fax/Drucker, wobei jeder als ein separater Drucker aufgelistet ist (z.B. HPFAX1, USB001). Das integrierte MS Fax wird jedoch als SHRFAX aufgelistet. Ich kann mir vorstellen, dass andere virtuelle Faxe ähnlich aufgelistet werden. Auch das Finden dieser Informationen ohne Verwendung von WMI ist aus den Recherchen, die ich durchgeführt habe, möglicherweise nicht möglich. – Lizz
Ich weiß, das ist eine alte Frage, aber diese Antwort kann für jemanden mit dem gleichen Problem hilfreich sein.
Wenn mein Verständnis eines "virtuellen Druckers" korrekt ist. Sie könnten die WMI-Eigenschaft "PrintProcessor" überprüfen und "winprint" ignorieren. Nach meinem Wissen ignoriert dies alle Windows 7-Software-basierten Druckeroptionen. Hier ist ein Beispielcode, um das zu demonstrieren. Gibt den Druckernamen zurück.
using System.Management;
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Printer");
foreach (ManagementObject obj in searcher.Get())
{
if(obj != null)
{
if(obj["PrintProcessor"].ToString().ToUpper() != "WINPRINT")
{
Console.WriteLine(obj["Name"]);
}
}
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
- 1. Gibt es eine Möglichkeit, eine reine virtuelle Funktion zu "löschen"?
- 2. Gibt es eine Möglichkeit, den Gerätekontexttyp zu unterscheiden?
- 3. Gibt es eine Möglichkeit, Dateien aus C++ zu unterscheiden?
- 4. Gibt es eine Möglichkeit, eine GUID von einer Zufallszahl zu unterscheiden?
- 5. Gibt es eine Möglichkeit, physischen Speicher über 4 GB auf Vista x64 zuzuweisen?
- 6. Gibt es eine Möglichkeit, Satz für Satz anstelle von Zeile für Zeile zu unterscheiden?
- 7. Gibt es eine Möglichkeit, eine Seite durch JavaScript zu erkennen?
- 8. VMware-Netzwerkadapter von physischen Netzwerkadaptern unterscheiden -oder- Virtuellen Netzwerkadapter erkennen
- 9. Gibt es eine Möglichkeit, Kovarianz zu deklarieren?
- 10. Gibt es eine Möglichkeit, "träge" zu lesen?
- 11. Gibt es eine Möglichkeit, eine MVC-Controller-Aktion zu überschreiben?
- 12. Gibt es eine Möglichkeit, Datenbanktransaktionen zu beschleunigen?
- 13. Gibt es eine Möglichkeit, Mehrfacheinspritzung zu propagieren?
- 14. Gibt es eine Möglichkeit, django.db.connection.queries zu löschen?
- 15. Gibt es eine Möglichkeit, ConfigurationManager.AppSettings zu überschreiben?
- 16. Gibt es eine Möglichkeit, Typdeklarationen zu erweitern?
- 17. gibt es eine virtuelle Umgebung für node.js?
- 18. Gibt es in Windows eine virtuelle Speicherdateidatei?
- 19. Gibt es eine Möglichkeit, einen Breitbildmonitor in zwei oder mehr virtuelle Monitore aufzuteilen?
- 20. Gibt es eine Möglichkeit, AMDPlugin zu deaktivieren?
- 21. Gibt es eine Möglichkeit, Fenstereigenschaften zu verbergen?
- 22. Gibt es eine Möglichkeit, onPanResponderMove zu verwalten?
- 23. Gibt es eine Möglichkeit, PreparedStatement zu aktualisieren?
- 24. Gibt es eine Möglichkeit, Unterabfragen zu vermeiden?
- 25. Gibt es eine Möglichkeit, Webkonsolenfehler zu erkennen?
- 26. Gibt es eine Möglichkeit, dies zu loopen?
- 27. Gibt es eine Möglichkeit, Formularantwort zu ignorieren?
- 28. Gibt es eine Möglichkeit, Duplikate zu vermeiden?
- 29. Gibt es eine Möglichkeit, Creeps zu löschen?
- 30. Gibt es eine Möglichkeit, Selektoren zu gruppieren?
Aus Neugier, warum müssen Sie das tun? –