?? firstaid.pas
字號:
unit FirstAid;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
StdCtrls, NMUDP, Menus;
type
TFirstAidDlg = class(TForm)
Label1: TLabel;
edUserId: TEdit;
Label2: TLabel;
edPasskey: TEdit;
UserList: TListBox;
btnLogon: TButton;
btnLogoff: TButton;
btnReadFriend: TButton;
btnDeleteFriend: TButton;
UDPSock: TNMUDP;
lbStatus: TLabel;
btnName: TButton;
SaveDlg: TSaveDialog;
PopupMenu1: TPopupMenu;
mClear: TMenuItem;
mSave: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure btnLogonClick(Sender: TObject);
procedure UDPSockDataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String; Port: Integer);
procedure btnLogoffClick(Sender: TObject);
procedure btnReadFriendClick(Sender: TObject);
procedure btnNameClick(Sender: TObject);
procedure btnDeleteFriendClick(Sender: TObject);
procedure mClearClick(Sender: TObject);
procedure mSaveClick(Sender: TObject);
private
{ Private declarations }
FMsgId:WORD;
public
{ Public declarations }
class procedure Execute;
end;
implementation
{$R *.DFM}
uses OICQPack;
{ TFirstAidDlg }
class procedure TFirstAidDlg.Execute;
begin
with TFirstAidDlg.Create(Application) do
begin
ShowModal;
Free;
end;
end;
procedure TFirstAidDlg.FormCreate(Sender: TObject);
begin
FMsgId:=$0a;
end;
procedure TFirstAidDlg.btnLogonClick(Sender: TObject);
var
buf:array [0..2048] of char;
i:Integer;
begin
i:=BuildLogonPack(buf,2048,FMsgId,edUserId.Text,edPasskey.Text);
UDPSock.SendBuffer(buf,i);
Inc(FMsgId);
end;
procedure TFirstAidDlg.UDPSockDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
buf:array [0..4096] of char;
buflen:Integer;
uid,uname:string;
begin
buflen:=4096;
UDPSock.ReadBuffer(buf,buflen);
case buf[4] of
Chr(OICQ_CMD_PING):
begin
buflen:=BuildPingPack(buf,4096,FMsgId,edUserId.Text);
UDPSock.SendBuffer(buf,buflen);
Inc(FMsgId);
end;
Chr(OICQ_CMD_LOGON):
begin
lbStatus.Caption:='在線';
btnLogoff.Enabled:=True;
btnReadFriend.Enabled:=TRUE;
btnDeleteFriend.Enabled:=True;
btnName.Enabled:=True;
edUserId.Enabled:=False;
edPasskey.Enabled:=False;
end;
Chr(OICQ_CMD_GETUSERINFO):
begin
ParseUserInfo(buf,buflen,uid,uname);
ShowMessage(uid+'='+uname);
end;
Chr(OICQ_CMD_GETFRIENDLIST):
begin
if(UserList.Items.Count>0)then UserList.Items.Clear;
ParseFriendList(buf,buflen,UserList.Items);
end;
Chr(OICQ_CMD_REMOVEFRIEND):
begin
ShowMessage('Remove ok');
end;
end;
end;
procedure TFirstAidDlg.btnLogoffClick(Sender: TObject);
var
buf:array [0..2048] of char;
i:Integer;
begin
i:=BuildLogoffPack(buf,2048,FMsgId,edUserId.Text,edPasskey.Text);
UDPSock.SendBuffer(buf,i);
Inc(FMsgId);
btnLogoff.Enabled:=False;
btnReadFriend.Enabled:=False;
btnDeleteFriend.Enabled:=False;
btnName.Enabled:=False;
edUserId.Enabled:=True;
edPasskey.Enabled:=True;
lbStatus.Caption:='離線';
end;
procedure TFirstAidDlg.btnReadFriendClick(Sender: TObject);
var
buf:array [0..2048] of char;
i:Integer;
begin
i:=BuildGetFriendListPack(buf,2048,FMsgId,edUserId.Text,edPasskey.Text);
UDPSock.SendBuffer(buf,i);
Inc(FMsgId);
end;
procedure TFirstAidDlg.btnNameClick(Sender: TObject);
var
buf:array [0..1024] of char;
i:integer;
id:string;
begin
id:=UserList.Items[UserList.ItemIndex];
i:=BuildGetUserInfoPack(buf,1024,FMsgId,edUserId.Text,id);
UDPSock.SendBuffer(buf,i);
Inc(FMsgId);
end;
procedure TFirstAidDlg.btnDeleteFriendClick(Sender: TObject);
var
buf:array [0..1024] of char;
i:Integer;
id:string;
begin
id:=UserList.Items[UserList.ItemIndex];
i:=BuildDeleteFriend(buf,1024,FMsgId,edUserId.Text,id);
UDPSock.SendBuffer(buf,i);
Inc(FMsgId);
end;
procedure TFirstAidDlg.mClearClick(Sender: TObject);
begin
UserList.Items.Clear;
end;
procedure TFirstAidDlg.mSaveClick(Sender: TObject);
begin
if(SaveDlg.Execute)then
begin
UserList.Items.SaveToFile(SaveDlg.FileName);
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -