#include "WINSPOOL.H"
BOOL SetSystemDefaultPrinter(LPTSTR pPrinterName)
{
BOOL bFlag = FALSE;
LONG lResult = 0;
DWORD dwNeeded = 0;
LPTSTR pBuffer = NULL;
HANDLE hPrinter = NULL;
OSVERSIONINFO stOsvInfo = {0};
PRINTER_INFO_2* pstPrintInfo2 = NULL;
stOsvInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&stOsvInfo);
if(!pPrinterName)
{
return FALSE;
}
if(stOsvInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) //Win9x
{
// Open this printer so we can get information about it
bFlag = OpenPrinter(pPrinterName, &hPrinter, NULL);
if(!bFlag || hPrinter==NULL)
{
return FALSE;
}
GetPrinter(hPrinter, 2, 0, 0, &dwNeeded);
if(dwNeeded == 0)
{
ClosePrinter(hPrinter);
return FALSE;
}
pstPrintInfo2 = (PRINTER_INFO_2 *)GlobalAlloc(GPTR, dwNeeded);
if(pstPrintInfo2 == NULL)
{
ClosePrinter(hPrinter);
return FALSE;
}
bFlag = GetPrinter(hPrinter, 2, (LPBYTE)pstPrintInfo2, dwNeeded, &dwNeeded);
if(!bFlag)
{
ClosePrinter(hPrinter);
GlobalFree(pstPrintInfo2);
return FALSE;
}
// Set default printer attribute for this printer...
pstPrintInfo2->Attributes |= PRINTER_ATTRIBUTE_DEFAULT;
bFlag = SetPrinter(hPrinter, 2, (LPBYTE)pstPrintInfo2, 0);
if(!bFlag)
{
ClosePrinter(hPrinter);
GlobalFree(pstPrintInfo2);
return FALSE;
}
- 1
- 2
- 3
- 4
- 5
- 6
前往页