Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

Net Send по заданному адресу   Найти похожие ветки 

 
ronyn   (2005-08-16 00:36) [0]

NetSend("text Messages", ip_address,...) примерно так, если правильно помню. Так вот, надо , чтобы IP  был например равен Edit1.Text. Как это сделать?


 
KilkennyCat ©   (2005-08-16 00:41) [1]

(с) La Mer

procedure netsend(adr: pchar; mesg: pchar);
begin
winexec("net send " + adr + " " + mesg, sw_hide)
end;


 
Leonid Troyanovsky ©   (2005-08-16 08:59) [2]


> KilkennyCat ©   (16.08.05 00:41) [1]

> winexec("net send " + adr + " " + mesg, sw_hide)


 PChar("net send " + adr + " " + mesg).
 Кроме того, нет нужды в передаче PChar instead String.
 Ну, и удобней пользовать функцию Format, например:

resourcestring
 rsNetsendAddrMsg = "net send %s %s";
..
 .. := Format(rsNetsendAddrMsg, [Adr, Msg])

--
Regards, LVT.


 
Lamer@fools.ua ©   (2005-08-16 09:14) [3]

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;


 
ronyn   (2005-08-18 00:28) [4]

Интересно получается, один предлагает код величиной в строку, другой величиной в 30 строк. Тоже самое было с громкостью TMediaPlayer. В чем же здесь прикол? Зачем писать такой код если есть одна строка?!


 
KilkennyCat ©   (2005-08-18 02:05) [5]


> [4] ronyn   (18.08.05 00:28)


хороший вопрос.
http://delphibase.spb.ru/?action=viewbook&book=10417&topic=netlan


> [2] Leonid Troyanovsky ©   (16.08.05 08:59)


спасибо за пояснения.


 
Leonid Troyanovsky ©   (2005-08-18 09:01) [6]


> ronyn   (18.08.05 00:28) [4]
> Интересно получается, один предлагает код величиной в строку,
> другой величиной в 30 строк. Тоже самое было с громкостью
> TMediaPlayer. В чем же здесь прикол? Зачем писать такой
> код если есть одна строка?!


Первый вариант вызывает внешнюю программу net.exe,
а второй - непосредственно функцию NetApi32.dll.
Во втором случае контроль за происходящим больше,
да и возможностей у этой функции поболее, например,
с ее помощью можно отправить сообщения с другого
компьютера, если, скажем, messenger на локальной машине
не пущен. Правда, код будет немного другим.
Кстати, и приведенный вариант можно сделать короче:


procedure NetSend(const AMessage, AToComputer: WideString);
var
 NetApi32: HMODULE;
 NetMessageBufferSend: function (ServerName, ToName, FromName: PWideChar;
   Buffer: PWChar; BufLen: DWORD): DWORD stdcall;
begin
NetApi32 := LoadLibrary("NetApi32.dll");
if NetApi32 <= HINSTANCE_ERROR then
  raise EOSerror.CreateFmt("LoadLibrary error %d",[GetLastError]);
NetMessageBufferSend := GetProcAddress(NetApi32, "NetMessageBufferSend");
try
  Win32Check(Assigned(NetMessageBufferSend));
  if NetMessageBufferSend( nil,
                           PWideChar(AToComputer),
                           nil,
                           PWideChar(AMessage),
                           Length(AMessage) * SizeOf(WideChar)) <> 0 then
    raise EOSError.CreateFmt("Net API error %d",[GetLastError]);
finally
  FreeLibrary(NetApi32);
end;
end;


--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-08-18 09:07) [7]


> KilkennyCat ©   (18.08.05 02:05) [5]

> http://delphibase.spb.ru/?action=viewbook&book=10417&topic=netlan


В 9х можно слать сообщение через NETMESSAGEBUFFERSEND
из netapi.dll (16 битной). Т.е., через thunk.

См., например,

http://groups-beta.google.com/group/fido7.ru.delphi/msg/d0f74710d8fc6131

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.057 c
6-1120386219
Хубабуба
2005-07-03 14:23
2005.10.23
packet.dll wpcap.dll


4-1124414829
Kripton
2005-08-19 05:27
2005.10.23
Что было нажато: Да или Нет?


14-1127900866
Beks
2005-09-28 13:47
2005.10.23
CHM


3-1126531368
Os
2005-09-12 17:22
2005.10.23
Зеркало базы


1-1127979626
DeniM
2005-09-29 11:40
2005.10.23
проблема с генерацией отчетов в ворде