powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / GetPrinter выдает ошибку
14 сообщений из 14, страница 1 из 1
GetPrinter выдает ошибку
    #32683055
filatova helen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите найти ошибку.
DECLARE INTEGER OpenPrinter IN winspool.drv;
STRING pPrinterName,;
INTEGER @ phPrinter,;
STRING pDefault
DECLARE INTEGER GetPrinter IN winspool.drv AS GetPrinterA;
INTEGER hPrinter, INTEGER Lvl, STRING @pPrinter,;
INTEGER cbBuf, INTEGER @pcbNeeded
*Определяем имя принтера по умолчанию это -cPrinter
IF OpenPrinter(cPrinter, @hPrinter, lcPrnDefaults) = 0
? "Error opening printer [" + cPrinter + "]"
RETURN
ENDIF
*Этот участок кода выполняется нормально а вот дальше
lnBufsize = 4096 && provide buffer of sufficient size
lcPrnInfo = Repli(Chr(0), lnBufsize)
lnResult = GetPrinterA(hPrinter,2, @lcPrnInfo, lnBufsize, @lnBufsize)
И вот тут возникает ошибка lnResult=0
Где не правильно?
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683161
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The OpenPrinter function retrieves a handle to the specified printer or print server or other types of handles in the print subsystem.
так что как минимум нужно испольвать ее результат при вызове функции getprinter и setprinter (она должна возвратить hPrinter) хотя может я и не прав
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683166
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т е hPrinter=OpenPrinter(cPrinter, @hPrinter, lcPrnDefaults)
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683238
MarinaVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вообще-то OpenPrinter это BOOL функция
Код: plaintext
If the function succeeds, the return value is TRUE.
А вот хэндл
Код: plaintext
1.
phPrinter
Points to a variable that receives the handle identifying the opened printer or print server object. 

Так что тут все правильно, единственно, что не надо забывать закрывать хэндл принтера по ClosePrinter(hPrinter)

И еще, если принтер сетевой под win2k, то иногда он не возвращает имя а только путь, поэтому имя принтера должно быть ТАК КАК НАПИСАНО в папке принтеры и никаких тут "\\SERVER\PRINTER" - это не пройдет, так де если в имени принтера есть русские буквы
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683330
filatova helen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо все получилось. Но теперь такой вопрос как мне получить значение статуса принтера.
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683337
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BOOL GetPrinter(
HANDLE hPrinter, // handle to printer
DWORD Level, // information level
LPBYTE *pPrinter, // printer information buffer
DWORD cbBuf, // size of buffer
LPDWORD pcbNeeded // bytes received or required
);
Parameters
hPrinter
[in] Handle to the printer for which the function retrieves information. Use the OpenPrinter or AddPrinter function to retrieve a printer handle. Level
[in] Specifies the level or type of structure that the function stores into the buffer pointed to by pPrinter.
Windows 95/98/Me: This value can be 1, 2, or 5.

Windows NT/2000/XP: This value can be 1, 2, 3, 4, 5, 6, 7, 8 or 9.

pPrinter
[out] Pointer to a buffer that receives a structure containing information about the specified printer. The buffer must be large enough to receive the structure and any strings or other data to which the structure members point. If the buffer is too small, the pcbNeeded parameter returns the required buffer size.
The type of structure is determined by the value of Level.
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683347
MarinaVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2filatova helen

Если выдается имя принтера типа "\\SERVER\PRINER" то попробуй
cPrinter=STRCONV("\\SERVER\PRTINTER",5)+CHR(0)

Функции OpenPrinter и GetPrinter переведи в UNICODE т.е.
OpenPrinterW и GetPrinterW соответсвенно. И еще через GetLastError проверь выдаваемыю ошибку, если ошибка 122 то по возврату переменной lnBufsize увелич размер буфера и вообще сначала вызови функцию с нулевым размером буфера, а потом когда узнаешь его размер - тогда подкорректируешь и попробуешь снова.
Я сама сначала налетела на эти грабли
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683374
MarinaVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2filatova helen

Статус принтере лучше полчать с окончания стуркутры SubStr(lcPrnInfo,Len(lcPrnInfo)-6,2) и перести ее в число, заменить можно через STUFF и отправить полученную структуру в SetPrinter.
Есло конечно размер структуры равен значению переменной возврашаемой размер из GetPrinter
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683379
filatova helen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я не совсем корректно поставила вопрос . Я получила ссылку на структуру PRINTER_INFO_2 . Теперь мне надо из этой структуры вытащить только лишь статус принтера. Как это правильно сделать?
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683398
MarinaVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что непонятно описала ?
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683531
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2elena
а у вас почтовый ящик есть
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683736
filatova helen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да есть.
helen@spez.com.ua
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683805
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто я не обещаю но если получеться чего я пришлю
сами понимаете проблема не очень легкая
...
Рейтинг: 0 / 0
GetPrinter выдает ошибку
    #32683821
filatova helen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заранее спасибо.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / GetPrinter выдает ошибку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]