Форум: "Сети";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];
ВнизNetMassageBufferSend не работает Найти похожие ветки
← →
ValeraVV (2001-11-16 10:41) [0]Пытаюсь отослать сообщение с помощью NetMessageBufferSend (servername=nil,msgname=Имя_машины_widechar,fromname=nil,buf=Сообщение_widechar,buflen=SizeOf(buf)*2) получаю ошибку с кодом 123?
Как заставить ее работать?
Если я хочу отправть сообщение на другую машину, где указывать ее имя, в servername или в msgname?
NetMessageNameEnum (server=nil) возвращает всего 3 записи:
Имя_машины_widechar
Имя_машины$_widechar
Имя_пользователя_widechar (меня)
контроллер домена в качестве server задать не могу (не администратор)
← →
USAtyj (2001-11-16 12:10) [1]Вот работающий кусок. Может поможет.
...
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;
На авторство не претендую
← →
Tosov (2001-11-16 16:31) [2](тоже?) Рабочий пример (чуть покороче предидущего)
http://delphi.xonix.ru/faq/lan/netsend01.shtml
← →
ValeraVV (2001-12-19 11:00) [3]Все заработало
В догонку:
Функция NetMessageBufferSend очень сильно тормозит, команда net send работает гораздо быстрее и не импортирует функцию NetMessageBufferSend (net.exe у меня версии 5.0.2160.1 (однако есть файл net1.exe версии 5.0.2179.1 - он ее импортирует (может троян?)))
Вопрос: как мелкософту удается послать сообщение быстрее меня?
← →
Aleksandr (2001-12-20 14:01) [4]2ValeraVV
Спасибо, только не понял, зачем ресурс загружать, если можно просто в interface упомянуть:
function NetMessageBufferSend ( servername : PWideChar; msgname : PWideChar; fromname : PWideChar; buf : PByte; buflen : DWORD ): WORD; stdcall; external "netapi32.dll" name "NetMessageBufferSend";
Или это приведет к сложностям?
← →
Aleksandr (2001-12-20 14:10) [5]Спасибо - это к тому, что меня тот же вопрос мучает...
Лично у меня ни один из этих примеров не пашет... Просто нет никаких сообщений и все... Результат=0...
← →
ValeraVV (2001-12-20 15:12) [6]Загружают, потому-что если netapi32.dll не существует (есть ли она в Win95/98?, живых копий у меня нет), то твоя прога не запустится, а так хоть обработать ошибку можно и "интерфейсно-дружественно" об этом сообщить.
← →
Filat (2001-12-29 13:05) [7]А как разослать сообщение всем юзерам в сети, а не конкретно одному. Потому как если юзеров >100, то устанешь каждому ваять, а так бы одним махом, типа, через полчаса выключить компы. :))
← →
Tosov (2001-12-29 16:13) [8]net send * Вырубай машину!!! (вместо имени компа - * )
← →
USAtyj (2001-12-29 16:19) [9]Или же:
net send ИМЯ_ДОМЕНА Вырубай машину!!!
← →
Ruff-Fish (2001-12-30 19:57) [10]Предыдущее верно, если на машине реципиента тоже стоит NT/2K/XP...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c