Форум: "Сети";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
ВнизВопрос по отправке сообщения Найти похожие ветки
← →
Guzz (2003-04-23 19:50) [0]Здравствуйте Мастера! Как отправить сообщение (Memo1) по локальной сети адресату (Edit1)?
← →
Fixxxer (2003-04-23 23:31) [1]А ты сам пробовал чего?
← →
Guzz (2003-04-25 10:01) [2]Я пробовал, ShellExecute и ниче не получается (всмысле командой
net send имя сообщение
), как можно еще попробовать?
← →
Fixxxer (2003-04-26 01:50) [3]...ну я тогда не знаю...
← →
Snap (2003-04-26 17:17) [4]>>>Guzz © (23.04.03 19:50)
уточни вопрос
← →
Guzz (2003-04-26 21:08) [5]>>>Snap © (26.04.03 17:17) уточни вопрос
Уточняю: Требуется отправить сообщение из своей проги для требуемого адресата(либо весь домен) в сети (стандартная сеть MicroSoft) на 98 тачках это в WinPopup или стандартный обработчик событий в XP или на NT-системах.
Я пробуюnet send имя сообщение
- не проходит (может что и не так делаю конечно), но всетаки есть какаято стандартная команда для отправки сообщений по сети из Дельфей (либо ее заменяющая процедура)?
← →
Shurik (2003-04-27 03:42) [6]Попробуй это:
type
TNetMessageBufferSend = function (ServerName, MsgName, FromName: PWideChar;
Buff: Pointer; BufLen: DWord): Word; stdcall;
var
NetMessageBufferSend: TNetMessageBufferSend;
HLib: HModule;
PWCHost, PWCMsg: PWideChar;
function NetSend (Host: String; Msg: String): String;
var
Error: Word;
begin
Error:=0;
Result:="";
@NetMessageBufferSend:=nil;
HLib:=LoadLibrary ("netapi32.dll");
if HLib <> 0 then
begin
@NetMessageBufferSend:=GetProcAddress (HLib, "NetMessageBufferSend");
if @NetMessageBufferSend <> nil then
begin
try
GetMem (PWCHost, 2*Length (Host)+2);
GetMem (PWCMsg, 2*Length (Msg)+2);
StringToWideChar (Host, PWCHost, Length (Host)+2);
StringToWideChar (Msg, PWCMsg, Length (Msg)+2);
Error:=NetMessageBufferSend (nil, PWCHost, nil, PWCMsg, 2*Length (Msg));
finally
FreeMem (PWCHost);
FreeMem (PWCMsg);
if Error <> 0 then
Result:="Error calling NetMessageBufferSend";
end;
end
else
Result:="Error while loading NetApi32.dll";
FreeLibrary (HLib);
end
else
Result:="Error while loading NetApi32.dll: "+WindowsError (GetLastError);
end;
function OpenMailSlot (const Server, Slot: String): THandle;
var
FullSlot: String;
begin
FullSlot:="\\"+Server+"\mailslot\"+Slot;
Result:=CreateFile (PChar (FullSlot), GENERIC_WRITE, FILE_SHARE_READ, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
end;
function SendBufToMailSlot (const Server, Slot: String; Data: PChar; Length:
Integer): Boolean;
var
hToSlot: THandle;
BytesWritten: DWORD;
begin
Result:=False;
hToSlot:=OpenMailSlot (Server, Slot);
if hToSlot = INVALID_HANDLE_VALUE then
Exit;
try
BytesWritten:=0;
if (not WriteFile (hToSlot, Pointer (Data)^, Length, BytesWritten, nil)) or
(BytesWritten <> Length) then
Exit;
Result:=True;
finally
CloseHandle (hToSlot);
end;
end;
function SendToWinpopup (Server, Reciever, Sender, Msg: String): Boolean;
var
S: String;
const
wpSlot = "messngr";
begin
CharToOEM (PChar (Server), PChar (Server));
CharToOEM (PChar (Sender), PChar (Sender));
CharToOEM (PChar (Reciever), PChar (Reciever));
CharToOEM (PChar (Msg), PChar (Msg));
S:=Sender+#0+Reciever+#0+Msg;
Result:=SendBufToMailSlot (Server, wpSlot, PChar(S), Length(S));
end;
...
if WinNT then
NetSend (edDest.Text, mmMessage.Text)
else
SendToWinpopup (edDest.Text, edDest.Text, "", mmMessage.Text);
...
← →
Guzz (2003-04-29 19:34) [7]>>>> Shurik (27.04.03 03:42)
Пример хороший, но что-то не могу с ним разобраться...
Вот на это матерился компирятор - type
TNetMessageBufferSend = function (ServerName, MsgName, FromName: PWideChar;
но я исправил на
Buff: Pointer; BufLen: DWord): Word; stdcall;function TNetMessageBufferSend (.......
думаю это просто была опечатка...
далее матерится на - var
NetMessageBufferSend: TNetMessageBufferSend;
что типа не описана gbitn -Undeclared identifier: "TNetMessageBufferSend"
затем на вот это -@NetMessageBufferSend:=nil;
пишет -Left side cannot be assigned to
затем тоже самое на -@NetMessageBufferSend:=GetProcAddress (HLib, "NetMessageBufferSend");
затем на это -Result:="Error while loading NetApi32.dll: "+WindowsError (GetLastError);
говорит -Undeclared identifier: "WindowsError"
вот вобщем почти все ошибки... может нужно какой-нить модуль подключить, чтобы он понял все это?
вобщем пока ничего не получается...
← →
Illusion (2003-04-29 23:50) [8]2Guzz...
ноу коментс, как говорится... :)
TNetMessageBufferSend = function (ServerName, MsgName, FromName: PWideChar; Buff: Pointer; BufLen: DWord): Word; stdcall;
пусть я в дельфих уже лох, но должно быть понятно, что человек щадают не функцию, а тип функции... НЕ САМУ ФУНКЦИЮ! Приглядись в код...
var
NetMessageBufferSend: TNetMessageBufferSend;
...
@NetMessageBufferSend:=nil;
HLib:=LoadLibrary ("netapi32.dll");
if HLib <> 0 then
begin
@NetMessageBufferSend:=GetProcAddress (HLib, "NetMessageBufferSend");
...
даже МНЕ понятно, что человек грузит библиотеку, ищет функцию ит назначает её! ОН НЕ ПИШЕТ ЕЁ, А ЭКСПОРТИРУЕТ! И после тех изменений, что ты в нёс, ты хочешь чтобы всё работало? Почитай внимателее хелп по type-у... поищи декларирование функций...
← →
Абармот (2003-05-02 14:11) [9]еще можно поглядеть вот здесь:
http://dmess.netz.ru/winpopup/ondelphi.htm
И не париться с загрузкой всяких там dll и определением системы.
← →
Guzz (2003-05-03 18:38) [10]Illusion © (29.04.03 23:50) > уменя хелп не русский....
Абармот (02.05.03 14:11) > огромное пасибо!!! это мне и нужно!!!
← →
cfG (2003-05-04 20:29) [11]Ну вообщем то можно сделать все намного проще!
Можно создать батник с кодом:
:ONEMORE
net send 192.168.0.1 FUCK OFF !
GOTO ONEMORE
и запустить его!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c