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

Вниз

Сообщение по сети   Найти похожие ветки 

 
DimaK   (2003-07-25 15:57) [0]

Привет знатоки!
Подскажите можно ли послать сообщение компу по сети (т.е. что-то
типа ShowMessages на удаленный ком). Естественно без специальных программ и прибамбасов на другом компе.


 
Е-Моё имя   (2003-07-25 16:20) [1]

net send в NT


 
Rouse_   (2003-07-28 01:16) [2]

Майлслоты + WinPopUp в Win9x

Желаю успехов


 
DimaK   (2003-07-28 08:51) [3]

Ребята, а можно по подробней или ссылку на статью (если есть)
Это все я сам узнал, а как именно реализовать - непойму.


 
Fay   (2003-07-28 18:30) [4]

"Без программ" есть способ. Даже компы включать не надо.
Можно за провода дёргать. Типа "дёрг-дёрг" - это пингуют тебя значит. Можно ещё сетевухами перемигиваться.


 
Rouse_   (2003-07-29 01:08) [5]

По первому смотри справку по NetMessageBufferSend по второму CreateMailSlot

Желаю успехов


 
DimaK   (2003-07-29 08:35) [6]

:)


 
Dwemer   (2003-07-29 19:57) [7]

Удалено модератором
Примечание: Заведи свою ветку


 
DimaK   (2003-07-30 08:38) [8]

А ты проводкм подёргай :)

А если серьезно - ребята кто знает - помогите


 
DimaK   (2003-07-30 15:30) [9]

Что никто не знает?


 
xShadow   (2003-07-30 19:42) [10]

От табе код надеюсь с ним то хоть разбирёшься. Это для NT для друго не пишем сорри ;)

//Отправляет сообщение по локальной сети (как команда Net Send)

function NetSend(const sTo, sMessage: string): Boolean;
(*- Отправляет сообщение по локальной сети (делает тоже что и Net Send)
sTo - Кому (Имя пользователя, рабочей группы или компьютера). Можно использовать "*", чтобы отправить всем.
sMessage - Text сообщения.

Зависимости: Windows
Автор: Num Lock
Copyright: Num Lock
Дата: 13 марта 2003 г.
***************************************************** *)

function NetSend(const sTo, sMessage: string): Boolean;
type
PNetMessageBufferSend = ^TNetMessageBufferSend;
TNetMessageBufferSend = function(
servername: PWideChar;
msgname: PWideChar;
fromname: PWideChar;
buf: PBYTE;
buflen: DWORD
):Integer; stdcall;
var
wMessage, wTo: PWideChar;
i, hLib: Integer;
NetMessageBufferSend: TNetMessageBufferSend;
begin
Result:= False;
hLib:= LoadLibrary("NetApi32.dll");
if hlib > 0 then
try
@NetMessageBufferSend:= GetProcAddress(hLib, "NetMessageBufferSend");
if @NetMessageBufferSend <> nil then
begin
wMessage:= CoTaskMemAlloc((Length(sMessage) + 1) * sizeof(WideChar));
try
wTo:= CoTaskMemAlloc((Length(sTo) + 1) * sizeof(WideChar));
try
StringToWideChar(sMessage, wMessage, Length(sMessage) + 1);
StringToWideChar(sTo, wTo, Length(sTo) + 1);
i:= NetMessageBufferSend(nil, wTo, nil, PBYTE(wMessage), (Length(sMessage) + 1) * sizeof(WideChar));
Result:= i = ERROR_SUCCESS;
if not Result then
MessageBox(GetForegroundWindow, "Сообщение не отправлено.", nil, $1010);
finally
CoTaskMemFree(wTo);
end;
finally
CoTaskMemFree(wMessage);
end;
end else
MessageBox(GetForegroundWindow, "Функция NetMessageBufferSend не обнаружена.", nil, $1010);
finally
FreeLibrary(hLib);
end
else
MessageBox(GetForegroundWindow, "NetApi32.dll не загружена.", nil, $1010);
end;

Пример использования:
procedure TForm1.NetSendBtnClick(Sender: PObj);
begin
if NetSend(combobox1.Text, Memo1.Text) then begin
Memo1.Clear;
( Form.Handle, "Отправка сообщения.", "Сообщение отправлено", MB_ICONINFORMATION)
От табе код надеюсь с ним то хоть разбирёшься. Это для NT для друго не пишем сорри ;)

//Отправляет сообщение по локальной сети (как команда Net Send)

function NetSend(const sTo, sMessage: string): Boolean;
(*- Отправляет сообщение по локальной сети (делает тоже что и Net Send)
sTo - Кому (Имя пользователя, рабочей группы или компьютера). Можно использовать "*", чтобы отправить всем.
sMessage - Text сообщения.

Зависимости: Windows
Автор: Num Lock
Copyright: Num Lock
Дата: 13 марта 2003 г.
***************************************************** *)

function NetSend(const sTo, sMessage: string): Boolean;
type
PNetMessageBufferSend = ^TNetMessageBufferSend;
TNetMessageBufferSend = function(
servername: PWideChar;
msgname: PWideChar;
fromname: PWideChar;
buf: PBYTE;
buflen: DWORD
):Integer; stdcall;
var
wMessage, wTo: PWideChar;
i, hLib: Integer;
NetMessageBufferSend: TNetMessageBufferSend;
begin
Result:= False;
hLib:= LoadLibrary("NetApi32.dll");
if hlib > 0 then
try
@NetMessageBufferSend:= GetProcAddress(hLib, "NetMessageBufferSend");
if @NetMessageBufferSend <> nil then
begin
wMessage:= CoTaskMemAlloc((Length(sMessage) + 1) * sizeof(WideChar));
try
wTo:= CoTaskMemAlloc((Length(sTo) + 1) * sizeof(WideChar));
try
StringToWideChar(sMessage, wMessage, Length(sMessage) + 1);
StringToWideChar(sTo, wTo, Length(sTo) + 1);
i:= NetMessageBufferSend(nil, wTo, nil, PBYTE(wMessage), (Length(sMessage) + 1) * sizeof(WideChar));
Result:= i = ERROR_SUCCESS;
if not Result then
MessageBox(GetForegroundWindow, "Сообщение не отправлено.", nil, $1010);
finally
CoTaskMemFree(wTo);
end;
finally
CoTaskMemFree(wMessage);
end;
end else
MessageBox(GetForegroundWindow, "Функция NetMessageBufferSend не обнаружена.", nil, $1010);
finally
FreeLibrary(hLib);
end
else
MessageBox(GetForegroundWindow, "NetApi32.dll не загружена.", nil, $1010);
end;

Пример использования:
procedure TForm1.NetSendBtnClick(Sender: PObj);
begin
if NetSend(combobox1.Text, Memo1.Text) then begin
Memo1.Clear;
MessageBox(Form.Handle, "Отправка сообщения.", "Сообщение отправлено", MB_ICONINFORMATION);
end;
end;


 
Dwemer   (2003-07-30 20:01) [11]

Удалено модератором


 
Dwemer   (2003-07-30 21:03) [12]

Удалено модератором


 
DimaK   (2003-07-31 08:48) [13]

Да на счет CoTaskMemAlloc что-то не понятно. Можно по подробнее?


 
DimaK   (2003-07-31 12:34) [14]

Что никто не знает в каком она модуле?


 
xShadow   (2003-07-31 15:18) [15]

function NetSend(const sTo, sMessage: string): Boolean;
type
PNetMessageBufferSend = ^TNetMessageBufferSend;
TNetMessageBufferSend = function(
servername: PWideChar;
msgname: PWideChar;
fromname: PWideChar;
buf: PBYTE;
buflen: DWORD
):Integer; stdcall;
var
wMessage, wTo: PWideChar;
i, hLib: Integer;
NetMessageBufferSend: TNetMessageBufferSend;
begin
Result:= False;
hLib:= LoadLibrary("NetApi32.dll");
if hlib > 0 then
try
@NetMessageBufferSend:= GetProcAddress(hLib, "NetMessageBufferSend");
if @NetMessageBufferSend <> nil then
begin
GetMem( wMessage, ( Length(sMessage) + 1) * sizeof(WideChar) );
try
GetMem( wTo, (Length(sTo) + 1) * sizeof(WideChar) );
try
StringToWideChar(sMessage, wMessage, Length(sMessage) + 1);
StringToWideChar(sTo, wTo, Length(sTo) + 1);
i:= NetMessageBufferSend(nil, wTo, nil, PBYTE(wMessage), (Length(sMessage) + 1) * sizeof(WideChar));
Result:= i = ERROR_SUCCESS;
if not Result then
MessageBox(GetForegroundWindow, "


 
DimaK   (2003-08-05 08:36) [16]

Спасибо, на NT ядре все работает, а можно сделать исключение и помочь с кодом для Win9x, я сам пробовал - пишет что сообщение отправлено, а на самом деле без результата.


 
xShadow   (2003-08-05 09:25) [17]

DimaK © (05.08.03 08:36)

Для Win9x на машине принемаемой сообщение должна быть запущена/установлена соответствующая программулина, потому как НТ в своей поставке изначально емеет службу сообщений, сервис такой, соответственно в Win9x его нет.

Поэтому необходимо писать программу...


 
Erik Ivanov   (2003-08-05 13:16) [18]

Чего человека мучаете? Возми demo для Indy там есть пример сетевого общения. Я сам на UDP сдалал очень надежно работает. Разумеется должен быть клиент и сервер или серевер сервер.
http://www.indyproject.org/
http://www.indyproject.org/teams/Demo/demolisting80.html - это для indy 8.0
Скачай "Chat demo" и вперед, незабудь Indy инсталировать если ее у тебя нет.


 
DimaK   (2003-08-05 13:23) [19]

Спасибо!



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

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

Наверх





Память: 0.5 MB
Время: 0.01 c
1-3923
Opera
2003-09-22 01:04
2003.10.02
Цикл


1-3921
XenonXX
2003-09-22 03:30
2003.10.02
Неизвесная DLL


3-3724
Alexei Klimov
2003-09-13 09:50
2003.10.02
Фильтр


3-3709
Фагот
2003-09-14 12:07
2003.10.02
Транзакции


1-3930
tim5
2003-09-20 22:37
2003.10.02
Вывод на печать изображения с Image.





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