Net send в Windows 7 / Vista
Проблема, озвученная в шапке темы, довольно актуальна для многих пользователей. Т.к. данная опция отключена в Windows Vista/Seven, то отправлять широковещательные сообщения сейчас нельзя.
В ходе написания программы по документообороту мне стало необходимо придумать способ оповещения клиентов о новых сообщениях/документах. В итоге родилась программка netsend7, работающая по протоколу UDP 9050, которая рассылает сообщения по сети несколькими способами: 1. Всем пользователям, у которых запущена программка 2. Только тем пользователям, у которых запущена определенная программа (например, 1С). 3. На указанный компьютер. 4. Указанному пользователю. 5. Группе пользователей. Программа запускается и висит в трее, кушать не просит :). При появлении нового сообщения вылетает окно с текстом сообщения. Скрывается окно по кнопке Esc или скрыть. При наведении на основные поля выводится подсказка с описанием. Также работает и на Windows XP. Для корректной работы под Win 7 при запуске программы происходит запрос на повышение прав UAC. Это необходимо для того, чтобы Firewall смог создать разрешающее правило для данного приложения. P.S. Для работы необходим .Net FrameWork 2.0 Последние версии программы доступны по адресам http://firsov.ucoz.ru/load/netsend7/1-1-0-3 или http://soft.oszone.net/program/11545/NetSend7.html P.S. Обновил версию. Список изменений в архиве, файл changes.txt. |
Обновил дистрибутив до версии 151210. Поправлена ошибка, не позволяющая запускаться программе из автозагрузки под Windows 7.
|
|
Delirium,
Подскажите, а если скажем мне надо отправить net send на ПК где данная программа не установлена, как тогда быть?! UDP же установлен на всех ПК, поэтому пользователь все равно получит мою месагу? |
Нет, не получит, кто ж будет мониторить получение сообщений? Я сделал очень просто - в bat файле групповой политики прописал запуск программки при входе в систему. В планах на будущее сделать программу службой, чтобы ее не выгружали и не снимали процесс.
|
Delirium,
Спасибо! |
Обновил дистриб. Поправлена мелкая ошибка, связанная с выделением имя машины, содержащей только NETBIOS имя, без доменного окончания.
|
Хотелось бы услышать хоть какие нибудь ответы по поводу работы программы. Стоит ли продолжать её развитие, или нет?
|
Цитата:
|
Казбек, опиши в каких случаях, как отправляется сообщение, в общем все подробности. ПОсмотрим, в чем дело.
|
Delirium, спасибо! Решил тоже опробовать и столкнулся с проблемкой - с одной машины сообщения не уходят.
3 машины в рабочей группе, в программе все машины видятся. У всех по одной сетевухе, а там откуда не отправляются - 2 (обычная и VirtualBox Host-Only Ethernet Adapter). Отключаю второй адаптер и сообщения начинают отравляться. Можно чего-нить придумать? |
Хм.... интересно... Программа просто открывает порт и начинает его мониторить... У меня тоже 3 сетевых на машине и работало. Единственное, что приходит в голову - в сетевых настройках (ncpa.cpl) - дополнительно-дополнительные параметры - выставить рабочую сетевую первой в списке. Тогда, возможно, заработает.
А вообще я потестирую на работе с виртуальными сетевыми, посмотрим. |
Цитата:
|
Чего то у меня даже мыслей нет, почему может не отправляться... ;(
С точки зрения логики - открывается порт 9050, через netstat -a -p UDPего видно. Сообщения отправляются широковещательно - всем подряд без исключения... Получается, что виртуалка глушит широковещательные посылки? А простой net send computername message работает на этой машине? |
Цитата:
Код:
C:\Windows\system32>net |
Delirium, и как ею вообще воспользоваться? Запустил в домене на 3 машинах-тишина. Может краткий мануал сделать?
|
Комсомолец, ОС какая? Если 7 - то ей нужно запустить от имени Админстратора и дать разрешение файрволу на работу программы в сети. Плюс проверить, чтобы не был заблокирован UDP 9050.
При нажатии кнопки > - отобразится список машин в сети с запущенной программой. При наведении мыши на любое поле ввода появится уведомление о назначении поля. |
По поводу программки- весьма неплохо.
1. По результатам тестов- неудобно сворачивать окошко, надо бы сделать в заголовке слева одну кнопочку стандартную "полоску" свернуть, и желательно полноценную по размерам. Кнопку "свернуть" нажимать неудобно. Про кнопку Esc, пользователи вообще не знают. 2. Всеже подумайте по поводу создания групп. Есть у меня отделы- проектировщики, бухгалтерия, менеджеры, склад. Их приложения и файлы размещены на разных серверах - соответственно, когда надо перезагрузить один сервер с файлами проектировщикам- зачем оповещать других? Это раздражает и притупляет внимание к сообщениям. 3. Рассмотрите возможность скрыть иконку из таскбара. Сообщения должны появляться, а иконка пользователям ни к чему. |
volk1234, принято к рассмотрению :)
1. Сделаем, дел на минуту. 2. Подумаю, как это покрасивее реализовать, быстро не обещаю, много работы. 3. Это тоже минутное дело, вопрос в том, как ты будешь отсылать сообщения, если приложения не будет ни в трее ни на панеле задач :) Вынесу это в параметр конфига. Вообще эта утилита на моей работе маленько разрослась, сейчас она еще параллельно с основной функцией при запуске в трее показывает сегодняшних именинников предприятия. Очень удобно, народ уже начал воспринимать ее как часть системы и возмущаются, почему у них не показывает день рождения :) |
Подправили по просьбам. Вопрос №2 пока открыт(разделение по группам). Вопрос - как сделать добавление в группы? Могу предложить такой вариант: Справа изначально будет список, как сейчас. По нажатию правой кнопки будет меню "Добавить в группу" - и далее список групп, который будет формироваться автоматом из справочника групп. Сверху списка будут отображаться группы, и таким образом можно будет все машины рассортировать по группам.
В итоге все машины будут в группе, а если появится новая машина, то она будет отображаться вне всех групп. Такой своеобразный контроль. Пойдет такой способ? |
По группам- подойдет любой способ, лиш бы был.
По скрытию из трэя- просто сделать в конфиге настройку + горячую клавишу чтобы показать окно программы. |
Предлагаю маленько другой вариант.
В конфиге есть настройка - "Отображать в трее". Если ее выставить в false, то программа будет всегда невидима, пока ей не придет сообщение. (Если честно, я просто ни разу не делал реакцию на горячие клавиши, поэтому пока так). Плюс к этому, если опция выставлена в false, то нельзя будет редактировать справочник Отделов. Вроде бы сделал группы и отправку в группу. Суть такова: Слово "Получатели" теперь является ссылкой на открытие справочника "Отделы". В нем можно добавлять любое количество отделов, проверка на одинаковые имена есть. После этого закрываем справочник, выбираем в списке получателей поле "Все" (даже если оно выбрано, выбираем еще раз для обновления полей). Затем жмем кнопку раскрытия списка ">", видим список добавляющихся машин. Правой кнопкой на нем - "переместить в группу..." - И динамический выпадающий список групп. Если компа больше нет в сети(умер, поломался и т.д.), то можно его удалить таким же способом(через контекстное меню). Все данные хранятся в базе Access (base.accdb), наличие Access на машине необязательно. В шапке темы ссылки на обновленную версию. (вложение в шапке - актуальное). |
А можно убрать кнопки закрыть и во весь экран?
|
Увы, но нет, студия не позволяет их скрыть :( В любом случае кнопка "Закрыть" сворачивает, а не закрывает приложение.
volk1234, сообщи о результатах тестирования, какие недочеты, что не работает? |
volk1234, я все еще жду результаты тестирования :)
|
скоро будут, поставил на вторую организацию - там точно будут использовать..
|
чего не хватает- короткой инструкции по установке и настройки :)
Могу взяться. |
Ну если есть желание - милости просим :) Я, кстати, ищу программку для простого создания хелпа, есть что нибудь на примете? Кроме HtmlHelpWorkShop. Неохота, если честно, писать html-ку и переводить ее в CHM :)
|
Delirium, MS Word -> PDF / XPS
|
Vadikan, это понятно, что можно конвертировать. Я имел ввиду, неохота и нет времени пока писать контекстно-зависимый хелп, чтобы при нажатии справки выдавалась помощь по открытому в данный момент разделу той или иной программы.
|
Цитата:
Цитата:
|
Delirium, можно подумать, у тебя такой программный продукт, что ему нужна огромная контекстно-зависимая справка. Я вообще там вижу одно окно - о каком контексте может идти речь? :)
Если не заниматься пересказом пользовательского интерфейса, то описание работы с программой сводится к 3-4 типовым процедурам = 1 страница + еще одна на любую ерунду, которой ты захочешь наполнить документ :) |
Лучше пускай автор объяснит принцип формирования списка пользователей.
У меня мешанина в списке из следующих названий: 192 (это я так понимаю начало IP адреса) WS137 192.168.1.15 ws138.local.net ws132.local.net Почему при выборе конкретного адресата в строке пользователь появляется число очень напоминающее телефон, а не IP или что либо еще. Хочу предложить добавить в таблицу пользователей поле Алиас-и хотябы вручную его редактировать, а по умолчанию двать имена User1-999. Одназначно индефицировать пользователей можно по MAC адресу. И второе, я уже писал в личку- надо сделать в главном окне сообщений вывод сообщений некий лог последних сообщений. Например вот так. Плюс в самом сообщении выводить время, дату и какой группе отправленно. |
Цитата:
Цитата:
Цитата:
Лог я сделаю, это быстро. Насчет остального - будет видно. Если в понедельник руководство не заставить сесть плотно за продолжение написание системы контроля документооборота, то постараюсь исправить недочеты и внедрить пожелания. |
Просьба обратить внимание кроме лога, на алиасы- т.е. понятные всем имена пользователей. А то компьютеры не везде называются понятно..
ЗЫ. И еще неплохо было бы для варианта отправить всем, только группам и т.д. поле фильтр- т.е. кому не отправлять даже если отправляется всем или группе в состав которой входит человек |
volk1234, а если сделать не фильтр, а просто мышкой повыделять, кому отправлять (в группе, к примеру)? Тогда невыделенным и отправлять не будет. А если нет выделенных, то всем?
|
Да, так будет логичнее, тогда можно отказаться от выпадающего меню и строки для ввода имени хоста.
Все действия по выбору адресатов будут выполняться во вкладке со списком пользователей, нажал галочку Все- выделились все кто есть в списке, убрал галки с тех кто не должен получать и все. Выбрал группу проектировщики- выделились все кто относится к ней и добавил например директора галочкой. Но пожалуйста сделай алиасы для компьютеров. Мне видится такая таблица в базе: Алиас NETBIOS IP MAC |
Цитата:
можно вписать не имя хоста, а имя ПОЛЬЗОВАТЕЛЯ, и сообщение получат все пользователи, вошедшие в систему под этим логином. По поводу остального попытаюсь сегодня сделать, если успею. |
Выпущено обновление от 11-11-2011 :). Как всегда, доступно на моем сайте и на софт-портале OsZone.
Список изменений: 1. Добавлен лог. (как на скриншоте volk1234) 2. Сделаны алиасы. В таблицу БД base.accdb в Компьютеры добавил столбцы IP адрес и Алиас. При первоначальном заполнении БД в поле Имя и Алиас прописывается имя компьютера. Далее уже в самой программе или через справочники - ПКМ - редактировать алиасы, или в основном списке ПКМ - редактировать - можно редактировать записи(но только алиасы, остальные поля только для чтения). Для чего я это описываю - существующий формат БД отличается от прежнего, поэтому необходимо будет либо по новой наполнить БД, либо открыть эти две базы и перенести записи в соответствующие таблицы. Их там всего 2, и поля на русском языке. 3. Изменил внешний вид и формат отправки сообщения. 4. Поле МАС-адрес вводить не стал, т.к. получения MAC в .Net идет через WMI, а он не везде корректно работает, да и не нужен этот МАС для функционирования. 5. Исправлены мелкие недочетики. По поводу странных записей появляющихся. Сегодня заметил, что глюки с распознаванием имен появляются когда в DNS нет записи о машине в прямой или обратной зоне. |
осталось совсем чуть чуть :)
Сделать так чтобы программа работала как служба- дабы видно было сообщения которые приходят когда пользователь Logoff Хотя может это и не надо- у нас же инстант мессенжер, с другой стороны оригинальный netsend присылает сообщения и после выхода из системы... Мелкие доработки- убрать в строке заголовка программы все кроме NetSend, всю информацию -название базы билд и т.д. считаю правильнее поместить в окно "О программе". Эта информация не нужна постоянно... Сделать так, чтобы после отправки сообщение исчезало из текстового поля, а то непонятно отправилось оно или нет. Сделать автопрокрутку в логе + ее отключение в конфиге autoscroll=0:) и еще чето не исчезает иконка- поставил в конфиге False. |
Цитата:
Цитата:
Ок, сейчас сяду подкорректирую эти недочетики. :) |
Обновление. Версия 18112011.
Изменения: 1. Убран в заголовке текст о версии и БД (перенесено в "О программе"). 2. Добавлен поиск по списку станций. Для поиска просто вводим первую букву имени станции. 3. В меню "О программе" добавлены 2 опции - автопрокрутка и отображение в трее. 4. Текст сообщения очищается после отправки. 5. Сделана автопрокрутка лога сообщений. 6. Добавлена справка о работе с программой :) 7. Немного изменен внешний вид для "красивости" :) Проверяйте :) По поводу неисчезания иконки. Если ОС Win 7 - C:\Users\Имя\AppData\Local\NetSend7 - удаляем эту папку и при посл. старте все настройки обнулятся. Выставь в программе False и должно заработать. Это связано с тем, что я не увеличивал билд программы, и новые обновления не затирали старые. Версия 18112011 выставлена как 2.0 (версия файла), поэтому теоретически все старые данные не должны будут уже учитываться, но на всякий случай можно удалить. |
Осталось теперь только одна вечная задача - оптимизация кода :)
Поскольку программа в состоянии покоя занимает места в памяти места почти столько же сколько Скайп и в 3 раза больше места чем Pandion клиент. Осмелюсь напомнить себе и Delirium основная задача программки - сервисные сообщения. Все навороты только для удобства пользования, и от них теоретически можно отказаться. Поэтому хотелось бы следующего 1. Маленький размер (как на диске, так и в памяти), нигде ее не видно у пользователя... 2. Простейший интерфейс, не отвлекающий внимание 3. Возможность набирать сообщение по горячей клавише, ну и\или хотябы из командной строки net2send * Vyiti iz 1C !!! 4. Вопрос: Для чего служит кнопка обновить?? :) 4.5 Так как невозможно предсказать длинну сообщения, предлагаю осуществлять вывод текста на экран и в лог осуществлять следующим образом: Отправитель, дата,время [перевод строки] сообщение. 5. Рассмотреть возможность: у большинства пользователей должно выводиться только сообщение БЕЗ ИНТЕРФЕЙСА УПРАВЛЕНИЯ: Т.е. в конф файле должна быть настрока: GUI_Rights= 1(только окно сообщения без возможности ответить и просмотреть список адресатов) =2 (с возможностью нажав кнопку развернуть интефейс отправки сообщений и выбора адресатов, (который внизу)), =3 (отправить только ответ на текущее сообщение, т.е. маленькое поле для ответа и кнопка ответить), =0 (полный интерфейс) :)))))))))))))))))))))))))))))))))))))) :))))))))))))))))))))))))))))))))))) Зы. в новой версии кнопка открывающая список выглядит получше, но позорно просвечивается старая стрелочка под новыми :) Зы2. Для справки слишком жирно отдельной кнопки, предлагаю перенести ссылку на справку в окно о программе :) |
Текст скрипта приведенный в справке будет постоянно затирать существующую программу, может лучше так:
Код:
@Echo OFF |
Цитата:
Цитата:
Вообще, большой объем занимаемой памяти от того, что данное приложения является как бы и клиентом и сервером одновременно. Ей же приходится и клиентов мониторить, и сообщения распарсивать и т.д. и т.п. Почему скайп и прочие так мало места в памяти кушают? Да потому, что это обыкновенный GUI клиент, вся задача которого - получить сообщение, которое уже предварительно распарсено на сервере и отсечено лишнее. Так же и отправка сообщения - оно отправляется в полет, а дальше уже дело сервера. Одновременно со всем этим накладывает свои ограничения и недостатки технология .Net FrameWork. Я постараюсь пересмотреть логику работы, может и получится что нибудь оптимизировать. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
А в целом справка понятная получилась? Или мой первый опыт вышел как блин - комом? :) volk1234, вот ты зрячий. Сейчас дома скачал, присмотрелся - и правда откуда то знак > просвечивает :) Поправлю обязательно ) |
Цитата:
|
Программу надо перепаковать в ZIP. RAR не нужен в каталоге.
И кстати, при запуске на чистой установке 7 SP1 со всеми обновления вылетает ошибка, но продолжить работу можно. Код:
Подробная информация об использовании оперативной |
Цитата:
Цитата:
|
Delirium, если нужны дополнительные компоненты, нбх указывать это в описании программы.
|
Delirium
А когда ждать новой версии |
volk1234, меня, к сожалению, загрузили сильно сейчас основной задачей, как только освобожусь, сразу допишу.
|
Не могли бы вы объяснить нубу по поводу этой программки такой момент:
у мну 7-ка 64, все остальные машинки в локальной сети XP-шные, эту программу следует устанавливать на каждой рабочей станции? Если нет, то каков принцип действия последней? Спасибо. |
Delirium
Может у Вас появилось время доработать програмку? |
Упуат, ставить на каждую машину. Точнее даже не ставить а копировать в любую папку и кидать в автозагрузку. Все действия описаны вышы.
volk1234, времени пока увы, но не появилось. Сейчас пишу корпоративный телефонный справочник для предприятия на основе Active Directory + Oracle. Занимает все время :) |
В программе нужно сделать упрощённый режим. Кажется, кто-то говорил уже об этом. Т.е. нужно, чтобы выводилось просто сообщение с кнопкой ОК. Ну максимум, с редактируемым текстовым полем и кнопкой Ответить. Причём выводить сообщение нужно поверх экрана. Честно, устал искать что-то подобное для Server 2008 :(...
Если времени не хватает, может, стоит выложить софтину на GitHub? |
Цитата:
|
Есть :) На чем написано?
|
на C#
|
А выложите пожалуйста куда-нибудь исходники, есть мысли по доработке программы:)
|
Вложений: 1
Исходники выкладываю. Пожелание одно - не надо делать из нее shareware :) Ну и желательно сохранить сноски на oszone.net.
|
Delirium, спасибо большое, если получится что-то доработать, обязательно поделюсь:)
|
Написал свою софтину, с блэкджеком и девочками :). Коллеге Delirium спасибо за вдохновение! Исходник не использовал.
http://forum.oszone.net/showthread.php?p=1922239 |
Королев Михаил, всегда рад помочь :)
|
"Обновил дистрибутив до версии 211210."
Где можно взять этот дистр? В шапке 3_netsend7_181120.rar. Если выложены исходники то можно понимать что работа над программой закончена? |
Время: 20:12. |
Время: 20:12.
© OSzone.net 2001-