Das Notes Forum

HCL Notes / Domino / Diverses => Entwicklung => Thema gestartet von: FrankLU am 25.02.22 - 13:43:07

Titel: Liste aller installierten Drucker erhalten
Beitrag von: FrankLU am 25.02.22 - 13:43:07
Hallo!

Nachdem ich mit einer Function GetProfileString unter Verwendung der Kernel32.dll den Standarddrucker ermitteln kann, bräuchte ich nun einen Aufruf, um eine Liste aller installierten Drucker auf einem PC zu erhalten.

In den bisherigen Beiträgen habe ich nichts gefunden, ohne auf eine Funktion eines Zweitprogramms zuzugreifen (NotesToPaper oder MS Word).

Gibt es eine Funktion in einer Windows DLL, die mir eine Liste der Drucker liefern könnte?
Kann man auch PowerShell-Befehle absetzen, die einen Ausgebwert direkt in eine Variable in einem LS zurückliefern? Mit einem Shell-Aufruf einen PowerShell-Befehl abzusetzen, der eine Druckerliste in einer Textdatei speichert, die man dann per LS wieder einliest, ist mir zu unelegant.

Vielen Dank schon mal für die Unterstützung und ein schönes Wochenende!
Frank
Titel: Antw:Liste aller installierten Drucker erhalten
Beitrag von: jBubbleBoy am 25.02.22 - 17:59:43
Dafür benötigst Du diese Beschreibung:
https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-tasks--printers-and-printing

Bzw. sieht das in Notes dann so aus:
Code
Dim objWMIService, colInstalledPrinters, strComputer$ 

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =  objWMIService.ExecQuery ("Select * from Win32_Printer")

ForAll objPrinter In colInstalledPrinters
	Print objPrinter.name
End ForAll
Titel: Antw:Liste aller installierten Drucker erhalten
Beitrag von: FrankLU am 02.03.22 - 12:29:40
Hallo Erik,

ich habe diese Art des Zugriffs auch gleich für die Feststellung des Standard-Druckers übernommen, wie sie in dem von Dir mitgeschickten Link enthalten ist. Das vereinheitlicht die Sache.

Vielen Dank für die Lösung!

Frank