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

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

NetMassageBufferSend не работает [D5, Win2k]


ValeraVV ©   (2001-11-16 10:41:00) 

Пытаюсь отослать сообщение с помощью NetMessageBufferSend (servername=nil,msgname=Имя_машины_widechar,fromname=nil,buf=Сообщение_widechar,buflen=SizeOf(buf)*2) получаю ошибку с кодом 123?
Как заставить ее работать?
Если я хочу отправть сообщение на другую машину, где указывать ее имя, в servername или в msgname?
NetMessageNameEnum (server=nil) возвращает всего 3 записи:
Имя_машины_widechar
Имя_машины$_widechar
Имя_пользователя_widechar (меня)
контроллер домена в качестве server задать не могу (не администратор)


Ruff-Fish   (2001-12-30 19:57:00) [1]

Предыдущее верно, если на машине реципиента тоже стоит NT/2K/XP...


USAtyj   (2001-12-29 16:19:00) [2]

Или же:
net send ИМЯ_ДОМЕНА Вырубай машину!!!


Tosov   (2001-12-29 16:13:00) [3]

net send * Вырубай машину!!! (вместо имени компа - * )


Filat   (2001-12-29 13:05:00) [4]

А как разослать сообщение всем юзерам в сети, а не конкретно одному. Потому как если юзеров >100, то устанешь каждому ваять, а так бы одним махом, типа, через полчаса выключить компы. :))


ValeraVV   (2001-12-20 15:12:00) [5]

Загружают, потому-что если netapi32.dll не существует (есть ли она в Win95/98?, живых копий у меня нет), то твоя прога не запустится, а так хоть обработать ошибку можно и "интерфейсно-дружественно" об этом сообщить.


Aleksandr   (2001-12-20 14:10:00) [6]

Спасибо - это к тому, что меня тот же вопрос мучает...
Лично у меня ни один из этих примеров не пашет... Просто нет никаких сообщений и все... Результат=0...


Aleksandr   (2001-12-20 14:01:00) [7]

2ValeraVV
Спасибо, только не понял, зачем ресурс загружать, если можно просто в interface упомянуть:

function NetMessageBufferSend ( servername : PWideChar; msgname : PWideChar; fromname : PWideChar; buf : PByte; buflen : DWORD ): WORD; stdcall; external "netapi32.dll" name "NetMessageBufferSend";

Или это приведет к сложностям?


ValeraVV   (2001-12-19 11:00:00) [8]

Все заработало
В догонку:
Функция NetMessageBufferSend очень сильно тормозит, команда net send работает гораздо быстрее и не импортирует функцию NetMessageBufferSend (net.exe у меня версии 5.0.2160.1 (однако есть файл net1.exe версии 5.0.2179.1 - он ее импортирует (может троян?)))
Вопрос: как мелкософту удается послать сообщение быстрее меня?


Tosov   (2001-11-16 16:31:00) [9]

(тоже?) Рабочий пример (чуть покороче предидущего)
http://delphi.xonix.ru/faq/lan/netsend01.shtml


USAtyj   (2001-11-16 12:10:00) [10]

Вот работающий кусок. Может поможет.

...

var
Form1: TForm1;
NetMessageBufferSend: function (ServerName,
MsgName,FromName:PWideChar;
Buf:Pointer;BufLen:DWord):word; stdcall;

...

function TThreadSendMessage.NetSend(Host,Msg: String):boolean;
var
HLib:HModule;
PWCHost,PWCMsg: PWideChar;
Error:word;
begin
@NetMessageBufferSend:=nil;
HLib:=LoadLibrary("netapi32.dll");
if HLib<>0 then
begin
@NetMessageBufferSend:=GetProcAddress(HLib,"NetMessageBufferSend");
if @NetMessageBufferSend<>nil then
begin
try
Error:=1;
GetMem(PWCHost, 2*Length(Host)+2);
GetMem(PWCMsg, 2*Length(Msg)+2);
StringToWideChar(Host, PWCHost, Length(Host)+2);
StringToWideChar(Msg, PWCMsg, Length(Msg)+2);
Error:=NetMessageBufferSend(nil, PWCHost,nil,PWCMsg,2*Length(Msg));
finally
FreeMem(PWCHost);
FreeMem(PWCMsg);
Result := (Error=0);
end;
end;
FreeLibrary(HLib);
end;
end;

На авторство не претендую


Наверх

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