Всем добрый день!
Мне необходимо получить состояние принтера, чтоб узнать, печатать на него или нет.
Для этого я использую способ описанный тут:
http://]http://sources.ru/vb/system/getting_status_printer.shtml
Мне возвращается PRINTER_INFO_2.Status = 0.
Я делаю на принтере паузу, и по идее структура должна вернуть значение Status иное, отличное от 0.
Но она по прежнему возвращает 0.
Мож я что-то не так делаю?
Открывал лоток с бумагой, чтоб ошибка выдалась - и снова возвращается 0.
Вот мой код:
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