Форум: "Сети";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];
Вниз[?]NET SEND Найти похожие ветки
← →
Юрий Ж. (2006-01-22 14:21) [0]Нашел в нете функцию отправки сообщений по NET SEND, но она почему-то не работает...Кто может что-то подсказать???
function NetSend(Dest, Source, Msg: string): Longint; overload;
type
TNetMessageBufferSendFunction = function(servername, msgname, fromname: PWideChar;
buf: PWideChar; buflen: Cardinal): Longint; stdcall;
var
NetMessageBufferSend: TNetMessageBufferSendFunction;
SourceWideChar: PWideChar;
DestWideChar: PWideChar;
MessagetextWideChar: PWideChar;
Handle: THandle;
begin
Handle := LoadLibrary("NETAPI32.DLL");
if Handle = 0 then
begin
Result := GetLastError;
Exit;
end;
@NetMessageBufferSend := GetProcAddress(Handle, "NetMessageBufferSend");
if @NetMessageBufferSend = nil then
begin
Result := GetLastError;
Exit;
end;
MessagetextWideChar := nil;
SourceWideChar := nil;
DestWideChar := nil;
try
GetMem(MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
GetMem(DestWideChar, 20 * SizeOf(WideChar) + 1);
StringToWideChar(Msg, MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
StringToWideChar(Dest, DestWideChar, 20 * SizeOf(WideChar) + 1);
if Source = "" then
Result := NetMessageBufferSend(nil, DestWideChar, nil,
MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1)
else
begin
GetMem(SourceWideChar, 20 * SizeOf(WideChar) + 1);
StringToWideChar(Source, SourceWideChar, 20 * SizeOf(WideChar) + 1);
Result := NetMessageBufferSend(nil, DestWideChar, SourceWideChar,
MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
FreeMem(SourceWideChar);
end;
finally
FreeMem(MessagetextWideChar);
FreeLibrary(Handle);
end;
end;
← →
Lamer@fools.ua © (2006-01-22 18:24) [1]с какого потолка взято число 20?
← →
Lamer@fools.ua © (2006-01-22 18:26) [2]
function NetSend(const AMessage, AToComputer: AnsiString): LongWord;
type
TNetMessageBufferSend = function (ServerName, ToName, FromName: PWideChar;
Buffer: Pointer; BufLen: DWORD): LongWord stdcall;
var
NetApi32: HMODULE;
NetMessageBufferSend: TNetMessageBufferSend;
MessageW, ToComputerW: WideString;
begin
Windows.SetLastError(NO_ERROR);
NetApi32 := LoadLibrary("NetApi32.dll");
if NetApi32 <= HINSTANCE_ERROR then
begin
Result := Windows.GetLastError;
Exit;
end;
try
NetMessageBufferSend := GetProcAddress(NetApi32, "NetMessageBufferSend");
if @NetMessageBufferSend = nil then
begin
Result := ERROR_INVALID_FUNCTION;
Exit;
end;
MessageW := WideString(AMessage);
ToComputerW := WideString(AToComputer);
Result := NetMessageBufferSend(nil, PWideChar(ToComputerW), nil,
PWideChar(MessageW), Length(MessageW) * SizeOf(WideChar));
finally
FreeLibrary(NetApi32);
end;
end;
← →
Юрий Ж. (2006-01-22 19:07) [3]Эта функция также не работате :(
Возможно это связвно с тем, что операционка WinXP?
Возвращает результат 2273 - это вроде "Имя пользователя не можут быть найдено"....
И еще вотпрос:
Как отправить сообщение всей рабочей группе???
Вместь AToComputer писать имя рабочей группы???
← →
Wistler © (2006-01-22 22:31) [4]Я делал проще:
WinExec("net send CompName Message");
← →
Юрий Ж. (2006-01-22 23:18) [5]А может нужно получать какие-то права???
>>WinExec("net send CompName Message");
- это будет на крайний случай =)
← →
Rouse_ © (2006-01-23 09:30) [6]
> Как отправить сообщение всей рабочей группе???
Ставь звездочку вместо иени пользователя.
А пользователю не отправляет, потомучто не правильно пишешь его имя:
servername
[in] Pointer to a constant string that specifies the DNS or NetBIOS name of the remote server on which the function is to execute. If this parameter is NULL, the local computer is used.
Windows NT: This string must begin with \\.
← →
Юрий Ж. (2006-01-23 10:44) [7]Теперь выдает:
The filename, directory name, or volume label syntax is incorrect.
Пишу имя своего компьютера (так как пишется в удаленном доступе и как я настраивал в настройках подключения...)
>Windows NT: This string must begin with \\.
- это в C++??? А в Delphi тогда "\" или я не прав??? Эксперементировал с обоими - результат обин и тот-же :(
Как правильно получить имя компьютера???
← →
Fay © (2006-01-23 11:11) [8]2 Юрий Ж. (23.01.06 10:44) [7]
> в Delphi тогда "\" или я не прав???
Не прав.
← →
Fay © (2006-01-23 11:12) [9]2 Юрий Ж. (23.01.06 10:44) [7]
> Как правильно получить имя компьютера???
Какого?
← →
Rouse_ © (2006-01-23 11:56) [10]попробуй сначала через Net Send, а потом как пройдет, этоже имя впиши к себе...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c