![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Опять NET SEND [D7, Win2k]
AlexeyITN © (2004-03-10 18:25:00)Изужажлась эта тема на всех форумах. Вся ясно и понятно!
Не понятно одно как реализовать перехват winpopup, кажется, окна...то бишь, если приходит NET SEND, то его самому показывать\не показывать....
Слышал, мол, какую-то почтовую службу у Винды отключать...
но КАК? Помогите, пожайлуста...с примерчиком желательно :)
Заранее благодарен!
MetalFan (2004-04-06 16:10:00) [1]
> BlackTr (06.04.04 15:47) [21]
мдя... прием "своих" сообщений намана... а вот "рожных" нетсендовских - фик)
надо искать другой путь
BlackTr (2004-04-06 16:07:00) [2]Короче, при отправке с вин2000 net send'om на вин2000 с программой приема:
"Не удалось найти псевдоним сообщений в сети."
И так и сяк пробовал, ничего не получается. :)
Может все-таки есть способ побороть это ? Или все таки снифер свой писать ? :)))
BlackTr (2004-04-06 15:47:00) [3]Отправка все-таки работает.
Работает, только, если указываешь имя а не IP :)
А вот с приемом так нифига и не получилось :(
MetalFan (2004-04-06 13:05:00) [4]если придет всем...
то придут эти все))) человек, как минимум 30)))
и попинають мене )))
> А для чего используешь этот код? :
> while SS.dwCurrentState = SERVICE_STOP_PENDING do
> ControlService(hSrv,SERVICE_CONTROL_INTERROGATE,SS);
> Ведь результат ты никуда не выводишь...
чтобы дождаться завершения работы сервиса... у меня около 500-800 мсек.
Rouse_ (2004-04-06 11:51:00) [5]Проверь какой результат возвращает ControlService.
Вполне вероятно что ERROR_SERVICE_NOT_ACTIVE
Rouse_ (2004-04-06 11:47:00) [6]Да, придет всем, но ты проверь...
А для чего используешь этот код? :
while SS.dwCurrentState = SERVICE_STOP_PENDING do
ControlService(hSrv,SERVICE_CONTROL_INTERROGATE,SS);
Ведь результат ты никуда не выводишь...
Во вторых, боюсь ошибиться, но меня поправят.
Вполне возможно что вызов ControlService(hSrv,SERVICE_CONTROL_INTERROGATE,SS); после остановки самого сервиса дает такой результат...
Насколько мне извесно, останавливается он практически моментально...
MetalFan (2004-04-06 10:58:00) [7]так тогда всем придет?
кстати... иногда такой глюк возникает полсе остановки Messenger'a
таким способом:
procedure TfmNetSend.StopMessenger;
var
hSCM, hSrv: THandle;
SS: SERVICE_STATUS;
begin
hSCM:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
hSrv:=OpenService(hSCM, 'Messenger', SERVICE_ALL_ACCESS);
ControlService(hSrv,SERVICE_CONTROL_STOP,SS);
while SS.dwCurrentState = SERVICE_STOP_PENDING do
ControlService(hSrv,SERVICE_CONTROL_INTERROGATE,SS);
CloseServiceHandle(hSrv);
CloseServiceHandle(hSCM);
end;
вылезает системное окно с текстом
" остановлен системный процесс services.exe с кодом 128...
пожалуйста, сохраните все данные!
через ХХХ секунд произойдет перезагрузка системы"
что за косяк???
Rouse_ (2004-04-06 10:18:00) [8]Попробуй сначала отправить на адрес * (звездочка)
MetalFan (2004-04-06 10:02:00) [9]2000 SP4 - если Messnger остановлен, то net send возвращает ошибку - имя компутера не найдено!
Rouse_ (2004-04-06 09:45:00) [10]Вот сейчас сижу на 2000 SP2 - прием нормальный :)
BlackTr (2004-04-06 09:32:00) [11]Win2000 sp3, winXP sp1
Прикольно еще то, что где-то полгода назад у меня получалось принимать. А вот сейчас не могу вспомнить, что я тогда такого сделал :(
Rouse_ (2004-04-05 22:28:00) [12]Не получается?
Странно, проверял под 2000 и ХР все работало...
Также буквально только что проверил из под 98 отправку в ХР - также без сбоев.
Проверю еще раз.
Также проверял и с NetMessageBufferSend.
Нельзя ли поподробнее привести информацию по вашим системам и сервиспакам.
MetalFan (2004-04-05 19:59:00) [13]да.. в комбинации не получается... обидно!
BlackTr (2004-04-05 18:10:00) [14]Попробовал код отправки->не работает. На другую машину не приходит ничего :)
А почему это NetMessageBufferSendне будет работать при отключенной службе?
Вот у меня служба сообщений отключена, NetMessageBufferSendпрекрасно отправляет на другие машины.
Кстати: если пробовать и передачу и прием, по привиденному выше коду, то все прекрасно работает. А вот если в комбинации с стандартными виндовыми то ничего не получается :(
Rouse_ (2004-04-05 17:08:00) [15]Почемуже, данный код работает абсолютно идентично стандартному Net Send
Просто ты отключаешь службу ответственную за отправку и приемку сообщений и запускаешь свой отправщик и приемщик...
А перехватить можно сниффером также...
MetalFan (2004-04-05 16:43:00) [16]т.о. ПЕРЕХВАТИТЬвходящее сообщение net send'а нельзя ?
по крайней мере через mailslots...
Rouse_ (2004-04-05 16:39:00) [17]Ну так естественно - слать то нужно с другой машины или при помощи следующего кода:
procedure TForm1.Button1Click(Sender: TObject);
var
MSHandle: THandle;
MSMessage: array [0..2] of String;
ResultMsMessage: String;
MSWrite: DWORD;
ServerName: String;
begin
ServerName := Edit1.Text;
if ServerName = '' then ServerName := '*\';
if ServerName[Length(ServerName)] <> '\' then ServerName := ServerName + '\';
MSHandle := CreateFile(PChar('\\' + ServerName + 'mailslot\messngr'),
GENERIC_WRITE,// or GENERIC_READ,
FILE_SHARE_READ,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if not Win32Check(MSHandle <> INVALID_HANDLE_VALUE) then Exit;
MSMessage[0] := Edit2.Text;
MSMessage[1] := Edit3.Text;
MSMessage[2] := Memo1.Text;
CharToOem(PChar(MSMessage[0]), PChar(MSMessage[0]));
CharToOem(PChar(MSMessage[1]), PChar(MSMessage[1]));
CharToOem(PChar(MSMessage[2]), PChar(MSMessage[2]));
ResultMsMessage := MSMessage[0] + #0 + MSMessage[1] + #0 + MSMessage[2];
WriteFile(MSHandle, Pointer(PChar(ResultMsMessage))^, Length(ResultMsMessage), MSWrite, nil);
Win32Check(MSWrite = Length(ResultMsMessage));
CloseHandle(MSHandle);
end;
Почему именно так?
Потому что при отключенной службе сообщений NetMessageBufferSendтакже не будет работать...
MetalFan (2004-04-05 15:28:00) [18]нет... делал все так.
просто после остановки сервиса Messenger не получается Net Send'ом слать на машину сообщения...
а при запущщеном нетсенде не создается маилслот с таким названием(((
Rouse_ (2004-04-04 01:28:00) [19]> [4] Игорь Шевченко © (04.04.04 00:29)
Писал как демо - поэтому не затруднял себя проверкой...
Скорее вопрос к спрашивающим...
Игорь Шевченко (2004-04-04 00:29:00) [20]А что, проверка на ошибки уже не в моде, при обращении к SCM ?