Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять NET SEND [D7, Win2k]


Страницы:   1 2

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 ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо