procedure tthrCapture.Execute;
begin
repeat
if not captureok then
begin
varcapture.getCapture ;
captureok := true;
end;
sleep(30);
until finok ;
end;
Cela se produit apres la premiere capture quand le PixelFormat est defini sur pf8bit dans ma classe tcapture
si je le defini en PF32bit là le plantage arrive moins souvent
si vous avez une idée je suis preneur
Tu as essayé de vérrouiller le canvas avant de dessiner dedans ? Essaye avec imageCapture.Canvas.Lock avant l'appel à BitBlt() et imageCapture.Canvas.Unlock après.
En fait, il faut faire ça, à CHAQUE utilisation du canvas si tu as une application multi-thread, ça explique peut etre le problème...
Par contre, tu es sur que ça ne vient pas du code que tu as *nottoyé* avant de poster ?
Ou sinon, tu pourrais nous dire la ligne exacte de l'erreur ?
pour le *nottoyé* j'ai juste viré les commentaires
la ligne qui plante c'est
BitBlt(imageCapture.Canvas.Handle,0,0,Width,Height,Dc,x,y,SRCCOPY);
apres d'autres tests
j'ais fait ceci
try
BitBlt(imageCapture.Canvas.Handle,0,0,Width,Height,Dc,x,y,SRCCOPY);
except
on e:exception do
imageCapture.canvas.TextOut(10,10,e.message);
end;
j'ai l'erreur sur la ligne Bitblt et aussi sur imageCapture.canvas.TextOut(10,10,e.message);
je vais donc tenter le canvas.lock
Merci Florenth
Avec canvas.lock çà marche nikel
le tous maintenant c'est de bien gérer les lock et unlock car apparemment çà fige le programme s'il y en a un de plus donc petite boucle sur lockcount et çà roule