vc将文件送入指定的打印机(根据打印机名)

如下:

 

BOOL PTKT_SendFiletoPrinter(LPCSTR pPrinterName, LPCSTR pFilePath){ if(pPrinterName == NULL || pFilePath == NULL) return FALSE; DWORD tFileSize = 0; DWORD tReadFileSize = 0; char * tBuf = NULL; HANDLE tPrinter = NULL; // open the file and read data from the file HANDLE tFile = CreateFile(pFilePath, GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if(tFile == INVALID_HANDLE_VALUE){ return FALSE; } tFileSize = GetFileSize(tFile,NULL); if(tFileSize == 0xFFFFFFFF){ CloseHandle(tFile); return FALSE; } tBuf = (char *) malloc(tFileSize); if(tBuf == NULL){ CloseHandle(tFile); return FALSE; } memset(tBuf, 0x0, tFileSize); if(!ReadFile(tFile,(LPVOID)tBuf,tFileSize,&tReadFileSize,NULL)){ CloseHandle(tFile); free(tBuf); return FALSE; } if(tFileSize != tReadFileSize){ CloseHandle(tFile); free(tBuf); return FALSE; } CloseHandle(tFile); // open the printer and print data if(!OpenPrinter((LPSTR)pPrinterName,&tPrinter,NULL)){ free(tBuf); return FALSE; } if(tPrinter == NULL){ free(tBuf); return FALSE; } DOC_INFO_1 tDocInfo1; memset(&tDocInfo1,0,sizeof(tDocInfo1)); tDocInfo1.pDocName = "task1"; tDocInfo1.pOutputFile = NULL; tDocInfo1.pDatatype = "RAW"; if(!StartDocPrinter(tPrinter, 1,(LPBYTE)&tDocInfo1)){ free(tBuf); CloseHandle(tPrinter); return FALSE; } StartPagePrinter(tPrinter); if(!WritePrinter(tPrinter,tBuf,tFileSize,&tReadFileSize)){ free(tBuf); CloseHandle(tPrinter); return FALSE; } if(tFileSize != tReadFileSize){ free(tBuf); CloseHandle(tPrinter); return FALSE; } free(tBuf); EndPagePrinter(tPrinter); if(!EndDocPrinter(tPrinter)){ CloseHandle(tPrinter); return FALSE; } CloseHandle(tPrinter); return TRUE; }

你可能感兴趣的:(File,null)