![]() |
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. Если выложены исходники то можно понимать что работа над программой закончена? |
Время: 08:02. |
Время: 08:02.
© OSzone.net 2001-