printeri pod WIN32

5 отговора 228 прегледа
#1

printeri pod WIN32

Kak da razbera dali printera e wkljuchen i swurzan?
Ima interrupt 17h pod DOS, no C Buildera zabiwa jako ako go
izpolzwam. Taka stawa i kato rabotja s portowete directno.
Maj njama neshto takowa w Win32 API.
Ako njakoj znae, da kaje.
Ima status na print job-a, ama az ne iskam da pochwam
print job ako nema printer.

Отговор
в отговор на naki #2

Re: printeri pod WIN32

На какъв език пишеш???

Отговор
в отговор на naki #3

Re: printeri pod WIN32

Тъй като не знам на какво пишеш можеш да използваш API функцията
BOOL GetPrinter(
HANDLE hPrinter, // handle към принтера
DWORD Level, // номер на стуктура която ще използваш
LPBYTE pPrinter, // структура съдържаща информация към принтера
DWORD cbBuf, // размер на стуктурата след като е запълнена
LPDWORD pcbNeeded // размер на структурата в байтове
);

Съветвам те да използваш стуктирата PRINTER_INFO_2 (това става като зададеш на Level - 2, а на pPrinter променлива от тип PRINTER_INFO_2). Тя съдържа цялата информация за принера (име, драйвер, порт и т.н.). За твоя случай PRINTER_INFO_2 има поле Status, от където можеш да разбераш състоянието на принтера! Успех!

Отговор
в отговор на Alfa #4

Re: printeri pod WIN32

Езика е С++ (Builder) на Борланд.

Отговор
в отговор на ShadowM #5

Re: printeri pod WIN32

Грешиш! Уиндоус е боза, и не дава статус, ако няма принт job в момента на поискването на статуса, т.е. дава че има принтер. При почване на печат обаче ако принтера липсва естествено възниква грешка.

Отговор
в отговор на naki #6

Re: printeri pod WIN32

Mojesh i da otovirsh napravo port-a s ::CreateFile(...) i ime na file-a "LPT1:" ili koito port polzvash. Ne znam kakva e komunikaciqta printer-PC na nisko nivo - samo ti davam ideq kak da polzvash napravo port-a. Posle mojesh da izpolzvash ::WaitCommEvent(..) i drugite comm funkcii.

Uspeh

Отговор