Hallo zusammen,
ich verwende folgenden Code um an die Namen bzw. die Bezeichnungen der Papierfächer für den Standarddrucker zu kommen.
Spoiler anzeigen
Const $DC_BINS = 6
Const $DC_BINNAMES = 12
Dim $BinNameList
$strComputer = "."
$objWMIService = ObjGet ("winmgmts:\" & $strComputer & "\root\cimv2")
$colInstalledPrinters = $objWMIService.ExecQuery ("Select * From Win32_Printer Where Default = True")
For $objPrinter In $colInstalledPrinters
$result = DllCall("winspool.drv", "long", "DeviceCapabilitiesA", "str", $objPrinter.Name, "str", $objPrinter.PortName, "int", $DC_BINS, "str", $BinNameList, "long", 0)
$s_struct = ""
For $i = 1 To $result[0]
$s_struct = $s_struct & "char[24];"
Next
$s_struct = StringTrimRight($s_struct, 1)
$struct = DllStructCreate($s_struct)
$result2 = DllCall("winspool.drv", "long", "DeviceCapabilitiesA", "str", $objPrinter.Name, "str", $objPrinter.PortName, "int", $DC_BINNAMES, "ptr", DllStructGetPtr($struct), "long", 0)
For $i = 1 To $result[0]
;~ MsgBox(0, "Papierfach", DllStructGetData($struct, $i))
ConsoleWrite(DllStructGetData($struct, $i) & @CRLF)
Next
$struct = 0
Next
Zusätzlich hätte ich noch gerne den Fachcode ermittelt, wie es zum bsp. Word über "Seite einrichten" bei der Makroaufzeichnung generiert.
Als Bsp.von einem HP LJ4250
15 Automatisch auswählen
262 Drucker autom. Auswahl
258 Man. Zufuhr in Fach 1
259 Fach 1
260 Fach 2
261 Fach 3
262 Fach 4
Kennt jemand eine Möglichkeit diese Fachcodes zu ermitteln?
MfG Maxxer