ich hab vor kurzem so ein remote tool mit delphi realisiert. ich sag dir gleich du nimmst dir einiges vor. warum willst du das selber schreiben?
ich habs genau so gemacht allerdings unterteile ich den schirm in 8 horizontale zonen und frage jede zone einzeln ab und übertrage dann die differenz (trotzdem bei isdn ätzend langsam).
mit dieser methode kannst du die anzahl der unterschiedlichen pyxel in 2 bitmaps feststellen
Delphi-Quellcode:
function TMainFormClient.BitmUnterschVorh(Bitm1, Bitm2:TBitmap):Boolean;
var
y, x: integer;
P, P2: PByteArray;
// PRGBTriple; // PRGBQuad def. in Unit Windows;
CountFalsePixel: Integer;
aRect: TRect;
begin
aRect := Rect(65000, 65000, 0, 0);
CountFalsePixel := 0;
// Bitmaps vergleichen
for y := 0
to Bitm1.Height - 1
do
begin
P := Bitm1.ScanLine[y];
P2 := Bitm2.ScanLine[y];
for x := 0
to Bitm1.Width - 1
do
begin
if (P[x] <> P2[x])
then
begin
Inc(CountFalsePixel);
begin
if x < aRect.Left
then
aRect.Left := x;
if y < aRect.Top
then
aRect.Top := y;
if x > aRect.Right
then
aRect.Right := x;
if y > aRect.Bottom
then
aRect.Bottom := y;
end;
//rect
end;
//Unterschied
end;
//xlauf
end;
//y lauf
{ShowMessage('Das Ausführen dauerte '+IntToStr(GetTickCount - FirstTickCount)+' Ticks'+
chr(13)+'Unterschiede: '+inttostr(CountFalsePixel)+chr(13)+
'Anzahl Items Liste: '+inttostr(ListBox1.Items.Count));}
if CountFalsePixel>0
then result:=True
else Result:=False;
end;