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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.017 c
1-3843
SergeyBG
2003-09-17 20:24
2003.10.02
Отладка DLL встроенным отладчиком.


1-3958
Sour
2003-09-20 09:30
2003.10.02
Тащи-Кидай из DBGrid


14-4118
Жестокий ФЛУД
2003-09-12 20:57
2003.10.02
Флуд - хорошо это или плохо?


14-4136
Soft
2003-09-12 14:40
2003.10.02
Запреты и их исполнение.


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