//两个 MemoryStream比较是否相等。
function StreamEqu(s1,s2:Tmemorystream):Boolean;
begin
result:=(s1.Size=s2.Size) and CompareMem(s1.Memory,s2.Memory,s1.Size);
end;
//取得第一个鼠标指针
procedure TForm1.Button1Click(Sender: TObject);
var
CI: TCursorInfo;
begin
CI.cbSize := SizeOf(CI);
GetCursorInfo(CI);
Image1.Picture.Icon.Handle := CI.hCursor;
bit1.Width:=Image1.Picture.Icon.Width;
bit1.Height:=Image1.Picture.icon.Height;
bit1.Canvas.Draw(0,0,Image1.Picture.icon);
bit1.SaveToStream(ms1);
timer1.Enabled:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ms1:=TMemorystream.Create;
bit1:=TBitmap.Create;
timer1.Enabled:=false;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ms1.Free;
bit1.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
CI:TCursorInfo;
begin
bit2:=TBitmap.Create;
ms2:=TMemoryStream.Create;
CI.cbSize:=Sizeof(CI);
GetCursorInfo(CI);
Image1.Picture.Icon.Handle:=CI.hCursor;
bit2.Width:=Image1.Picture.Icon.Width;
bit2.Height:=Image1.Picture.icon.Height;
bit2.Canvas.Draw(0,0,Image1.Picture.icon);
bit2.SaveToStream(ms2);
if StreamEqu(ms1,ms2) then
label1.Caption:='Same'
else
label1.Caption:='Defferent';
ms2.Free;
bit2.Free;
end;