Je fais une application de capture d'écran et tout se passe bien. Tout ce que j'ai à faire est de capturer la fenêtre active et de prendre une capture d'écran de cette fenêtre active. Quelqu'un sait-il comment je peux faire cela?
c#
screenshot
active-window
utilisateur
la source
la source
Réponses:
http://www.developerfusion.com/code/4630/capture-a-screen-shot/
la source
pour capturer l'utilisation actuelle de la fenêtre
la source
Je suggère la prochaine solution pour capturer n'importe quelle fenêtre active actuelle (pas seulement notre application C #) ou tout l'écran avec la détermination de la position du curseur par rapport au coin supérieur gauche de la fenêtre ou de l'écran respectivement:
la source
Rect
par SystemRectangle
, mais après cela, la fonction aGetWindowRect
renvoyé un mauvais rectangle. Au lieu deRight
etTop
, il définitWidth
etHeight
du rectangle de sortie.var thisWindowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;
placeVoici un extrait de code pour capturer soit le bureau, soit la fenêtre active. Il n'a aucune référence à Windows Forms.
Comment capturer tout l'écran:
Comment capturer la fenêtre active:
À l'origine trouvé ici: http://www.snippetsource.net/Snippet/158/capture-screenshot-in-c
la source
Le code de KvanTTT fonctionnait très bien. Je l'ai un peu étendu pour permettre un peu plus de flexibilité sur le format de sauvegarde, ainsi que la possibilité de sauvegarder par hWnd, .NET Control / Form. Vous pouvez obtenir une image bitmap ou enregistrer dans un fichier, avec quelques options.
la source
Je suppose que vous utilisez
Graphics.CopyFromScreen
pour obtenir la capture d'écran.Vous pouvez utiliser P / Invoke pour GetForegroundWindow ( puis obtenir sa position et sa taille ) pour déterminer la région à partir de laquelle vous devez copier.
la source
Vous pouvez utiliser le code de cette question: Comment puis-je enregistrer une capture d'écran directement dans un fichier sous Windows?
Modifiez simplement
WIN32_API.GetDesktopWindow()
la propriété Handle de la fenêtre que vous souhaitez capturer.la source
Un petit ajustement de la méthode static void ImageSave () vous donnera la possibilité de l'enregistrer. Le crédit revient à Microsoft (http://msdn.microsoft.com/en-us/library/sfezx97z.aspx)
Votre événement button_click doit être codé comme ceci ...
la source
Si vous souhaitez utiliser du code géré: Cela capturera n'importe quelle fenêtre via ProcessId.
J'ai utilisé ce qui suit pour rendre la fenêtre active.
J'ai utilisé l'écran d'impression pour capturer une fenêtre.
la source
Utilisez le code suivant:
la source
Basé sur la réponse d'ArsenMkrt, mais celui-ci vous permet de capturer un contrôle dans votre formulaire (j'écris un outil par exemple qui contient un contrôle WebBrowser et que je veux capturer uniquement son affichage). Notez l'utilisation de la méthode PointToScreen:
Ayant l'objet Bitmap, vous pouvez simplement appeler Enregistrer dessus
Ce qui précède suppose que le GC saisira le bitmap, mais il est peut-être préférable d'assigner le résultat de someControl.getScreenshot () à une variable Bitmap, puis de disposer cette variable manuellement une fois que vous avez terminé avec chaque image, surtout si vous faites cette capture souvent ( disons que vous avez une liste de pages Web que vous souhaitez charger et en enregistrer des captures d'écran):
Mieux encore, pourrait utiliser une clause using, qui présente l'avantage supplémentaire de libérer les ressources bitmap même en cas d'exception à l'intérieur du bloc using (child):
Mettre à jour:
Maintenant, l'outil WebCapture est déployé par ClickOnce ( http://gallery.clipflair.net/WebCapture ) à partir du Web (a également un bon support de mise à jour automatique grâce à ClickOnce) et vous pouvez trouver son code source à https://github.com/Zoomicon / ClipFlair / tree / master / Server / Tools / WebCapture
la source