Вопрос про принтер и его тонер

JeiDee
Дата: 26.05.2010 06:39:48
Здравстуйте, может конечно уже существует программа для того что бы определить сколько тонера осталось в принтере (причем принтеры сетевые и их штук 30). Т.к. можно зайти черех ip адресс и посмотреть сколько осталось тонера, думаю можно написать код для сохранения в текстовый документ ip адресса и % оставшегося тонера. И самое главное вывести его в таблицу типа DataGridView или хоть как то любым способом, желательно C# или C++ . Буду очень благодарен!
JeiDee
Дата: 26.05.2010 06:51:03
вот пример хтмл хода из експлорера и проста принт скрин
Зритель с попкорном 5
Дата: 26.05.2010 10:53:21
JeiDee,

Выглядит всё просто: используя System.Net.WebClient (я пишу на C#, но по ходу не принципиально) скачиваете с нужного IP этот же html код и потом регулярным выражением в нём ищете место где указывается процент заполнения. Эту процедуру выполняете для каждого IP, результаты складируете в какой-то список структур [IP, %], который затем выводите куда Вам вздумается.
JeiDee
Дата: 28.05.2010 09:12:54
Зритель с попкорном 5
JeiDee,

Выглядит всё просто: используя System.Net.WebClient (я пишу на C#, но по ходу не принципиально) скачиваете с нужного IP этот же html код и потом регулярным выражением в нём ищете место где указывается процент заполнения. Эту процедуру выполняете для каждого IP, результаты складируете в какой-то список структур [IP, %], который затем выводите куда Вам вздумается.


Как я понимаю через System.Net.WebClient можно сохранить файл.
А как загрузить этот файл из диска ":\dannie\123.txt"
и не только загрузить но и открыть в DataGridView
JeiDee
Дата: 28.05.2010 09:59:37
и написать каким то образом обработчик что бы
из файла 123.htm находил " 12%" причем может стоять не только два числа к примеру 12% но и 100% и 1% ... что то типо того " ***%". И после того как нашел это число поместить его в текстовый блокнот 123.txt
JeiDee
Дата: 28.05.2010 10:02:19
& n b s p ;12%
только без пробелов... вот по этому критерию
Зритель с попкорном 5
Дата: 31.05.2010 13:43:50
JeiDee,

Бог ты мой, я думал вам концепцию, а вам прямо код подавай.

Во первых, используя System.Net.WebClient надо сохранять не файл, а грузить строкой [метод DownloadString(string address)]

Дальше, для поиска процентов использовать регулярные выражения (надеюсь знакомое словосочетание?) - это у нас класс System.Text.RegularExpressions.Regex, использовать в твоём случае так:
			var percent = Regex.Match(downloadedString, @" (\d+)%").Groups[1].Value;
это всё делать в цикле для каждого IP, до цикла объявить таблицу типа
			var table = new DataTable();
			table.Columns.Add("IP", typeof(string));
			table.Columns.Add("Percent", typeof(string));

в цикле, после того как нашёл проценты добавлять в таблицу строку:
table.Rows.Add(ip, percent + "%");
, ну и таблицу дать как источник данных для дата грида, это ты наверняка должен знать
dataGridView1.DataSource = table;


P.S. Расписал так подробно только потому что автоматизация рутины благое дело :) А вообще на будущее, читать,читать и ещё раз читать. Рихтера, Троелсена, MSDN... можно Google, в общем читать.
JeiDee
Дата: 10.06.2010 12:17:32
Зритель с попкорном 5

			var percent = Regex.Match(downloadedString, @" (\d+)%").Groups[1].Value;

Спасибо большое за код... разобрался. всё работает, только не могу понять как вот эти фильтры работают
@" (\d+)%"
, хотелось бы к примеру считать с "hp LaserJet 2420 / " причем пробелы тоже учитывать надо и заканчивается "<br />"
Зритель с попкорном 5
Дата: 10.06.2010 12:27:32
JeiDee,

Читай MSDN: http://msdn.microsoft.com/ru-ru/library/hs600312.aspx

а это: @" (\d+)%", на русском означает следующее: найти часть строки которая начинается с пробела, затем идёт одна или более (+) цифр (\d) а затем знак процента, то что взято в круглые скобки будет помещено в как значение (Value) первой группы (Groups[1]), при этом значением нулевой группы будет весь найденый кусок (с пробелом и знаком процента)
JeiDee
Дата: 10.06.2010 12:38:41
Зритель с попкорном 5
JeiDee,

Читай MSDN: http://msdn.microsoft.com/ru-ru/library/hs600312.aspx

а это: @" (\d+)%", на русском означает следующее: найти часть строки которая начинается с пробела, затем идёт одна или более (+) цифр (\d) а затем знак процента, то что взято в круглые скобки будет помещено в как значение (Value) первой группы (Groups[1]), при этом значением нулевой группы будет весь найденый кусок (с пробелом и знаком процента)


я не могу сделать фильтр для ip адреса... вроде все верно делаю:
var ip4 = Regex.Match(downloadedstring4, @"(\d+).(\d+).(\d+).(\d+)").Groups[0].Value;
и еще не могу понять зачем Groups[0].Value; тут 0 или 1 и вообще для чего...