yossib
Messages postés40Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention15 mai 2008
-
18 déc. 2006 à 18:15
yossib
Messages postés40Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention15 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
yossib
Messages postés40Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention15 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
'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?)