FirstAid.pas
上传用户:hbtcygglw
上传日期:2007-01-07
资源大小:281k
文件大小:4k
源码类别:

其他

开发平台:

Delphi

  1. unit FirstAid;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes,
  5.   Graphics, Controls, Forms, Dialogs,
  6.   StdCtrls, NMUDP, Menus;
  7. type
  8.   TFirstAidDlg = class(TForm)
  9.     Label1: TLabel;
  10.     edUserId: TEdit;
  11.     Label2: TLabel;
  12.     edPasskey: TEdit;
  13.     UserList: TListBox;
  14.     btnLogon: TButton;
  15.     btnLogoff: TButton;
  16.     btnReadFriend: TButton;
  17.     btnDeleteFriend: TButton;
  18.     UDPSock: TNMUDP;
  19.     lbStatus: TLabel;
  20.     btnName: TButton;
  21.     SaveDlg: TSaveDialog;
  22.     PopupMenu1: TPopupMenu;
  23.     mClear: TMenuItem;
  24.     mSave: TMenuItem;
  25.     procedure FormCreate(Sender: TObject);
  26.     procedure btnLogonClick(Sender: TObject);
  27.     procedure UDPSockDataReceived(Sender: TComponent; NumberBytes: Integer;
  28.       FromIP: String; Port: Integer);
  29.     procedure btnLogoffClick(Sender: TObject);
  30.     procedure btnReadFriendClick(Sender: TObject);
  31.     procedure btnNameClick(Sender: TObject);
  32.     procedure btnDeleteFriendClick(Sender: TObject);
  33.     procedure mClearClick(Sender: TObject);
  34.     procedure mSaveClick(Sender: TObject);
  35.   private
  36.     { Private declarations }
  37.     FMsgId:WORD;
  38.   public
  39.     { Public declarations }
  40.     class procedure Execute;
  41.   end;
  42. implementation
  43. {$R *.DFM}
  44. uses OICQPack;
  45. { TFirstAidDlg }
  46. class procedure TFirstAidDlg.Execute;
  47. begin
  48. with TFirstAidDlg.Create(Application) do
  49.     begin
  50.     ShowModal;
  51.     Free;
  52.     end;
  53. end;
  54. procedure TFirstAidDlg.FormCreate(Sender: TObject);
  55. begin
  56. FMsgId:=$0a;
  57. end;
  58. procedure TFirstAidDlg.btnLogonClick(Sender: TObject);
  59. var
  60. buf:array [0..2048] of char;
  61. i:Integer;
  62. begin
  63. i:=BuildLogonPack(buf,2048,FMsgId,edUserId.Text,edPasskey.Text);
  64. UDPSock.SendBuffer(buf,i);
  65. Inc(FMsgId);
  66. end;
  67. procedure TFirstAidDlg.UDPSockDataReceived(Sender: TComponent;
  68.   NumberBytes: Integer; FromIP: String; Port: Integer);
  69. var
  70. buf:array [0..4096] of char;
  71. buflen:Integer;
  72. uid,uname:string;
  73. begin
  74. buflen:=4096;
  75. UDPSock.ReadBuffer(buf,buflen);
  76. case buf[4] of
  77.     Chr(OICQ_CMD_PING):
  78.         begin
  79.         buflen:=BuildPingPack(buf,4096,FMsgId,edUserId.Text);
  80.         UDPSock.SendBuffer(buf,buflen);
  81.         Inc(FMsgId);
  82.         end;
  83.     Chr(OICQ_CMD_LOGON):
  84.         begin
  85.         lbStatus.Caption:='在线';
  86.         btnLogoff.Enabled:=True;
  87.         btnReadFriend.Enabled:=TRUE;
  88.         btnDeleteFriend.Enabled:=True;
  89.         btnName.Enabled:=True;
  90.         edUserId.Enabled:=False;
  91.         edPasskey.Enabled:=False;
  92.         end;
  93.     Chr(OICQ_CMD_GETUSERINFO):
  94.         begin
  95.         ParseUserInfo(buf,buflen,uid,uname);
  96.         ShowMessage(uid+'='+uname);
  97.         end;
  98.     Chr(OICQ_CMD_GETFRIENDLIST):
  99.         begin
  100.         if(UserList.Items.Count>0)then UserList.Items.Clear;
  101.         ParseFriendList(buf,buflen,UserList.Items);
  102.         end;
  103.     Chr(OICQ_CMD_REMOVEFRIEND):
  104.         begin
  105.         ShowMessage('Remove ok');
  106.         end;
  107.     end;
  108. end;
  109. procedure TFirstAidDlg.btnLogoffClick(Sender: TObject);
  110. var
  111. buf:array [0..2048] of char;
  112. i:Integer;
  113. begin
  114. i:=BuildLogoffPack(buf,2048,FMsgId,edUserId.Text,edPasskey.Text);
  115. UDPSock.SendBuffer(buf,i);
  116. Inc(FMsgId);
  117. btnLogoff.Enabled:=False;
  118. btnReadFriend.Enabled:=False;
  119. btnDeleteFriend.Enabled:=False;
  120. btnName.Enabled:=False;
  121. edUserId.Enabled:=True;
  122. edPasskey.Enabled:=True;
  123. lbStatus.Caption:='离线';
  124. end;
  125. procedure TFirstAidDlg.btnReadFriendClick(Sender: TObject);
  126. var
  127. buf:array [0..2048] of char;
  128. i:Integer;
  129. begin
  130. i:=BuildGetFriendListPack(buf,2048,FMsgId,edUserId.Text,edPasskey.Text);
  131. UDPSock.SendBuffer(buf,i);
  132. Inc(FMsgId);
  133. end;
  134. procedure TFirstAidDlg.btnNameClick(Sender: TObject);
  135. var
  136. buf:array [0..1024] of char;
  137. i:integer;
  138. id:string;
  139. begin
  140. id:=UserList.Items[UserList.ItemIndex];
  141. i:=BuildGetUserInfoPack(buf,1024,FMsgId,edUserId.Text,id);
  142. UDPSock.SendBuffer(buf,i);
  143. Inc(FMsgId);
  144. end;
  145. procedure TFirstAidDlg.btnDeleteFriendClick(Sender: TObject);
  146. var
  147. buf:array [0..1024] of char;
  148. i:Integer;
  149. id:string;
  150. begin
  151. id:=UserList.Items[UserList.ItemIndex];
  152. i:=BuildDeleteFriend(buf,1024,FMsgId,edUserId.Text,id);
  153. UDPSock.SendBuffer(buf,i);
  154. Inc(FMsgId);
  155. end;
  156. procedure TFirstAidDlg.mClearClick(Sender: TObject);
  157. begin
  158. UserList.Items.Clear;
  159. end;
  160. procedure TFirstAidDlg.mSaveClick(Sender: TObject);
  161. begin
  162. if(SaveDlg.Execute)then
  163.     begin
  164.     UserList.Items.SaveToFile(SaveDlg.FileName);
  165.     end;
  166. end;
  167. end.