Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
1-1127972252
Rentgen
2005-09-29 09:37
2005.10.23
DecToHexToStr ???


1-1128152033
Иванов__
2005-10-01 11:33
2005.10.23
Как в DHTML вставить текст


3-1126791472
Term
2005-09-15 17:37
2005.10.23
Народ нужно fibplus для 6-й делфи


14-1128322503
syte_ser78
2005-10-03 10:55
2005.10.23
С чего начать написание клиента для phpbb форума?


6-1120451686
hursand
2005-07-04 08:34
2005.10.23
ISAPI модул





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский