GetPrinter

GetPrinterで、プリンタ情報を取得する。

GetPrinter function (Winspool.h) - Win32 apps | Microsoft Docs
https://support.microsoft.com/ja-jp/help/140285/how-to-modify-printer-settings-by-using-setprinter

プリンタの設定変更となると、DEVMODEが必要となり、プリンタ情報(Level2)の取得が必要となる。

GetPrinterにNULLを渡して必要なサイズを取得して、サイズ分GlobalAllocして、ハンドルをGlobalLockして、GetPrinterでPRINTER_INFO_2を取得。

C:\Users\bg1\Documents\test>GetPrinter.exe
Default Printer: EPSON PX-S06 Series
hPrinter = 0x005bb57c
dwNeeded = 8944
pi2->pDevMode->dmDeviceName = EPSON PX-S06 Series

C:\Users\bg1\Documents\test>

こうやってデバイス名を取得出来たりする。

Sample/winapi/GetPrinter/GetPrinter/src/GetPrinter at master · bg1bgst333/Sample · GitHub