Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по работе с принтером из VB / 2 сообщений из 2, страница 1 из 1
17.10.2007, 15:14
    #34875329
Mix
Mix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по работе с принтером из VB
Всем добрый день!

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

Для этого я использую способ описанный тут:
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
19.10.2007, 16:00
    #34881421
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по работе с принтером из VB
А если отрубить питание принтера?
Теперь что выдает?

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


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