Главная страница
    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.46 MB
Время: 0.055 c
14-1128243705
Piter
2005-10-02 13:01
2005.10.23
Дейл Роджерсон "Inside COM", Русское издание


14-1128094551
Копир
2005-09-30 19:35
2005.10.23
Две пятничных задачи по эстетике.


2-1124833887
ronyn
2005-08-24 01:51
2005.10.23
Как создать программку ТРЕЙ?


1-1128254250
Ivanov
2005-10-02 15:57
2005.10.23
добавление Item в TDXImageList


11-1108950755
lo
2005-02-21 04:52
2005.10.23
RTTI for KOL?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский