Ciao a tutti, sono nuovo del forum e devo dire che fino ad ora ho trovato moltissimi argomenti interessanti...
Spero che possiate aiutarmi perchè ho un problema che non riesco a risolvere, vi posto intanto il codice:
procedure TForm1.Refresh;
var
Desktop : HDC;
Result : Tbitmap;
begin
Result := TBitmap.Create;
Desktop := GetDC(0);
try
try
Result.PixelFormat := pf32bit;
Result.Width := 1680;
Result.Height := 1050;
BitBlt(Result.Canvas.Handle, 0, 0, result.Width, Result.Height, Desktop, 1680, 0, SRCCOPY);
Result.Modified := True;
finally
ReleaseDC(0, Desktop);
end;
except
Result.Free;
Result := nil;
end;
Image1.Picture.Bitmap.Assign(result);
result.Free;
result.FreeImage;
end;
Questo codice funziona, in pratica devo vedere in tempo reale su un Timage lo stato corrente del monitor secondario che ho attaccato allo stesso pc ma in un altra stanza per vedere dei video, con un cavo lungo 10Metri;
praticamente chiamo questa procedura da un timer impostato su 30mS, e ho settato a true la proprietà Stretch della Timage. ho provato anche con la proprietà Proportional ma le immagini Flickerano in modo fastidioso.
il problema è che l'applicazione funziona, ma mi occupa più del 50% della cpu e tutti i programmi vanno a rilento nonostante abbia messo un quad core Q6600 come processore...
esiste qualche altro metodo per fare una cosa simile? vorrei capire come fanno i programmi tipo VNC a creare desktop remoti in rete utilizzando il 5-6% della cpu...
Grazie mille a tutti quelli che mi risponderanno!