Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.023 c
3-1126260681
Monk
2005-09-09 14:11
2005.10.23
Компонент DBLookupListBox


9-1118294977
.cpp
2005-06-09 09:29
2005.10.23
Множестово слоёв изображений (всем кто делает карты )


14-1128273573
Palladin
2005-10-02 21:19
2005.10.23
Cache 5.0.15


14-1127983768
ThreeTONE
2005-09-29 12:49
2005.10.23
Потянет ли LPT порт такое?


6-1120273852
yurikon
2005-07-02 07:10
2005.10.23
ICQ




   Наверх