Bloquage souris pdt execution de l'application

yossib Messages postés 40 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 15 mai 2008 - 18 déc. 2006 à 18:15
yossib Messages postés 40 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 15 mai 2008 - 19 déc. 2006 à 10:08
Bonjour à tous,

Comme je pense que d'autres ont déjà résolu ce genre de probleme alors je pose la question ici en espérant avoir rapidement une réponse.

 Voila mon soucis :

je crée une apllication permettant de faire un screenshot (imprim ecran) toutes les x secondes (min 5sec).
Ce screenshot enregistre l'image au format jpg pour prendre le moinde place possible.

Cependant à chq screenshot la souris reste bloquée pdt qq millisecondes et cela est génant si le programme tourne tout le temps. j'ai essayé de mettre en thread mais je maitrise pas encore au top cette fonctionnalité.

voici le code faisant appelle a la fonction Shotscreen

'capture de l'ecran

Dim t
As Threadt =

New Thread(
AddressOf ShotScreen)t.Start()

J'attend vos conseil, avis ou résolutions ....

Merci à tous par avance !

7 réponses

Utilisateur anonyme
18 déc. 2006 à 18:19
Salut,

Ben, ou est le problème ?
Pour l'instant, ce que tu a fait est juste.






__________
Kenji
0
yossib Messages postés 40 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 15 mai 2008
18 déc. 2006 à 18:24
le problème c'est que ca bloque qd meme la souris pdt quelques millisecondes et je veux pas :(


 
0
Utilisateur anonyme
18 déc. 2006 à 18:40
Si c'est ca on ne peut rien faire. C'est du à la lenteur de la prise de la capture.
Donne nous plutôt le code que tu emplois pour faire la capture.





__________
Kenji
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
18 déc. 2006 à 21:15
moi je dirais que ça vient de la compression en jpg !

@+

E.B.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yossib Messages postés 40 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 15 mai 2008
19 déc. 2006 à 09:49
je viens de tester sans la compression jpg et ca donne tjrs la meme chose :(

voici le code en entier du module :

Imports

System.Threading
Module

Module1

Public
Declare
Function BitBlt
Lib
"GDI32" (
ByVal hDestDC
As IntPtr,
ByVal X
As
Integer,
ByVal Y
As
Integer,
ByVal nWidth
As
Integer,
ByVal nHeight
As
Integer,
ByVal hSrcDC
As IntPtr,
ByVal SrcX
As
Integer,
ByVal SrcY
As
Integer,
ByVal Rop
As
Integer)
As
Integer

Public
Declare
Function GetForegroundWindow
Lib
"user32" ()
As IntPtr

Public
Declare
Function GetWindowRect
Lib
"user32.dll" (
ByVal hWnd
As IntPtr,
ByRef lpRect
As Rectangle)
As
Integer

Public
Declare
Function GetDesktopWindow
Lib
"user32" ()
As IntPtr

Public DesktopRect
As Rectangle = Screen.GetBounds(
New Point(0, 0))
'obtient la taille du bureau sous forme de rectangle dans DesktopRect

Public cpt = 0
'compteur timer

'Capture tout l'écran

Sub ShotScreen()

Dim image
As Bitmap

'Dim tmppathimage = ShotScreenPart(DesktopRect.Width, DesktopRect.Height)

'appele la fonction ShotScreenPart avec les dimensions du bureau.

'Dim tmpbmap As New System.Drawing.Bitmap(image)

'tmppath = Application.StartupPath & "\image - " & Minute(Now) & ".jpg"

'tmpbmap.Save(tmppath, System.Drawing.Imaging.ImageFormat.Jpeg)

End
Sub 

'Capture une partie de l'ecran, defini par les deux variable width et height (dimensions du rectangle), et des valeur optionels X et Y (base du rectangle)

Public
Function ShotScreenPart(
ByVal nwidth
As
Integer,
ByVal nheight
As
Integer,
Optional
ByVal x
As
Integer = 0,
Optional
ByVal y
As
Integer = 0)
As Bitmap

Dim resultBmp
As Bitmap =
New Bitmap(nwidth, nheight)
'crée l'objet bitmap cible

Dim SrcGraph
As Graphics = Graphics.FromHwnd(GetDesktopWindow)
'crée l'objet "graphics" SelGraph a partir du handdle du bureau

Dim BmpGraph
As Graphics = Graphics.FromImage(resultBmp)
'crée un objet graphics à partir du bitmap

Dim bmpDC
As IntPtr = BmpGraph.GetHdc()
'obtient le device context du bitmap

Dim hDC
As IntPtr = SrcGraph.GetHdc()
'obtient le device context du bureauBitBlt(bmpDC, 0, 0, nwidth, nheight, hDC, x, y, &HCC0020)

'"bit-block transfer" : copie chaque bits affichés dans le device context hDC dans le device context du bitmap SrcGraph.ReleaseHdc(hDC)

'relache le device context du bureauBmpGraph.ReleaseHdc(bmpDC)

'relache le device context du bitmapSrcGraph.Dispose()

BmpGraph.Dispose()

'libere toutes les ressources crées par l'objet (useless?)

Return resultBmp

End
FunctionEnd

Module
0
Utilisateur anonyme
19 déc. 2006 à 09:56
Salut,

J'ai pas vérifier ton code mais regarde ici :
http://www.codyx.org/snippet_faire-capture-ecran_8.aspx


Ce sont pratiquement les mêmes methodes mais qui utilisent moins de trucs.





__________
Kenji
0
yossib Messages postés 40 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 15 mai 2008
19 déc. 2006 à 10:08
En fait a bien y regarder c'est la même provenance de code donc je pense pas que ca changera qq chose reellement...
0
Rejoignez-nous