Добрый день, делаю скрипт который бы показывал информацию о сетевых принтерах(основная цель уровень тонера) И вот после поисков и танцев насобирал вот такой скрипт:
у меня есть список принтеров в екселе первый столбик ip адреса, 2-ой название и третий где стоит, вот всё показывает хорошо, но только для чёрно белых принтеров. и вывод каждый принтер в отдельный msgbox
Итак вопрос
Кто нибудь вообще занимался этим, можно ли вывести весь массив в один msgbox, и если кто знает как тоже самое сделать с цветными принтерами xerox.
Код:
#include <string.au3>
#include <Excel.au3>
#include <Array.au3>
$sFilePath1 = @ScriptDir & "\printer.xls"
$oExcel = _ExcelBookOpen($sFilePath1, 0)
If @error = 1 Then
MsgBox(16, "Ошибка!", "Невозможно создать объект Excel")
Exit
ElseIf @error = 2 Then
MsgBox(16, "Ошибка!", "Файл " & $FilePath & " не существует")
Exit
EndIf
$oExcel1 = _ExcelBookAttach($sFilePath1)
$aStr = _ExcelReadSheetToArray($oExcel1)
$RowCnt = $aStr [0] [0]
$aArray = _ExcelReadArray($oExcel, 2, 1, $RowCnt, 1)
$aArray4 = _ExcelReadArray($oExcel, 1, 2, $RowCnt, 1)
$aArray5 = _ExcelReadArray($oExcel, 1, 3, $RowCnt, 1)
$aArray2 = _ArrayToString($aArray)
$aArray3 = StringSplit($aArray2, '|')
Dim $IP_ADDRESS
For $i = 1 to UBound($aArray3)-2
Dim $IP_ADDRESS
$IP_ADDRESS = $aArray3[$i]
$printLoc = $aArray5[$i]
$printName = $aArray4[$i]
$pin = Ping($IP_ADDRESS,250)
If $pin Then
$PORT = "161"
$TONER_MAX = "0x302B02010004067075626C6963A01E0202014402010002010030123010060C2B060102012B0B01010801010500"
$TONER_MAX_RESULT_LENGHT = 4
$TONER_CURRENT = "0x302B02010004067075626C6963A01E0202014402010002010030123010060C2B060102012B0B01010901010500"
$TONER_CURRENT_RESULT_LENGHT = 4
$result_max_toner=getsnmp($IP_ADDRESS,$TONER_MAX,$TONER_MAX_RESULT_LENGHT)
$result_current_toner=getsnmp($IP_ADDRESS,$TONER_CURRENT,$TONER_CURRENT_RESULT_LENGHT)
$CAPACITY_PER_CENT = Round((($result_current_toner * 100) / $result_max_toner),2)
MsgBox(1,"IP Address : " &$IP_ADDRESS, $printName & ' ' & $printLoc & @CRLF & 'Toner: ' & $CAPACITY_PER_CENT & "%")
Else
MsgBox(0, 'Ошибка', 'Подключение к ' & $IP_ADDRESS & ' не удалось! ' & @CRLF & 'Проверьте сетевое подключение')
EndIf
next
$data11 = ConsoleRead()
If $data11 <> "" Then MsgBox(0, "", $data11)
_ExcelBookClose($oExcel, 0)
Func getsnmp($IP_ADDRESS,$CMD,$MAXRESULT)
UDPStartUp()
$Start = 1
$Socket = UDPopen($IP_ADDRESS, $Port)
UDPSend($Socket, $CMD)
While (1)
$srcv = UDPRecv($Socket, 2048)
If ($srcv <> "") Then
$result_getsnmp=Dec(stringright($srcv,$MAXRESULT))
Return $result_getsnmp
ExitLoop
EndIf
sleep(100)
WEnd
UDPCloseSocket($Socket)
UDPShutdown()
EndFunc
у меня есть список принтеров в екселе первый столбик ip адреса, 2-ой название и третий где стоит, вот всё показывает хорошо, но только для чёрно белых принтеров. и вывод каждый принтер в отдельный msgbox
Итак вопрос
Кто нибудь вообще занимался этим, можно ли вывести весь массив в один msgbox, и если кто знает как тоже самое сделать с цветными принтерами xerox.