Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2916 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Suivante
Auteur Sujet :

[VB] Tout résolu sauf une dernière pertinente ^^

n°906933
zytrahus5
wait what?
Posté le 24-11-2004 à 19:02:29  profilanswer
 

Reprise du message précédent :
j'ai trouvé une source en VB sur vbfrance :
 

Private Sub Copie_Ecran(ByVal Fichier As String, _
                        ByVal Qualité As Integer)
 
    ' Cette routine permet de recopier l'image actuelle de l'écran dans une PictureBox
    ' et de sauver cette image dans un fichier BMP
 
    Dim hdc As Long, hWnd As Long
    Const ScrCopy = &HCC0020
 
    On Error Resume Next
    Screen.MousePointer = vbHourglass
     
    ' Efface les éventuelles anicennes copies d'écran
    If Dir(Fichier & ".bmp" ) <> "" Then _
        Kill (Fichier & ".bmp" )
    If Dir(Fichier & ".jpg" ) Then _
        Kill (Fichier & ".jpg" )
    DoEvents
     
    ' Récupère le handle de l'image du Bureau,
    ' la recopie bit à bit dans la forme CopieEcran
    ' et la sauve en BMP
    Load frmCopieEcran
    frmCopieEcran.WindowState = vbMaximized
    hWnd = GetDesktopWindow()
    hdc = GetDC(hWnd)
    BitBlt frmCopieEcran.hdc, 0, 0, Screen.Width / Screen.TwipsPerPixelX, _
                                    Screen.Height / Screen.TwipsPerPixelY, hdc, 0, 0, ScrCopy
    DoEvents
    SavePicture frmCopieEcran.Image, Fichier & ".bmp"
    DoEvents
    Unload frmCopieEcran
 
    ' Conversion de l'image au format JPG pour prendre moins de place
    Dim Capture As New aDIBSection
    Set Capture = New aDIBSection
    Capture.CreateFromPicture LoadPicture(Fichier & ".bmp" )
    Call SaveJPG(Capture, Fichier & ".jpg", Qualité)
    DoEvents
    Set Capture = Nothing
    Screen.MousePointer = vbDefault
     
End Sub


 
 
c'est du BMP, ça a l'air tout simple, vais essayer de la modder pour prendre le print écran sur la fenetre active uniquement.
 
Doit bien y avoir des attributs accessibles pour les dimensions de la fenetre et les positions non?


---------------
http://www.zytratech.com
mood
Publicité
Posté le 24-11-2004 à 19:02:29  profilanswer
 

n°907032
zytrahus5
wait what?
Posté le 24-11-2004 à 20:53:45  profilanswer
 

finalement j'ai trouvé un code plus simple...
 
 
 
 
 
 
 

   Call keybd_event(vbKeySnapshot, 1, 0, 0)
     
    SavePicture Clipboard.GetData(vbCFBitmap), Fichier


 
dans mon code pour enregistrer mon screen, j'ai ces deux lignes consécutives.
 
ça marche bien sauf que :
 
en fait la premiere ligne copie dans le presse papier la fenetre active.
la seconde copie le contenu du presse papier dans un fichier.
 
mais entre les deux, le process n'a pas le temps de se faire, autrement dit, ça marche d'une fois sur l'autre.  
 
 
 
 
Si par exemple le fichier existe pas, je clique, il copie dans le clipboard, mais n'a pas le temps de le mettre dans lefichier, du coup il créé un fichier avec un contenu vide.
 
Avant que je clique une seconde fois, le contenu du presse papier est maintenant rempli par l'image précédente, et quand je clique il recopie a nouveau dans le presse papier,mais encore une fois ça va trop vite du coup il copie l'ancien screen... et ainsi de suite.
 
 
 
 
Ma question, est il possible de forcer VB a attendre qu'il ait fini une ligne avant de passer a la suivante ?
 
 
[:romf]


---------------
http://www.zytratech.com
n°907110
mareek
Et de 3 \o/
Posté le 24-11-2004 à 22:05:39  profilanswer
 

Le pb ne vient pas de VB, mais de la façon dont tu fais ta capture d'écran. VB effectue bien les action dans l'ordre:  
1-il lance l'évennement "On a appuyé sur la touche printscreen" (<>mettre le contenu de la fenêtre dans le clipboard)
2-il récupère le contenu du clipboard
 
Pour que ton code marche, tu as plusieurs solutions:
-Mettre l'instruction doevents entre tes 2 appels de foinction. ça de vrai laisser le temps à windows de faire sa capture d'écran
-implémenter une vrai capture d'écran comme sur cette page:
http://vbnet.mvps.org/index.html?c [...] hotkey.htm

EDIT:
-Utiliser le code que tu as trouvé sur VBFrance


Message édité par mareek le 24-11-2004 à 22:06:57

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°907117
zytrahus5
wait what?
Posté le 24-11-2004 à 22:11:49  profilanswer
 

les deux codes viennent de vbfrance, le premier plus complet certainement, mais ne voulant capturer que la fenetre active c'est plus compliqué surtout vis à vis du second code, surtout bcp plus compact. (peut etre moins efficace ou moins propre, je suis loin d'avoir le niveau pour en juger :( )
 
en tous cas merci, je vais essayer de faire fonctionner les deux et voir ce qui est le plus efficace :jap:


---------------
http://www.zytratech.com
n°907124
mareek
Et de 3 \o/
Posté le 24-11-2004 à 22:16:11  profilanswer
 

zytrahus5 a écrit :

les deux codes viennent de vbfrance, le premier plus complet certainement, mais ne voulant capturer que la fenetre active c'est plus compliqué surtout vis à vis du second code, surtout bcp plus compact. (peut etre moins efficace ou moins propre, je suis loin d'avoir le niveau pour en juger :( )
 
en tous cas merci, je vais essayer de faire fonctionner les deux et voir ce qui est le plus efficace :jap:


Le premier code est une solution propre qui fonctionnera à tous les coup alors que le 2ème tiens plus de la bidouille: Il demande à Windows de faire une capture d'écran et espère qu'il sera assez rapide pour que la capture soit terminée avant qu'il regarde le contenu du presse papier.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°907130
zytrahus5
wait what?
Posté le 24-11-2004 à 22:18:33  profilanswer
 

mareek a écrit :

Le premier code est une solution propre qui fonctionnera à tous les coup alors que le 2ème tiens plus de la bidouille: Il demande à Windows de faire une capture d'écran et espère qu'il sera assez rapide pour que la capture soit terminée avant qu'il regarde le contenu du presse papier.

en effet, et doevents joue le role d'une pause d'un délai prédéfini ou est ce qu'il se base sur quelque chose pour savoir si la copie presse papier a été faite ?


---------------
http://www.zytratech.com
n°907133
mareek
Et de 3 \o/
Posté le 24-11-2004 à 22:20:23  profilanswer
 

zytrahus5 a écrit :

en effet, et doevents joue le role d'une pause d'un délai prédéfini ou est ce qu'il se base sur quelque chose pour savoir si la copie presse papier a été faite ?


[:f1key] (j'ai la flemme d'expliquer et l'aide de VB le fait très bien)


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°907137
zytrahus5
wait what?
Posté le 24-11-2004 à 22:22:38  profilanswer
 

[:romf]


---------------
http://www.zytratech.com
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[Résolu]Difference entre Mozilla Firefox et IE2 formulaires collés l'un a l'autre[resolu]
probleme de redirection [resolu][résolu] sous-menus dynamique et evennement onClick
pb de filets noires avec la librairie GD[resolu]menu deroulant ->selected avec les sessions[resolu]
souci de CSS et a:visited [résolu]téléchargement de fichier distant [résolu]
tester l'existence d'un fichier sur le serveur [résolu]fonction mail() -> adresse du messager[resolu]
Plus de sujets relatifs à : [VB] Tout résolu sauf une dernière pertinente ^^


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)