powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по работе с принтером из VB
2 сообщений из 2, страница 1 из 1
Вопрос по работе с принтером из VB
    #34875329
Фотография Mix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый день!

Мне необходимо получить состояние принтера, чтоб узнать, печатать на него или нет.

Для этого я использую способ описанный тут:
http://]http://sources.ru/vb/system/getting_status_printer.shtml

Мне возвращается PRINTER_INFO_2.Status = 0.
Я делаю на принтере паузу, и по идее структура должна вернуть значение Status иное, отличное от 0.

Но она по прежнему возвращает 0.

Мож я что-то не так делаю?
Открывал лоток с бумагой, чтоб ошибка выдалась - и снова возвращается 0.


Вот мой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
Public Function GetPrinterStatus(sPrinterName As String, sPrinterStatus As String)
    '============================================================================
    '<Function>
    '   GetPrinterStatus - Функция получения состояния принтера
    '</Function>
    '<IN>
    '   sPrinterName - Наименование принтера
    '</IN>
    '<OUT>
    '   PrintShablon - Признак OK(0) или нет (1)
    '   sPrinterStatus - Наименование состояния принтера
    '</OUT>
    '============================================================================

    Dim lret As Long
    Dim pDef As PRINTER_DEFAULTS
    Dim mhPrinter
    Dim SizeNeeded As Long
    Dim buffer() As Long
    Dim mPRINTER_INFO_2 As PRINTER_INFO_2, mPrinter_Status As Printer_Status
    Dim mElement
    
    GetPrinterStatus =  0 
    sPrinterStatus = ""
    
    'Открываем принтер
    lret = OpenPrinter(sPrinterName, mhPrinter, pDef)
    
    'Формируем массив данных
    ReDim Preserve buffer( 0  To  1 ) As Long
    lret = GetPrinterApi(mhPrinter, Index, buffer( 0 ), UBound(buffer), SizeNeeded)
    
    ReDim Preserve buffer( 0  To (SizeNeeded /  4 ) +  3 ) As Long
    lret = GetPrinterApi(mhPrinter, Index, buffer( 0 ), UBound(buffer) *  4 , SizeNeeded)


    'По полученному массиву формируем структуру
    With mPRINTER_INFO_2 '\\ Эта переменная типа PRINTER_INFO_2
       .pServerName = StringFromPointer(buffer( 0 ),  1024 )
       .pPrinterName = StringFromPointer(buffer( 1 ),  1024 )
       .pShareName = StringFromPointer(buffer( 2 ),  1024 )
       .pPortName = StringFromPointer(buffer( 3 ),  1024 )
       .pDriverName = StringFromPointer(buffer( 4 ),  1024 )
       .pComment = StringFromPointer(buffer( 5 ),  1024 )
       .pLocation = StringFromPointer(buffer( 6 ),  1024 )
       .pDevMode = buffer( 7 )
       .pSepFile = StringFromPointer(buffer( 8 ),  1024 )
       .pPrintProcessor = StringFromPointer(buffer( 9 ),  1024 )
       .pDatatype = StringFromPointer(buffer( 10 ),  1024 )
       .pParameters = StringFromPointer(buffer( 11 ),  1024 )
       .pSecurityDescriptor = buffer( 12 )
       .Attributes = buffer( 13 )
       .Priority = buffer( 14 )
       .DefaultPriority = buffer( 15 )
       .StartTime = buffer( 16 )
       .UntilTime = buffer( 17 )
       .Status = buffer( 18 )
       .JobsCount = buffer( 19 )
       .AveragePPM = buffer( 20 )
    End With

    'Закрываем принтер
    ClosePrinter mhPrinter
   
    mPrinter_Status = mPRINTER_INFO_2.Status

   sPrinterStatus = mPrinter_Status

   If mPRINTER_INFO_2.Status<> 0  Then GetPrinterStatus =  1 

End Function
...
Рейтинг: 0 / 0
Вопрос по работе с принтером из VB
    #34881421
Belkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если отрубить питание принтера?
Теперь что выдает?

-----------
Андрей.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по работе с принтером из VB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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