본문 바로가기
C++/MFC

[MFC] PRINTER_INFO_4를 이용한 프린터 설치 여부 체크 진행 예제

by Hwoarang757 2024. 6. 28.

[MFC] PRINTER_INFO_4를 이용한 프린터 설치 여부 체크 진행 예제 입니다.

#include <winspool.h>



void CPrinterInfoMFCDlg::CheckPrinter() {

	PRINTER_INFO_4* pPrinterInfo4;
	DWORD dwNeeded;
	DWORD dwDrvRet;
	BOOL bRet = FALSE;
	wchar_t lpTemp[MAX_PATH];
	wchar_t lpPrinterName[MAX_PATH] = L"L3150 Series(네트워크)";
	
	EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 4, NULL, 0, &dwNeeded, &dwDrvRet);

	if (dwNeeded == 0) {
		m_edit1.SetWindowText(L"프린터가 없습니다.");
		return;
	}

	pPrinterInfo4 = (PRINTER_INFO_4*)GlobalAlloc(GPTR, dwNeeded);
	
	if (pPrinterInfo4 && EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 4, LPBYTE(pPrinterInfo4), dwNeeded, &dwNeeded, &dwDrvRet)) {
		for (DWORD i = 0; i < dwDrvRet; i++) {
			if (lstrcmp(pPrinterInfo4[i].pPrinterName, lpPrinterName) == 0) {
				wsprintf(lpTemp, L"%s 장치가 존재 합니다.", pPrinterInfo4[i].pPrinterName);
				m_edit1.SetWindowText(lpTemp);
				bRet = TRUE;
				break;
			}
		}
	}

	if (!bRet) {
		wsprintf(lpTemp, L"%s 장치가 존재 하지 않습니다.", lpPrinterName);
		m_edit1.SetWindowText(lpTemp);
	}

	GlobalFree(HGLOBAL(pPrinterInfo4));
}