Форум: "Сети";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
ВнизСтарый добрый net send:) Найти похожие ветки
← →
noname:) © (2004-12-01 00:09) [0]Я понемаю что это заюзаная до дыр тема но всёже:)
У меня такая проблема. В моей программе есть возможность посылать net send сообщения с подменённым именем. В WinXP SP1 код с использованием NetMessageBufferSend всё ОК но уже в WinXP SP2 при попытке отправить сообщение с подменённым именем ничего не выходит! Решил через маилслоты попробовать. С ними сообщения с левым именем нормально шлются но при попытке вместо имени машины получателя поставить её айпи снова ничего не отправляется! Какойто замкнутый круг!!!! Главное в проге LanSend всё работает!!! Короче помогите как говорится кто чем может:)
Привожу код с использованием маилслотов - может я чёто напартачил:)
unit UberNetSend;
interface
function SendMsg(sServer,sText,sFrom,sTo:string):boolean;
implementation
uses
Windows,sysutils;
function ConvertAnsiToOem(const S : string) : string;
{ ConvertAnsiToOem translates a string into the OEM-defined character set }
{$IFNDEF WIN32}
var
Source, Dest : array[0..255] of Char;
{$ENDIF}
begin
{$IFDEF WIN32}
SetLength(Result, Length(S));
if Length(Result) > 0 then
AnsiToOem(PChar(S), PChar(Result));
{$ELSE}
if Length(Result) > 0 then
begin
AnsiToOem(StrPCopy(Source, S), Dest);
Result := StrPas(Dest);
end;
{$ENDIF}
end; { ConvertAnsiToOem }
function SendMsg(sServer,sText,sFrom,sTo:string):boolean;
var
pack : array[0..447] of char;
i,n : integer;
hsFile: THandle;
chbuf : array [0..$FF] of Char;
begin
result:=false;
//конвертируем в OEM
sText:=ConvertAnsiToOem(sText);
sFrom:=ConvertAnsiToOem(sFrom);
sTo:=ConvertAnsiToOem(sTo);
//отправляем
hsFile:=CreateFile( PChar("\\" + sServer + "\mailslot\messngr"), GENERIC_WRITE, FILE_SHARE_READ,nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hsFile=INVALID_HANDLE_VALUE then exit;
n:=0;
for i:=1 to length(sFrom) do begin
pack[n]:=sFrom[i];inc(n);
end;
pack[n]:=#0;inc(n);
for i:=1 to length(sTo) do begin
pack[n]:=sTo[i];inc(n);
end;
pack[n]:=#0;inc(n);
for i:=1 to length(sText) do begin
pack[n]:=sText[i];inc(n);
end;
pack[n]:=#0;inc(n);
result:=WriteFile(hsFile, pack , n, DWORD(i), nil);
CloseHandle(hsFile);
end;
end.
----------Посылаем------------------
SendMsg("alexxx","hi","god","alexxx")
------------------------------------
← →
Ильичев С.А. © (2004-12-01 05:47) [1]Так а ты не пытайся айпи вставлять.
Получай имя сначала по айпи.
← →
noname:) © (2004-12-01 11:05) [2]Дык пытался... У меня в сетке если у тебя указаны в свойствах подключения DNS-ы для подключения к инету а от этого самого инета тебя отключил злой админ то возвращение имени по айпи страшно тормозит. Вот я и подумал что может ещё какой сопособ есть:)
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.048 c