Опрос принтера

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SKYS
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 21.09.2007 (Пт) 8:31
Откуда: г.Кемерово

Опрос принтера

Сообщение SKYS » 02.11.2007 (Пт) 8:25

Хочу попробовать опрашивать сетевой принтер .
Идея токова

Кидаем пакет определенного содержания на принтер
Получаем с него пакет
анализируем пакет делаем выводы


так вот вопросы

1. Кто нить знает какой пакет нуна сформировать
принтер xerox 3500
опрос предлагается производить через winsock


Или подскажите как можно просмотреть пакеты которые идут на порт и с него.
Хорошо когда не знаеш да еще забудеш !!!!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 02.11.2007 (Пт) 13:07

может этого достаточно?
Вложения
Jobs.rar
(9.17 Кб) Скачиваний: 76

SKYS
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 21.09.2007 (Пт) 8:31
Откуда: г.Кемерово

Сообщение SKYS » 06.11.2007 (Вт) 10:10

спс
Бум разбираться

тока чет она не работает при нажатии на кнопру job ниче не происходит
Хорошо когда не знаеш да еще забудеш !!!!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.11.2007 (Вт) 13:35

если есть задания на принтере, то покажет. если нет, то ничего.

SKYS
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 21.09.2007 (Пт) 8:31
Откуда: г.Кемерово

Сообщение SKYS » 07.11.2007 (Ср) 5:41

А если ошибка (что мне и необхрдимо) допустим что в принтере замялась бумага а подлые юзвери не говорят об этом . Я хочу написать прогу которая будет мониторить сетевые принтеры и сообщать о наличии ошибки .
Хорошо когда не знаеш да еще забудеш !!!!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.11.2007 (Ср) 11:21

значит отправленные задания будут висеть в спулере печати.
если твой принтер имеет сетевой интерфейс и его драйвер позволяет получать дополнительную информацию, то обратись к сайту производителя данного принтера, возможно там найдешь что-то полезное.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.11.2007 (Ср) 11:53

Вот здесь все подробненько:http://www.microsoft.com/technet/scriptcenter/guide/sas_prn_lkqw.mspx?mfr=true

Опрос установленных принтеров на компе через WMI (обрати внимание на Status и State):

Код: Выделить всё
' PrinterWMI.vbs
' Sample VBScript to interrogate Printer properties with WMI
' Author Guy Thomas http://computerperformance.co.uk/
' Version 2.3 - December 2005
' --------------------------------------------------------------'
Option Explicit
Dim objWMIService, objItem, colItems, strComputer, intPrinters

strComputer ="."
intPrinters = 1

' --------------------------------------------
' Pure WMI Section
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery _
("SELECT * FROM Win32_Printer")

Call Wait() ' Goto Sub Routine at the end

' On Error Resume Next
For Each objItem In colItems
WScript.Echo "Printers on " _
& objItem.name & ", Printer Number: " & intPrinters & VbCr & _
"====================================" & VbCr & _
"Availability: " & objItem.Availability & VbCr & _
"Description: " & objItem.Description & VbCr & _
"Printer: " & objItem.DeviceID & VbCr & _
"Driver Name: " & objItem.DriverName & VbCr & _
"Port Name: " & objItem.PortName & VbCr & _
"Printer State: " & objItem.PrinterState & VbCr & _
"Printer Status: " & objItem.PrinterStatus & VbCr & _
"PrintJobDataType: " & objItem.PrintJobDataType & VbCr & _
"Print Processor: " & objItem.PrintProcessor & VbCr & _
"Spool Enabled: " & objItem.SpoolEnabled & VbCr & _
"Separator File: " & objItem.SeparatorFile & VbCr & _
"Queued: " & objItem.Queued & VbCr & _
"Status: " & objItem.Status & VbCr & _
"StatusInfo: " & objItem.StatusInfo & VbCr & _
"Published: " & objItem.Published & VbCr & _
"Shared: " & objItem.Shared & VbCr & _
"ShareName: " & objItem.ShareName & VbCr & _
"Direct: " & objItem.Direct & VbCr & _
"Location: " & objItem.Location & VbCr & _
"Priority: " & objItem.Priority & VbCr & _
"Work Offline: " & objItem.WorkOffline & VbCr & _
"Horizontal Res: " & objItem.HorizontalResolution & VbCr & _
"Vertical Res: " & objItem.VerticalResolution & VbCr & _
""
intPrinters = intPrinters + 1
Next

sub Wait()
If strComputer = "." then
strComputer = "Local Host"
else strComputer = strComputer
end if

WScript.Echo "Wait 2 mins for " & strComputer _
& " to enumerate printers"

End Sub

WScript.Quit

' End of Sample Printer VBScript



через события конкретного принтера:

Код: Выделить всё
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService. _
ExecNotificationQuery("SELECT * FROM __instancemodificationevent " _
& "WITHIN 30 WHERE TargetInstance ISA 'Win32_Printer'")
i = 0
Do While i = 0
Set objPrinter = colPrinters.NextEvent
If objPrinter.TargetInstance.PrinterStatus <> _
objPrinter.PreviousInstance.PrinterStatus Then
Select Case objPrinter.TargetInstance.PrinterStatus
Case 1 strCurrentState = "Other"
Case 2 strCurrentState = "Unknown"
Case 3 strCurrentState = "Idle"
Case 4 strCurrentState = "Printing"
Case 5 strCurrentState = "Warming Up"
End Select
Select Case objPrinter.PreviousInstance.PrinterStatus
Case 1 strPreviousState = "Other"
Case 2 strPreviousState = "Unknown"
Case 3 strPreviousState = "Idle"
Case 4 strPreviousState = "Printing"
Case 5 strPreviousState = "Warming Up"
End Select
Wscript.Echo objPrinter.TargetInstance.Name _
& " is " & strCurrentState _
& ". The printer previously was " & strPreviousState & "."
End If
Loop
Последний раз редактировалось Konst_One 07.11.2007 (Ср) 12:02, всего редактировалось 2 раз(а).

SKYS
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 21.09.2007 (Пт) 8:31
Откуда: г.Кемерово

Сообщение SKYS » 07.11.2007 (Ср) 11:59

Чет запамятовал как vbscript запустить
Помнится надо просто в блокноте код написать ....
а дальше...???
Хорошо когда не знаеш да еще забудеш !!!!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 07.11.2007 (Ср) 12:54

а дальше сотворить файл с расширением VBS и запустить
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 46

    TopList