to add with Laxmi,
I wrote(probably, cant recall, whether I wrote it or downloaded it from any site) to get all the list of printers
int getAllPrinter(HWND hList)
{
int i,j;
wchar_t *pPrInfo4=NULL;
wchar_t *pPrInfoP=NULL;
wchar_t *pStr =NULL;
DWORD dwNeeded = 0;
DWORD dwReturned = 0;
DWORD dwReturnedP = 0;
DWORD dwBytes = 0;
wchar_t *strStr;
wchar_t strStrP[257];
int pos;
EnumPrinters( PRINTER_ENUM_LOCAL,NULL,1,NULL,dwBytes,&dwNeeded,&dwReturned);
if( dwNeeded != 0)
{ pPrInfo4 = new wchar_t [dwNeeded+128];
dwBytes = dwNeeded+128;
EnumPrinters( PRINTER_ENUM_LOCAL,NULL,1,(LPBYTE)pPrInfo4,dwBytes,&dwNeeded,&dwReturned);
for( i=0; i<(int)dwReturned; i++ )
{
strStr = (wchar_t*)((PRINTER_INFO_1*)pPrInfo4)[i].pName;
pos=ListBox_FindString(hList,0,strStr);
if(pos==LB_ERR)
{
ListBox_AddString(hList,strStr);
}
}
delete pPrInfo4;
pPrInfo4 = NULL;
}
pPrInfo4=NULL;
dwNeeded = 0;
dwReturned = 0;
dwBytes = 0;
EnumPrinters( PRINTER_ENUM_LOCAL | PRINTER_ENUM_NETWORK,NULL,1,NULL,dwBytes,&dwNeeded,&dwReturned);
if( dwNeeded != 0)
{
pPrInfo4 = new wchar_t [dwNeeded+128];
dwBytes = dwNeeded+128;
EnumPrinters( PRINTER_ENUM_LOCAL | PRINTER_ENUM_NETWORK,NULL,1,(LPBYTE)pPrInfo4,dwBytes,&dwNeeded, &dwReturned);
for( i=0; i<(int)dwReturned; i++ )
{
strStr = (wchar_t*)((PRINTER_INFO_1*)pPrInfo4)[i].pName;
pos=ListBox_FindString(hList,0,strStr);
if(pos==LB_ERR)
{
ListBox_AddString(hList,strStr);
}
}
delete pPrInfo4;
pPrInfo4 = NULL;
}
pPrInfo4=NULL;
dwNeeded = 0;
dwReturned = 0;
dwBytes = 0;
EnumPrinters( PRINTER_ENUM_REMOTE,NULL,1,NULL,dwBytes,&dwNeeded,&dwReturned);
if( dwNeeded != 0)
{
pPrInfo4 = new wchar_t [dwNeeded+128];
dwBytes = dwNeeded+128;
EnumPrinters( PRINTER_ENUM_REMOTE, NULL, 1, (LPBYTE) pPrInfo4, dwBytes, &dwNeeded, &dwReturned);
for( i=0; i<(int)dwReturned; i++ )
{
wcscpy(strStr ,((PRINTER_INFO_1*)pPrInfo4)[i].pName);
if( -1 == strposw(strStr,L"!!",0))
{
pos=ListBox_FindString(hList,0,strStr);
if(pos==LB_ERR)
{
ListBox_AddString(hList,strStr);
}
}
else
{
pPrInfoP = NULL;
dwNeeded = 0;
dwReturnedP= 0;
dwBytes = 0;
pStr = new wchar_t [wcslen(strStr)+1];
wcscpy(pStr,strStr);
EnumPrinters(PRINTER_ENUM_NAME,pStr,1,NULL, dwBytes,&dwNeeded, &dwReturnedP);
if( dwNeeded != 0)
{
pPrInfoP = new wchar_t [dwNeeded+128];
dwBytes = dwNeeded+128;
EnumPrinters( PRINTER_ENUM_NAME, pStr, 1, (LPBYTE)pPrInfoP, dwBytes, &dwNeeded, &dwReturnedP);
for( j=0; j<(int)dwReturnedP; j++ )
{
wcscpy(strStrP,((PRINTER_INFO_1*)pPrInfoP)[j].pName);
pos=ListBox_FindString(hList,0,strStr);
if(pos==LB_ERR)
{
ListBox_AddString(hList,strStr);
}
}
delete pStr;
delete pPrInfoP;
pPrInfoP = NULL;
}
}
}
delete pPrInfo4;
pPrInfo4 = NULL;
}
return true; }