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

Вниз

отправка сообщения другому компу   Найти похожие ветки 

 
dablin ©   (2004-11-17 22:26) [0]

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


 
kaZaNoVa ©   (2004-11-17 23:16) [1]

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

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.


 
kaZaNoVa ©   (2004-11-17 23:20) [2]

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


 
kaZaNoVa ©   (2004-11-17 23:21) [3]

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


 
SammIk ©   (2004-11-18 09:23) [4]

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


 
dablin ©   (2004-11-18 17:51) [5]

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


 
dablin ©   (2004-11-18 22:39) [6]

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



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

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.088 c
3-1105039431
MNz
2005-01-06 22:23
2005.02.06
хранение DOC формата


14-1106211075
Бар
2005-01-20 11:51
2005.02.06
Существуют ли нормативы трудоемкости по разработке программ?


3-1105360995
syte_ser78
2005-01-10 15:43
2005.02.06
Сохранение изменений в таблице


1-1106586391
Убитый Кодом
2005-01-24 20:06
2005.02.06
Один экземпляр приложения + передача параметров запуска форме


3-1105003732
cad2206
2005-01-06 12:28
2005.02.06
Копирование записей из одной таблицы в другую???!!!