注:网络打印void hEnumPrinter(void)
{
int i,j;
HANDLE lpHandle;
char strStr[255];
DWORD dwWritten; memset(strStr,0,255);
memset(strStr,100,20);
PRINTDLG pd; pd.lStructSize = (DWORD) sizeof(PRINTDLG);
//获得设备缺省信息
if (AfxGetApp()->GetPrinterDeviceDefaults(&pd))
{
// 锁定内存
LPDEVNAMES lpDevNames;
LPTSTR lpszDriverName, lpszDeviceName, lpszPortName;
// Unlock memory handle.
lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);
lpszDriverName = (LPTSTR )lpDevNames + lpDevNames->wDriverOffset;
lpszDeviceName = (LPTSTR )lpDevNames + lpDevNames->wDeviceOffset;
lpszPortName = (LPTSTR )lpDevNames + lpDevNames->wOutputOffset;
if(OpenPrinter(lpszDeviceName,&lpHandle,NULL)!=0)
{
DOC_INFO_1 Info;//文档信息
memset(&Info, 0, sizeof(Info));
Info.pDocName = "My PrintJob";//文档名(which is shown in the PrintManager)
Info.pOutputFile = NULL;//不须要向一个文件写,设为NULL
Info.pDatatype = "RAW";//数据以RAW格式发送(Win9x和WinNT都支持RAW和EMF格式,WinNT还支持TEXT格式 if(!StartDocPrinter(lpHandle, 1, (LPBYTE)&Info))//文档开始
goto ll; // 告诉打印机开始新页
StartPagePrinter(lpHandle); // 向打印机写数据
if(!WritePrinter(lpHandle, strStr, 255, &dwWritten))
{
//当发送数据时出现错误
//用最后的错误指出发生了什么错误
goto ll;
}
EndPagePrinter(lpHandle);//告诉打印机已经完成当前页
if(!EndDocPrinter(lpHandle))//文档结束
goto ll;
}ll:
ClosePrinter(lpHandle);
GlobalUnlock(lpDevNames); }
}
{
int i,j;
HANDLE lpHandle;
char strStr[255];
DWORD dwWritten; memset(strStr,0,255);
memset(strStr,100,20);
PRINTDLG pd; pd.lStructSize = (DWORD) sizeof(PRINTDLG);
//获得设备缺省信息
if (AfxGetApp()->GetPrinterDeviceDefaults(&pd))
{
// 锁定内存
LPDEVNAMES lpDevNames;
LPTSTR lpszDriverName, lpszDeviceName, lpszPortName;
// Unlock memory handle.
lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);
lpszDriverName = (LPTSTR )lpDevNames + lpDevNames->wDriverOffset;
lpszDeviceName = (LPTSTR )lpDevNames + lpDevNames->wDeviceOffset;
lpszPortName = (LPTSTR )lpDevNames + lpDevNames->wOutputOffset;
if(OpenPrinter(lpszDeviceName,&lpHandle,NULL)!=0)
{
DOC_INFO_1 Info;//文档信息
memset(&Info, 0, sizeof(Info));
Info.pDocName = "My PrintJob";//文档名(which is shown in the PrintManager)
Info.pOutputFile = NULL;//不须要向一个文件写,设为NULL
Info.pDatatype = "RAW";//数据以RAW格式发送(Win9x和WinNT都支持RAW和EMF格式,WinNT还支持TEXT格式 if(!StartDocPrinter(lpHandle, 1, (LPBYTE)&Info))//文档开始
goto ll; // 告诉打印机开始新页
StartPagePrinter(lpHandle); // 向打印机写数据
if(!WritePrinter(lpHandle, strStr, 255, &dwWritten))
{
//当发送数据时出现错误
//用最后的错误指出发生了什么错误
goto ll;
}
EndPagePrinter(lpHandle);//告诉打印机已经完成当前页
if(!EndDocPrinter(lpHandle))//文档结束
goto ll;
}ll:
ClosePrinter(lpHandle);
GlobalUnlock(lpDevNames); }
}
BOOL RawDataToPrinter(LPSTR szPrinterName, LPBYTE lpData, DWORD dwCount)
{
HANDLE hPrinter;
DOC_INFO_1 DocInfo;
DWORD dwJob;
DWORD dwBytesWritten; // Need a handle to the printer.
if( ! OpenPrinter( szPrinterName, &hPrinter, NULL ) )
return FALSE; // Fill in the structure with info about this "document."
DocInfo.pDocName = "My Document";
DocInfo.pOutputFile = NULL;
DocInfo.pDatatype = "RAW";
// Inform the spooler the document is beginning.
if( (dwJob = StartDocPrinter( hPrinter, 1, (LPBYTE)&DocInfo )) == 0 )
{
ClosePrinter( hPrinter );
return FALSE;
}
// Start a page.
if( ! StartPagePrinter( hPrinter ) )
{
EndDocPrinter( hPrinter );
ClosePrinter( hPrinter );
return FALSE;
}
// Send the data to the printer.
if( ! WritePrinter( hPrinter, lpData, dwCount, &dwBytesWritten ) )
{
EndPagePrinter( hPrinter );
EndDocPrinter( hPrinter );
ClosePrinter( hPrinter );
return FALSE;
}
// End the page.
if( ! EndPagePrinter( hPrinter ) )
{
EndDocPrinter( hPrinter );
ClosePrinter( hPrinter );
return FALSE;
}
// Inform the spooler that the document is ending.
if( ! EndDocPrinter( hPrinter ) )
{
ClosePrinter( hPrinter );
return FALSE;
}
// Tidy up the printer handle.
ClosePrinter( hPrinter );
// Check to see if correct number of bytes were written.
if( dwBytesWritten != dwCount )
return FALSE;
return TRUE;
}void PrintAA(void)
{
PRINTDLG pd; pd.lStructSize = (DWORD) sizeof(PRINTDLG);
char str[255];
memset(str,0,255);
strcpy(str,"evnt 1111111111111,1111111111,11111111111,111111111\n"); if (AfxGetApp()->GetPrinterDeviceDefaults(&pd))
{
LPDEVNAMES lpDevNames;
LPTSTR lpszDriverName, lpszDeviceName, lpszPortName;
lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);
lpszDriverName = (LPTSTR )lpDevNames + lpDevNames->wDriverOffset;
lpszDeviceName = (LPTSTR )lpDevNames + lpDevNames->wDeviceOffset;
lpszPortName = (LPTSTR )lpDevNames + lpDevNames->wOutputOffset;
RawDataToPrinter(lpszDeviceName,(unsigned char*)str,sizeof(str));
GlobalUnlock(lpDevNames);
}}问题是,打印机中有文档,但不打印,打印机是HP LASERJET 1000,是不是字符串太短