CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

vb net : capture d'ecran d'une appli.

blade196
blade196
Niveau 10
20 mai 2010 à 22:28:18

bonjour les gens,

la question doit paraitre assez simple à résoudre et pourtant je me bat depuis des semaine pour créer cette petite lib. on trouve quelques solution qui s'en rapproche en vb6 et en c# mais rien en vb net...

voici le principe exacte : je veux faire une capture d'écran de la zone client d'une appli. pour simplifier la chose j'ai decidé de lancer moi meme l'appli histoire de pouvoir récupérer plus facilement son handle mais sa n'a guerre de succès.

__________________________________
Dim proc As Process = New Process
proc.StartInfo.FileName = "c:\koko.ext"
proc.StartInfo.CreateNoWindow = False
proc.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
proc.Start()

'bout de code approximatif qui permet de boucler jusqu'a ce
'que la fenetre soit lancé. je teste si le nom de la fenêtre
'est vide ou pas.
while proc.winName = ""
end While

Dim f1 As Form = Form.FromHandle(proc.Handle) ' la sa plante

Dim r1 As Rectangle = f1.Bounds
'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("D:\resutestimg.bmp")

__________________________________________________
_

voila j'esseye de creer une form a partir du handle du pocess mais il n'apprecie pas et je ne sais pas comment recuperer le handle de la fenetre du proc si ce n'est pas le meme.

j'ai essayé d'utiliser les api (findWindow/getWindow, ect) histoire de recuperer le handle d'une appli le nom de la fenetre mais plusieur peuvent avoir le meme nom et surtout, je ne devait toujorus pas recuperer le bon handle...

un peu blazé j'ai aussi essayé simplement un imprime ecran de la fenetre. j'ai vu qu'il fallait juste simuler l'appui sur les boutton (%PRTSC) mais c'est du vb6 et la version vb net qui passe par my.computer.jeNeSaitPlusLeReste sort en erreur comme quoi l'appli n'a pas acces aux controle windows (desl tout cette partit la est approximative, je n'ai pas le code avec moi). c'est surement un probleme de droit etant donnée que je ne travail pas en admin mais je ne peu pas utiliser cette commande si n'importe qui ne peu pas la lancer...

bref si qq1 a la moindre petite piste, n'importe quoi, je suis preneur.

merci d'avance

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment