Печать PRN файлов
От: Riziy  
Дата: 23.04.01 12:41
Оценка:
Как известно, в Windows можно "печатать в файл". При этом создаётся двоичный файл, который можно потом напечатать
(например, командой DOS
copy /b fff.prn prn
)
Как напечатать такой файл, если есть сетевой принтер, а рабочая станция — Windows NT ?
В Windows 95/98 всё просто — для DOS переназначается порт PRN (LPT1, LPT2) на сетевой принтер (\\PRINTSERVER\Printer) и дальше с DOS
copy /b fff.prn prn
В NT этого нет.

Есть ли какой-либо стандартный путь для NT ?
Как можно сделать программу, которая будет отправлять двоичный файл прямо на сетевой принтер, без рисования в device context ( DC )?
Re: Печать PRN файлов
От: av Россия  
Дата: 27.04.01 18:50
Оценка:
>Как можно сделать программу, которая будет отправлять двоичный файл прямо на сетевой принтер, без рисования в device context ( DC )?

Попробуй (точно не знаю) CreateFile ("\\\\MachineName\\PrinerName", ....) (дальше см.MSDN)
И после этого писать в него как в файл
Re: Печать PRN файлов
От: VLK  
Дата: 27.04.01 19:50
Оценка:
Здравствуйте Riziy, 23.04.2001 06:41:46 вы писали:

>Как напечатать такой файл, если есть сетевой принтер, а рабочая станция — Windows NT ?


>Как можно сделать программу, которая будет отправлять двоичный файл прямо на сетевой принтер, без рисования в device context ( DC )?


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, (LPSTR)&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;
}

С наилучшими,
Владимир.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.