°¡.ÇÁ¸°ÅÍ ¿­°Å

Win32 APIÀÇ ³î¶ó¿î ±â´É ÁßÀÇ Çϳª´Â ÀåÄ¡¿¡ µ¶¸³ÀûÀ̶ó´Â °ÍÀε¥ ÀμâÇÒ ¶§µµ ¸¶Âù°¡Áö·Î ÇÁ¸°ÅÍ°¡ ¹Ù²ï´Ù°í Çؼ­ Ãâ·Â Äڵ尡 ¹Ù²ð ÇÊ¿ä´Â ¾ø´Ù. ±×·¡¼­ Á÷Á¢ ÇÁ¸°Å͸¦ Á¦¾îÇÏ´Â °Íº¸´Ù ÈξÀ ´õ ÀÛÀº ÄÚµå·Î º¹ÀâÇÑ Ãâ·ÂÀ» ÇØ ³¾ ¼ö°¡ ÀÖ´Â °ÍÀÌ´Ù. ±×·¯³ª ÀåÄ¡ µ¶¸³ÀûÀ̶ó´Â °ÍÀº ±²ÀåÈ÷ ¸ÚÁø °³³äÀÌÁö¸¸ ½ÇÁ¦·Î´Â Áø½ÇÀÌ ¾Æ´Ò ¼öµµ ÀÖ´Ù. Èæ¹é ÇÁ¸°ÅÍ¿¡ Ä÷¯¸¦ Ãâ·ÂÇÒ ¼ö ¾ø°í Ç÷ÎÅÍ¿¡ ºñÆ®¸ÊÀ» Ãâ·ÂÇÒ ¼ö ¾ø´Â °Íó·³ ÇÁ¸°ÅÍÀÇ Æ¯¼º¿¡ µû¶ó Äڵ尡 ´Þ¶óÁ®¾ß ÇÏ´Â ¾î¿ ¼ö ¾ø´Â °æ¿ì°¡ Á¸ÀçÇÑ´Ù.

ÇÁ¸°ÅÍ´Â ±²ÀåÈ÷ º¹ÀâÇÑ ¹°°ÇÀÌ°í ±×·¯´Ù º¸´Ï ¼±ÅÃÇÒ ¼ö ÀÖ´Â ¿É¼ÇÀ̳ª ¼³Á¤ »óÅ°¡ ´Ù¾çÇÏ´Ù. ÇÁ·Î±×·¥ÀÌ ÇÁ¸°ÅÍ¿¡ µ¶¸³ÀûÀ¸·Î Àμ⹰À» Âï¾î ³»°í ¶Ç ÇÁ¸°ÅÍÀÇ Æ¯¼ºÀ» ÃæºÐÈ÷ È°¿ëÇϴ ȣȯ¼ºÀ» È®º¸Çϱâ À§Çؼ­´Â ÇÁ¸°ÅÍÀÇ ¿©·¯ °¡Áö ¼³Á¤ Á¤º¸¸¦ ¾Ë¾Æ ³»°í ÀÛ¾÷¿¡ ¸Â°Ô ¿É¼ÇÀ» °­Á¦·Î º¯°æÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¿©±â¼­´Â ÇÁ¸°ÅͷκÎÅÍ Á¤º¸¸¦ ±¸ÇÏ´Â ¹æ¹ý°ú º¯°æÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ º¼ ¿¹Á¤ÀÌµÇ ÇÁ¸°ÅÍ Á¤º¸¿¡ °ü·ÃµÈ API µéÀº ¿î¿µÃ¼Á¦ ¹öÀü¿¡ µû¶ó »óÀÌÇÑ °æ¿ì°¡ ¸¹°í Ç÷¡±×ÀÇ Á¾·ùµµ ¸¹¾Æ º»¹®¿¡¼­´Â ²À ÇÊ¿äÇÑ ºÎºÐ¸¸ º¸À̵µ·Ï ÇÑ´Ù. ¸ðµç ¿É¼Ç°ú Ç÷¡±×¸¦ ´Ù ¼³¸íÇÏÀÚ¸é ¿ÀÈ÷·Á ÇÙ½ÉÀÌ µÇ´Â ³»¿ëÀÌ °¡·ÁÁö°Ô µÇ¹Ç·Î ³ª¸ÓÁö »ý·«µÈ ºÎºÐÀº Ç×»ó ·¹ÆÛ·±½º¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.

¸ÕÀú ½Ã½ºÅÛ¿¡ ¾î¶² Á¾·ùÀÇ ÇÁ¸°ÅÍ°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö¸¦ Á¶»çÇØ º¸µµ·Ï ÇÏÀÚ. À©µµ¿ìÁî´Â ÇѲ¨¹ø¿¡ ¿©·¯ ´ëÀÇ ÇÁ¸°Å͸¦ ¼³Ä¡ÇÒ ¼ö ÀÖÀ¸¸ç Àμ⸦ Çϱâ Àü¿¡ »ç¿ëÀÚ°¡ Ãâ·ÂÇÒ ÇÁ¸°Å͸¦ ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù. ±×·¡¼­ Àμ⸦ ÇÏ´Â ÇÁ·Î±×·¥Àº ½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ ÇÁ¸°ÅÍÀÇ ¸ñ·ÏÀ» ±¸ÇÒ ¼ö ÀÖ¾î¾ß Çϴµ¥ ´ÙÀ½ ÇÔ¼ö´Â ½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ ÇÁ¸°ÅÍ¿Í ÇÁ¸°ÅÍ ¼­¹ö, µµ¸ÞÀÎ µîÀÇ ¸ñ·ÏÀ» Á¶»çÇØ ÁØ´Ù.

 

BOOL EnumPrinters(DWORD Flags, LPTSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);

 

Áö±Ý±îÁö EnumFonts, EnumWindows µîÀÇ ¿©·¯ °¡Áö ¿­°Å ÇÔ¼öµéÀ» »ç¿ëÇØ ¿Ô´Âµ¥ ÀÌ ÇÔ¼ö´Â ´Ù¸¥ ¿­°Å ÇÔ¼öµé°ú´Â ´Þ¸® Äݹé ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¾Ê°í ¹è¿­¿¡ ¸ðµç Á¤º¸¸¦ Çѹø¿¡ ¸®ÅÏÇØ ÁØ´Ù. ±×·¡¼­ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ Á¶±Ý ƯÀÌÇÏ´Ù. ÀÌ ÇÔ¼öÀÇ Àμö´Â µÎ °³ÀÇ ±×·ìÀ¸·Î ³ª´­ ¼ö Àִµ¥ ¾ÕÂÊ ¼¼ Àμö´Â Á¶»çÇÒ Á¤º¸ÀÇ Á¾·ù¸¦ ÁöÁ¤ÇÏ°í µÚÂÊ ³× °³ÀÇ Àμö´Â Á¶»çµÈ °á°ú¸¦ µ¹·Á ¹Þ±â À§ÇÑ ¹öÆÛ¸¦ Á¦°øÇÑ´Ù. ù¹ø° Àμö Flags´Â Á¶»çÇÒ ¿ÀºêÁ§Æ®ÀÇ Á¾·ù¸¦ ÁöÁ¤Çϸç ÀÌ Àμö¿¡ µû¶ó Name, Level Àμö¿¡ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â °ªµéÀÌ ´Þ¶óÁø´Ù. Flags Àμö¿¡´Â ´ÙÀ½ Ç÷¹±×µéÀÇ Á¶ÇÕÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

 

Ç÷¹±×

¼³¸í

PRINTER_ENUM_LOCAL

·ÎÄà ÇÁ¸°ÅÍÀÇ À̸§À» Á¶»çÇÑ´Ù. ´Ü 95´Â ³×Æ®¿÷ ÇÁ¸°Å͵µ ·ÎÄðú µ¿ÀÏÇÏ°Ô Ãë±ÞÇϹǷΠ°°ÀÌ Á¶»çµÈ´Ù.

PRINTER_ENUM_NAME

NameÀÌ ÁöÁ¤ÇÏ´Â ÇÁ¸°Å͸¦ ¿­°ÅÇϴµ¥ ¼­¹ö, µµ¸ÞÀÎ, Àμâ ÇÁ·Î¹ÙÀÌ´õ µîÀ» ¿­°ÅÇÒ ¼ö ÀÖ´Ù. NameÀÌ NULLÀ̸é Àμâ ÇÁ·Î¹ÙÀÌ´õ°¡ Á¶»çµÈ´Ù.

PRINTER_ENUM_SHARED

°øÀ¯µÈ ÇÁ¸°Å͸¸ Á¶»çµÈ´Ù. ÀÌ ¿É¼ÇÀº ´Üµ¶À¸·Î »ç¿ëµÉ ¼ö ¾øÀ¸¸ç ´Ù¸¥ Ç÷¡±×¿Í °°ÀÌ »ç¿ëÇÑ´Ù.

PRINTER_ENUM_DEFAULT

95 : ±âº» ÇÁ¸°Å͸¦ Á¶»çÇÑ´Ù. NT¿¡¼­´Â ÀÌ Ç÷¡±×¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù.

PRINTER_ENUM_CONNECTIONS

NT : ÀÌÀü¿¡ ¿¬°áÇÑ ÀûÀÌ ÀÖ´Â ÇÁ¸°ÅÍÀÇ ¸ñ·ÏÀ» Á¶»çÇÑ´Ù.

PRINTER_ENUM_NETWORK

NT : °°Àº µµ¸ÞÀο¡ ¼ÓÇÑ ÇÁ¸°ÅÍÀÇ ¸ñ·ÏÀ» ±¸ÇÑ´Ù. LevelÀº ¹Ýµå½Ã 1À̾î¾ß ÇÑ´Ù.

PRINTER_ENUM_REMOTE

NT : °°Àº µµ¸ÞÀο¡ ¼ÓÇÑ ³×Æ®¿÷ ÇÁ¸°ÅÍ¿Í ¼­¹öÀÇ ¸ñ·ÏÀ» ±¸ÇÑ´Ù. LevelÀº ¹Ýµå½Ã 1À̾î¾ß ÇÑ´Ù.

 

NameÀμö´Â Flags¿Í Level¿¡ µû¶ó »ç¿ëÇÒ ¼ö Àִ°¡ ¾ø´Â°¡°¡ °áÁ¤µÇ´Âµ¥ Á¶»ç ´ë»ó¿¡ ´ëÇÑ Ãß°¡ Á¤º¸¶ó°í »ý°¢ÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î ƯÁ¤ µµ¸ÞÀγ»ÀÇ ÇÁ¸°ÅÍ ¸ñ·ÏÀ» Á¶»çÇÑ´Ù¸é Name¿¡ µµ¸ÞÀθíÀ» Àü´ÞÇÑ´Ù. LevelÀº Á¶»çÇÒ Á¤º¸ÀÇ ·¹º§À» ÁöÁ¤Çϴµ¥ ÀÌ °ª¿¡ µû¶ó Á¶»çµÇ´Â Á¤º¸ÀÇ »ó¼¼ÇÔÀÌ ´Þ¶óÁö¸ç ¿ä±¸µÇ´Â ¹öÆÛµµ ´Þ¶óÁø´Ù. 95/98¿¡¼­´Â 1,2,5Áß ÇϳªÀÇ °ªÀ» ÁöÁ¤ÇØ ÁÙ ¼ö ÀÖ°í NT¿¡¼­´Â 4¸¦ Ãß°¡·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

³× ¹ø° ÀÌÈÄÀÇ Àμö´Â Á¶»çÇÑ Á¤º¸¸¦ ¸®ÅϹޱâ À§ÇÑ ¹öÆÛÀÌ´Ù. ³×¹ø° Àμö pPrinterEnum¿¡ ¿­°ÅµÈ Á¤º¸µéÀÌ º¹»çµÇ´Âµ¥ ÇѲ¨¹ø¿¡ ¿©·¯ ¿ÀºêÁ§Æ®ÀÇ Á¤º¸°¡ ¸®ÅϵǹǷΠÀÌ Àμö´Â ¹è¿­ÇüÀ̾î¾ß ÇÑ´Ù. LevelÀμö¿¡ µû¶ó ÀÌ ¹è¿­Àº PRINTER_INFO_*ÇüÀÌ µÈ´Ù. ¿©±â¼­ *´Â Level°ú µ¿ÀÏÇÑ Á¤¼ö°ªÀε¥ ¿¹¸¦ µé¾î LevelÀÌ 2¶ó¸é ÀÌ ¹è¿­Àº PRINTER_INFO_2 ±¸Á¶Ã¼ ¹è¿­À̾î¾ß ÇÑ´Ù.

ÀÌ ¹è¿­Àº ¹Ýµå½Ã Á¶»çµÈ ¸ðµç Á¤º¸¸¦ ´Ù ´ãÀ» ¼ö ÀÖÀ»¸¸Å­ ÃæºÐÇÑ Å©±â¸¦ °¡Á®¾ß ÇÑ´Ù. cbBuf´Â ÀÌ ¹è¿­ÀÇ Å©±â¸¦ ÁöÁ¤Çϴµ¥ ¸¸¾à Å©±â°¡ ÃæºÐÇÏÁö ¾ÊÀ» °æ¿ì ÀÌ ÇÔ¼ö´Â Á¤º¸¸¦ Á¶»çÇÏ´Â ´ë½Å pcbNeeded¿¡ ÇÊ¿äÇÑ ¹öÆÛÀÇ Å©±â¸¦ ¸®ÅÏÇØ ÁØ´Ù. ±×·¡¼­ º¸Åë óÀ½ È£ÃâÇÒ ¶§´Â cbBuf¿¡ 0À» Àü´ÞÇÏ¿© °íÀÇ·Î ¿¡·¯¸¦ À¯¹ß½ÃÅ°¸ç À̶§ ¸®ÅϵǴ pcbNeeded·Î ÇÊ¿äÇÑ ¸Þ¸ð¸® ¾çÀ» ¾Ë¾Æ³½´Ù. ¸¶Áö¸· Àμö pcReturned´Â ¸®ÅÏµÈ ±¸Á¶Ã¼ ¹è¿­ÀÇ ¹è¿­ Å©±â¸¦ ¸®ÅÏÇØ Áִµ¥ ÀÌ °ªÀº °ð Á¶»çµÈ ¿ÀºêÁ§Æ®ÀÇ °³¼ö°¡ µÈ´Ù.

´ÙÀ½ ¿¹Á¦´Â ÀÌ ÇÔ¼ö·Î Á¶»çÇÒ ¼ö ÀÖ´Â ¿©·¯ °¡Áö Àμ⠿ÀºêÁ§Æ®ÀÇ ¸ñ·ÏÀ» Á¶»çÇÏ¿© ¿­°ÅÇÑ °ÍÀÌ´Ù.

 

void EnumPrintObject()

{

   PRINTER_INFO_1 *pi1;

   PRINTER_INFO_2 *pi2;

   PRINTER_INFO_4 *pi4;

   DWORD cbNeed, cbReturn;

   UINT i;

   HDC hdc;

   int y=1;

   char Mes[256];

 

   hdc=GetDC(hWndMain);

 

   // ·ÎÄà ÇÁ¸°ÅÍ ¿­°Å - ·¹Áö½ºÆ®¸®¿¡¼­ ¾òÀ½

   lstrcpy(Mes,"·ÎÄà ÇÁ¸°ÅÍ ¿­°Å - ·¹Áö½ºÆ®¸®");

   TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));

   EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 4, NULL, 0, &cbNeed, &cbReturn);

   pi4=(PRINTER_INFO_4 *)malloc(cbNeed);

   EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 4, (PBYTE)pi4, cbNeed, &cbNeed, &cbReturn);

   for (i=0;i<cbReturn;i++) {

      wsprintf(Mes,"ÇÁ¸°ÅÍ À̸§: %s, Á¾·ù:%s ", pi4[i].pPrinterName, pi4[i].Attributes==PRINTER_ATTRIBUTE_LOCAL ? "·ÎÄÃ":"³×Æ®¿÷");

      TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));

   }

   free(pi4);y++;

 

   // ·ÎÄà ÇÁ¸°ÅÍ ¿­°Å - ½ÇÁ¦ ÇÁ¸°ÅÍ¿¡¼­ ±¸ÇÔ

   lstrcpy(Mes,"·ÎÄà ÇÁ¸°ÅÍ ¿­°Å - ½ÇÁ¦ ÇÁ¸°ÅÍ¿¡¼­ ±¸ÇÔ");

   TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));

   EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &cbNeed, &cbReturn);

   pi2=(PRINTER_INFO_2 *)malloc(cbNeed);

   EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 2, (PBYTE)pi2, cbNeed, &cbNeed, &cbReturn);

   for (i=0;i<cbReturn;i++) {

      wsprintf(Mes,"ÇÁ¸°ÅÍ À̸§: %s, Æ÷Æ®:%s, ¿ëÁö:%d ", pi2[i].pPrinterName, pi2[i].pPortName, pi2[i].pDevMode->dmPaperSize);

      TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));

   }

   free(pi2);y++;

 

   // Àμâ ÇÁ·Î¹ÙÀÌ´õ ¿­°Å

   lstrcpy(Mes,"Àμâ ÇÁ·Î¹ÙÀÌ´õ ¿­°Å");

   TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));

   EnumPrinters(PRINTER_ENUM_NAME, NULL, 1, NULL, 0, &cbNeed, &cbReturn);

   pi1=(PRINTER_INFO_1 *)malloc(cbNeed);

   EnumPrinters(PRINTER_ENUM_NAME, NULL, 1, (PBYTE)pi1, cbNeed, &cbNeed, &cbReturn);

   for (i=0;i<cbReturn;i++) {

      wsprintf(Mes,"Àμâ ÇÁ·Î¹ÙÀÌ´õ: %s, ¼³¸í:%s ", pi1[i].pName, pi1[i].pComment);

      TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));

   }

   free(pi1);y++;

 

   // µµ¸ÞÀγ»ÀÇ ÇÁ¸°ÅÍ ¿­°Å

   lstrcpy(Mes,"µµ¸ÞÀγ»ÀÇ ÇÁ¸°ÅÍ ¿­°Å");

   TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));

   EnumPrinters(PRINTER_ENUM_REMOTE, NULL, 1, NULL, 0, &cbNeed, &cbReturn);

   pi1=(PRINTER_INFO_1 *)malloc(cbNeed);

   EnumPrinters(PRINTER_ENUM_REMOTE, NULL, 1, (PBYTE)pi1, cbNeed, &cbNeed, &cbReturn);

   for (i=0;i<cbReturn;i++) {

      wsprintf(Mes,"ÇÁ¸°ÅÍ À̸§: %s ", pi1[i].pName);

      TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));

   }

   free(pi1);y++;

 

   ReleaseDC(hWndMain,hdc);

}

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

   HDC hdc;

   PAINTSTRUCT ps;

 

   switch(iMessage) {

   case WM_LBUTTONDOWN:

      EnumPrintObject();

      return 0;

   case WM_PAINT:

      hdc=BeginPaint(hWnd, &ps);

      EndPaint(hWnd, &ps);

      return 0;

   case WM_DESTROY:

      PostQuitMessage(0);

      return 0;

   }

   return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

·ÎÄà ÇÁ¸°Å͸¦ ¿­°ÅÇÏ´Â ·çƾ¸¸ º¸µµ·Ï ÇÏÀÚ. EnumPrinters ÇÔ¼ö¸¦ µÎ¹ø È£ÃâÇϴµ¥ FlagsÀμö¿¡ ENUM_PRINTER_LOCAL Ç÷¡±×¸¦ ÁÖ¾ú°í ÀÌ °æ¿ì Name Àμö´Â ÇÊ¿äÄ¡ ¾ÊÀ¸¸ç Á¶»çµÇ´Â Á¤º¸ÀÇ ·¹º§Àº 4¹øÀ¸·Î ÁöÁ¤ÇÏ¿´´Ù. À̶§ pPrinterEnum¿¡ NULL, cbBuf¿¡ 0À» Àü´ÞÇÏ¿© ¹öÆÛ¸¦ Á¦°øÇÏÁö ¾Ê¾Ò´Âµ¥ ÀÌ·¸°Ô µÇ¸é EnumPrinters ÇÔ¼ö´Â ÇÊ¿äÇÑ ¹öÆÛ¾çÀ» cbNeed¿¡ ¸®ÅÏÇØ ÁØ´Ù. ¸®ÅÏµÈ Å©±â¸¸Å­ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í ´Ù½Ã EnumPrinters ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ·ÎÄà ÇÁ¸°ÅÍÀÇ ¸ñ·ÏÀ» Á¶»çÇÏ¿´´Ù.

¹öÆÛ Å©±â¸¦ 0À¸·Î Àü´ÞÇÔÀ¸·Î½á °íÀÇ·Î ¿¡·¯¸¦ À¯¹ß½ÃÄÑ ÇÊ¿äÇÑ ¹öÆÛ Å©±â¸¦ ¾Ë¾Æ³½ ÈÄ Á¶»çµÈ Å©±â¸¸Å­ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù. ¹°·Ð À̶§ ÇÊ¿äÇÑ Ä³½ºÆÃÀº ÇØ ÁÖ¾î¾ß Çϸç ÇÒ´çµÈ ¹öÆÛ¸¦ ´Ù½Ã Àü´ÞÇÔÀ¸·Î½á ¿øÇÏ´Â Á¤º¸¸¦ ȹµæÇÏ¿´´Ù. ÀÌ·± ½ÄÀ¸·Î »ç¿ë ¸Þ¸ð¸®°¡ °¡º¯ÀûÀÎ ÇÔ¼öµéÀº µÎ ¹ø È£ÃâÇÏ´Â °ÍÀÌ Á¤ÇüÈ­µÇ¾î Àִµ¥ ¾ÕÀ¸·Î ÀÌ·± ÇÔ¼öµéÀ» ¸î°³ ´õ º¸°Ô µÉ °ÍÀÌ¸ç º¸¾È °ü·Ã ÇÔ¼öµéµµ ÀÌ·± À¯ÇüÀÌ ¸¹À¸¹Ç·Î µ¿ÀÛ ¿ø¸®¿Í »ç¿ë ¹æ¹ýÀ» Àß ÀÍÇô µÎµµ·Ï ÇÏÀÚ.

³ª¸ÓÁö ¿­°Å ·çƾµµ Flags¿Í Level¸¸ ´Þ¶óÁú »Ó °ÅÀÇ µ¿ÀÏÇÏ´Ù. ½ÇÇà °á°ú´Â ½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ ÇÁ¸°ÅÍ ¸ñ·Ï¿¡ µû¶ó ´Þ¶óÁö´Âµ¥ ÇÊÀÚÀÇ ÄÄÇ»ÅÍ¿¡¼­´Â ´ÙÀ½°ú °°ÀÌ Ãâ·ÂµÇ¾ú´Ù. ³×Æ®¿÷¿¡ ¹°·Á Àֱ⠶§¹®¿¡ ¼³Ä¡µÈ ÇÁ¸°ÅÍ°¡ ¸¹´Ù.

 

 

Á¶»çµÈ Á¤º¸´Â for ·çÇÁ¸¦ µ¹¸ç cbReturn, Áï Á¶»çµÈ ¿ÀºêÁ§Æ® °³¼ö¸¸Å­ Ãâ·ÂµÇ´Âµ¥ À̶§ Á¶»çµÈ Á¤º¸ÀÇ ¾î¶² ¸â¹ö¸¦ ÂüÁ¶ÇÒ ¼ö Àִ°¡´Â LevelÀμö¿¡ µû¶ó ´Þ¶óÁø´Ù. ¾ó¸¶³ª Á¤º¸¸¦ »ó¼¼ÇÏ°Ô Á¶»çÇÒ °ÍÀΰ¡¿¡ µû¶ó ¸®ÅϵǴ ±¸Á¶Ã¼°¡ ´Þ¶óÁö¸ç µû¶ó¼­ Á¤º¸ÀÇ ¾çµµ ´Þ¶óÁö´Âµ¥ ÀÌ·¸°Ô ·¹º§À» ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï ÇØ ³õÀº ÀÌÀ¯´Â ÇÊ¿ä¿¡ µû¶ó ¿øÇÏ´Â Á¤º¸¸¸À» Á¶»çÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­ÀÌ´Ù.

ÇÁ¸°ÅÍ À̸§¸¸ ¾Ë¸é µÇ´Âµ¥ ±»ÀÌ ÇÁ¸°ÅÍ ¼³Á¤À̳ª º¸¾È ¼Ó¼º, ÇöÀç »óÅ¿¡ ´ëÇÑ Á¤º¸±îÁö °°ÀÌ Á¶»çÇÒ ÇÊ¿ä´Â ¾ø±â ¶§¹®ÀÌ´Ù. ¶ÇÇÑ ¾î¶² Á¤º¸´Â ½ÇÁ¦·Î ³×Æ®¿÷¿¡ Á¢¼ÓÇؾ߸¸ ¾Ë ¼ö ÀÖ´Â °Íµµ Àִµ¥ ÀÌ·± °æ¿ì´Â ±²ÀåÈ÷ ½Ã°£ÀÌ ¸¹ÀÌ °É¸± ¼öµµ ÀÖ´Ù. ±×·¡¼­ ¿øÇÏ´Â Á¤º¸ÀÇ Á¾·ù¸¦ ·¹º§·Î ¼±ÅÃÇÔÀ¸·Î½á ºÒÇÊ¿äÇÑ ½Ã°£À» ³¶ºñÇÏÁö ¾Êµµ·Ï ÇØ ³õÀº °ÍÀÌ´Ù. ´ÙÀ½ µµÇ¥´Â Level Àμö¿¡ µû¶ó Á¶»çµÇ´Â Á¤º¸¸¦ ¿ä¾àÇÑ °ÍÀÌ´Ù.

 

·¹º§

¼³¸í

1

°¡Àå ±âº»ÀûÀÎ Á¤º¸¸¦ Á¶»çÇØ ÁØ´Ù. ÇÁ¸°ÅÍÀÇ À̸§, ¼³¸í Á¤µµ°¡ ÀÖ´Ù.

2

°¡Àå »ó¼¼ÇÑ Á¤º¸°¡ Á¶»çµÈ´Ù. ¼­¹ö¸í, °øÀ¯¸í, Æ÷Æ®, µå¶óÀ̹ö, ¿ëÁö ¹æÇâ, ÇÁ¸°ÅÍÀÇ ¼Ó¼º, Ãâ·Â ¼Óµµ µî ¼ö½Ê°¡ÁöÀÇ Á¤º¸°¡ ÇѲ¨¹ø¿¡ Á¶»çµÈ´Ù.

3

ÇÁ¸°ÅÍÀÇ º¸¾È Á¤º¸¸¦ Á¶»çÇÑ´Ù. SECURITY_DESCRIPTOR ±¸Á¶Ã¼°¡ Æ÷ÇԵǾî ÀÖ´Ù.

4

ÇÁ¸°ÅÍ À̸§°ú Á¾·ù, ¼­¹ö¸í µîÀÇ ÀϹÝÀûÀÎ ÇÁ¸°ÅÍ Á¤º¸¸¦ Á¶»çÇÑ´Ù.

5

»ó¼¼ÇÑ ÇÁ¸°Å× Á¤º¸¸¦ Á¶»çÇÑ´Ù. À̸§, Æ÷Æ®, ¼Ó¼º, ŸÀӾƿô°ª µîÀÌ Æ÷ÇԵȴÙ.

6

¿ëÁö °É¸²À̳ª Åä³Ê ºÎÁ· µî ÇÁ¸°ÅÍÀÇ ÇöÀç »óŸ¦ Á¶»çÇÑ´Ù. 6¹ø ÀÌÈÄÀÇ ·¹º§Àº 95/98¿¡¼­´Â »ç¿ëÇÒ ¼ö ¾øÀ¸¸é NT/2000À̻󿡼­¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

7

µð·ºÅ丮 ¼­ºñ½º¿Í °ü·ÃµÈ ÇÁ¸°ÅÍ Á¤º¸¸¦ Á¶»çÇÑ´Ù.

8

ÇÁ¸°ÅÍÀÇ Àü¿ª ¼³Á¤¿¡ °üÇÑ ÃʱâÈ­ Á¤º¸

9

ÇÁ¸°ÅÍÀÇ »ç¿ëÀÚº° ¼³Á¤¿¡ °üÇÑ ÃʱâÈ­ Á¤º¸

 

°¢°¢ÀÇ PRINTER_INFO_* ±¸Á¶Ã¼°¡ ¾î¶»°Ô ¼±¾ðµÇ¾î ÀÖ°í °¢ ¸â¹öÀÇ Àǹ̰¡ ¹«¾ùÀΰ¡´Â º»¹®¿¡¼­ Á¤¸®ÇÏÁö ¾Ê±â·Î ÇÑ´Ù. ¸â¹ö°¡ ´Ü¼øÈ÷ ¸¹±â¸¸ ÇÑ Á¤µµ°¡ ¾Æ´Ï¶ó ¿î¿µÃ¼Á¦ ¹öÀü°ú »óȲ¿¡ µû¶ó Àǹ̰¡ ´Þ¶óÁö´Â °Íµéµµ Àֱ⠶§¹®¿¡ ÇÊ¿äÇÒ ¶§ ·¹ÆÛ·±½º¸¦ ã¾Æº¸±â ¹Ù¶õ´Ù. ¿©±â¼­´Â ´ëÇ¥ÀûÀ¸·Î °¡Àå ÀÚÁÖ »ç¿ëµÇ´Â PRINTER_INFO_2 ±¸Á¶Ã¼¸¦ ±¸°æ¸¸ ÇØ º¸µµ·Ï ÇÏÀÚ.

 

typedef struct _PRINTER_INFO_2 {

  LPTSTR    pServerName;

  LPTSTR    pPrinterName;

  LPTSTR    pShareName;

  LPTSTR    pPortName;

  LPTSTR    pDriverName;

  LPTSTR    pComment;

  LPTSTR    pLocation;

  LPDEVMODE pDevMode;

  LPTSTR    pSepFile;

  LPTSTR    pPrintProcessor;

  LPTSTR    pDatatype;

  LPTSTR    pParameters;

  PSECURITY_DESCRIPTOR pSecurityDescriptor;

  DWORD     Attributes;

  DWORD     Priority;

  DWORD     DefaultPriority;

  DWORD     StartTime;

  DWORD     UntilTime;

  DWORD     Status;

  DWORD     cJobs;

  DWORD     AveragePPM;

} PRINTER_INFO_2, *PPRINTER_INFO_2;

 

¸â¹ö°¡ Âü ¸¹Àºµ¥ À̸§¸¸ ºÁµµ ´ëÃæ ±× Àǹ̸¦ ÁüÀÛÇÒ ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ´Ù. EnumPrinters ÇÔ¼ö´Â ±×´ÙÁö ÀÚÁÖ »ç¿ëµÇ´Â ÇÔ¼ö°¡ ¾Æ´Ï¸ç ÀϹÝÀûÀÎ »ç¿ë¿¹´Â ¾Õ¿¡¼­ º¸ÀÎ ¿¹Á¦ Á¤µµ¸¸ ÀÌÇØÇÏ¸é ½Ç¹«¿¡ Àû¿ëÇϱâ ÃæºÐÇÏ´Ù.