powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Консольная утилита NET SEND
17 сообщений из 17, страница 1 из 1
Консольная утилита NET SEND
    #37753815
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые гуру, здравствуйте!
Мне необходимо отправлять/получать сообщения от пользователей
при помощи NET SEND
При таком запуске:
Код: plsql
1.
RUN net send * "Текст сообщения" > res.txt


мелькает окно, файл создается, а так:
Код: plsql
1.
RUN /N2 net send * "Текст сообщения" > res.txt


окно свернуто, но и файл не создается!!! , " > res.txt" добавляется к сообщению :(
Подскажите, pls, как сделать так, чтобы и окна не было, и файл создавался.

PS. Sent и WinSent Messenger не подходят, только NET SEND
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37753922
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отказаться от RUN
Возможно ShellExecute поможет.
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37753939
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dag,

Кроме кода завершения от ShellExecute больше ничего не дождешься,
а мне нужен файл с текстом
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37753962
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540,

в порядке бреда - пишете "net send * "Текст сообщения" > res.txt" в батник, запускаете батник шеллэкзекьютом...
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37753999
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если и отправка и получение выполняется из среды FoxPro, то зачем Вам вообще внешняя утилита? Делайте запись сообщений в DBF-таблицы общего доступа и периодически просматривайте ее содержимое из приложений FoxPro. Если там есть сообщение и оно адресовано текущему пользователю, то отображайте сообщение.
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37754070
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

Мысль, конечно, интересная, я уже думал над этим
Для просмотра придется использовать таймер, мне этого очень
не хотелось бы, там их и так уже 3 штуки, к тому же надо доставлять
сообщения оперативно, а не через несколько минут (меньше интервал
поставить не могу)
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37754071
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

" > res.txt" добавляется к сообщению , как ни крутись...
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37754322
Я не гуру, но помочь попробую. Я тоже давно отправлял сообщения пользователям ч/з run, но потом сис.админы эту службу у нас заблоктровали, и я сделал по другому отправку сообщений. Достоинства отправки сообщений ч-з run - простота. Как конкретно сделать, чтоб окно не выскакивало я тебе не скажу, но посоветую посмотреть на сайте forum.foxclub.ru, найди там по поиску, что тебе надо.
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37754526
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RUN без /N вызывает виртуальную ДОС-машину (CMD.EXE) а она выполняет команду.
RUN с /N вызывает виндовую функцию CreateProcess()
"... > res.txt" это синтаксис который понимает только CMD.EXE, для CreateProcess() это просто параметры которые надо передать в вызываемое приложение.
Поэтому надо так запускать:
Код: sql
1.
RUN /N2 CMD.EXE /C net send * "Текст сообщения" > res.txt


"... > res.txt" это указание перехватить вывод в консоль net.exe и сохранить в файл res.txt

Получить вывод можно еще так:
Код: sql
1.
2.
3.
4.
o=CreateObject("Wscript.Shell") 
x=o.Exec("net send * "Текст сообщения"") 
x.Terminate() 
? x.StdOut.ReadAll 
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37754528
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS Пример с Wscript.Shell не проверял, взял тут .
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37754531
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Браво, Dima T, спасибо!
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37754607
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540ВладимирМ,

Мысль, конечно, интересная, я уже думал над этим
Для просмотра придется использовать таймер, мне этого очень
не хотелось бы, там их и так уже 3 штуки, к тому же надо доставлять
сообщения оперативно, а не через несколько минут (меньше интервал
поставить не могу)
А что, кто-то бьет по рукам? Какая собственно разница сколько таймеров в приложении и с каким интервалом они работают? Это никак и ни на что не влияет. Интервал срабатывания таймера секунд в 30 вполне себе можно считать оперативным.

На всякий случай напомню, что FoxPro - это однопоточное приложение. События выстраиваются в очередь. Это значит, что пока не отработает событие одного таймер событие другого таймера не будет исполнено. Будет ждать своей очереди. Вмешаться в процесс выполнения "чужого" события - не сможет. Разумеется, если только это специально не предусмотрено программистом.

И еще, если в системе много процессов, которые должны срабатывать периодически по таймеру, то я бы сделал общий диспетчер для подобных процессов. Т.е. один таймер - и список процессов, которые он должен вызывать.
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37755131
есть ещё варианты....
можно написать свою функцию, что-то типа такого
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
PROCEDURE SendMessage
LPARAMETERS cText
LOCAL lcTo, lcFrom, lcMessage, lnRes
DECLARE INTEGER NetMessageBufferSend IN NETAPI32 STRING,STRING,STRING,STRING,INTEGER
lcTo = STRCONV("169.255.0.1", 5) + CHR(0)  &&IP-адрес получателя
lcMessage = STRCONV(cText, 5) + CHR(0)
lnRes = NetMessageBufferSend(.Null., m.lcTo, .NULL., m.lcMessage, LEN(m.lcMessage)*2)
IF m.lnRes # 0
	MESSAGEBOX("Ошибка № " + ALLTRIM(STR(m.lnRes)), 48, "Ошибка отправки сообщения")
ENDIF
ENDPROC


в этом случае мелькать окно не будет

*-или так
loWsShell=CREATEOBJECT("Wscript.Shell")
loWsShell.Run('net send 169.255.0.1 Вася, привет!')

только не стоит забывать, что в любом случае требуется запуск службы сообщений на получателе
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37755143
Jonny540ВладимирМ,

Мысль, конечно, интересная, я уже думал над этим
Для просмотра придется использовать таймер, мне этого очень
не хотелось бы, там их и так уже 3 штуки, к тому же надо доставлять
сообщения оперативно, а не через несколько минут (меньше интервал
поставить не могу)

но зато при использовании разных вариантов net send (будь-то АПИ, будь-то Wscript), если служба сообщений на клиенте не запущена, то никакой оперативности не будет, т.к. клиент просто напросто не получит никакого сообщения...
такшта в варианте, предложенном Владимиром, есть свой плюс, т.к. нет зависимости от этой службы...
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37755250
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КонецЦиклаесли служба сообщений на клиенте не запущена, то никакой оперативности не будет, т.к. клиент просто напросто не получит никакого сообщения...
Если служба не запущена, она запускается автоматически из приложения

КонецЦиклаloWsShell=CREATEOBJECT("Wscript.Shell")
loWsShell.Run('net send 169.255.0.1 Вася, привет!')
В этом случае не будет формироваться файл (см. топик)

КонецЦиклаPROCEDURE SendMessage
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
LPARAMETERS cText
LOCAL lcTo, lcFrom, lcMessage, lnRes
DECLARE INTEGER NetMessageBufferSend IN NETAPI32 STRING,STRING,STRING,STRING,INTEGER
lcTo = STRCONV("169.255.0.1", 5) + CHR(0)  &&IP-адрес получателя
lcMessage = STRCONV(cText, 5) + CHR(0)
lnRes = NetMessageBufferSend(.Null., m.lcTo, .NULL., m.lcMessage, LEN(m.lcMessage)*2)
IF m.lnRes # 0
	MESSAGEBOX("Ошибка № " + ALLTRIM(STR(m.lnRes)), 48, "Ошибка отправки сообщения")
ENDIF
ENDPROC


А надо ли "из пушки по воробьям", если можно обойтись одной командой?

КонецЦиклав варианте, предложенном Владимиром, есть свой плюс, т.к. нет зависимости от этой службы...
Я ведь не отвергаю этот вариант в принципе
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37755828
когда-то была у меня подобная задача с оповещениями... была она сначала сделана в лоб через WshShell Object... да, всего пара-тройка строк кода, но потом пользователей стало напрягать мелькание черного окна... тогда сделал через netapi.. да из пушки по воробьям, но все красиво...
одна проблема вот только была, надо было постоянно контролировать запущена служба приложений или нет... запускать её постоянно не вариант, т.к. хер знает запустилась она или нет, у кого-то не было вообще прав на запуск служб... запускать её от имени администратора, но надо знать его имя и пароль на каждом компьютере и хранить это все надо к тому же, т.к. компьютеры были не в домене.... так, сборная солянка была...
поэтому в итоге все-таки была сделана таблица, где для каждого пользователя были какие-то сообщения, которая периодически просматривалась...

ЗЫ. ну уж добавить ещё строчку, чтобы формировался файл, я думаю, тут все в состоянии...
...
Рейтинг: 0 / 0
Консольная утилита NET SEND
    #37755862
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КонецЦиклано потом пользователей стало напрягать мелькание черного окна
При /N2 окно не мелькает (свернуто)

КонецЦиклау кого-то не было вообще прав на запуск служб... запускать её от имени администратора, но надо знать его имя и пароль на каждом компьютере и хранить это все надо к тому же, т.к. компьютеры были не в домене
В данном конкретном случае все путём

КонецЦиклав итоге все-таки была сделана таблица, где для каждого пользователя были какие-то сообщения, которая периодически просматривалась...
Я же говорил, что не отвергаю этот вариант, но, я думаю, не стоит использовать всегда какое-то универсальное решение...
У нас должно быть как у хороших врачей - к каждому "пациенту" свой подход
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Консольная утилита NET SEND
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]