Capture d'écran en .net 2.0 (sans api)

Soyez le premier à donner votre avis sur cette source.

Vue 23 886 fois - Téléchargée 2 398 fois

Description

Ce matin en lisant mes Feeds RSS, je suis tombé sur cette source : http://www.codeproject.com/csharp/ScreenCapture.asp

Après l'avoir lu et nettoyer de ce qui ne sert à rien... je vous la livre ;)

Cette source permet de faire des captures d'écran en .net sans utiliser les API win32... (enfin pas directement)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
14
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
2 juillet 2010

oui dsl, je sais que ce n'est normalement pas le meilleur endroit pour poser ma question mais c'est plus en désespoir de cause que je reviens te demander conseil.
j'ai déjà posté un message sur le forum mais qui n'a pas eu grand succès. et ta source étant ce qui se rapproche le plus de ce que je recherche, je me suis dis que tu verrai surement rapidement ce qui cloche dans ma pseudo solution
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
tu sais ici ce n'est pas un forum, on n'est pas là pour résoudre les problèmes sur tes sources... mais pour parler de ma source :)

pourquoi ne pas poster un message sur le forum ?
Messages postés
14
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
2 juillet 2010

bon aller on va tenter une dernière fois de demander conseil. pour me simplifier la vie j'ai decidé de lancer moi meme l'appli histoire d'etre sur d'avoir le bon handle mais le probleme persiste

Dim proc As Process = New Process
proc.StartInfo.FileName = fileName
proc.StartInfo.CreateNoWindow = False
proc.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
proc.Start()
proc.WaitForInputIdle()

Dim f1 As Form = New Form(proc.MainWindowHandle) 'ou proc.handle mais aucun ne marche, f1 vaut nothing

Dim r1 As Rectangle = f1.RectangleToScreen(f1.ClientRectangle)
Dim bmp As Bitmap = New Bitmap(r1.Width, r1.Height, PixelFormat.Format32bppArgb)
Using g As Graphics = Graphics.FromImage(bmp)
g.CopyFromScreen(r1.Left, r1.Top, 0, 0, r1.Size, CopyPixelOperation.SourceCopy)
End Using

bmp.Save(pictureName)
proc.CloseMainWindow()
proc.Close()
Messages postés
14
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
2 juillet 2010

merci de ton aide. je pensai pouvoir me débrouiller avec sa mais j'ai un problème pour recuperer ma fenêtre que je ne comprend pas.

f = Form.FromHandle(CaptureScreen.GetWindow(CaptureScreen.FindWindow(vbNullString, "StarUML"), 0))
le méthode getWindow n'est peut être pas la plus adapté mais je n'en ai pas trouvé d'autre.
f reste null et je ne sais pas pourquoi. ma fenêtre StarUML est réduit dans ma barre des taches et je peu faire un closeWindow dessus si je la restaure.
je n'arrive pas non plus a faire de showWindow dessus pour la restaurer

si tu a une idée je suis preneur sinon si tu peu juste m'indiquer une voie vers ou chercher sa devrait me suffire
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
Oui, il est possible de faire une capture d'une autre fenêtre...
Si mes souvenir sont bon, si tu connais le hWnd de la fenêtre, tu peux faire :

Form f = Form.FromHandle( unhWnd ) as From;
Afficher les 17 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.