Obtenir une capture d'écran d'une application spécifique
Je sais que je peux obtenir la copie d'écran de la totalité de l'écran à l'aide de Graphiques.CopyFromScreen(). Cependant, que faire si je veux juste la capture d'écran d'une application spécifique?
Vous devez vous connecter pour publier un commentaire.
Voici un peu de code pour vous aider à démarrer:
Il fonctionne, mais il faut améliorer:
La PrintWindow win32 api de capture d'une fenêtre bitmap, même si la fenêtre est recouverte par d'autres fenêtres ou si elle est hors de l'écran:
La référence à l'RECT ci-dessus peuvent être résolus avec la classe suivante:
what to pass here
)using System.Runtime.InteropServices;
Process.WaitForIdle()
. Je suis un homme simple et enveloppé la extern appel àGetWindowRect(hwnd, out rc);
dans un do-while, avecrc.Width == 0 || rc.Height == 0
que la condition de sortie.this.Handle
Basé sur Alconja réponse, j'ai fait quelques améliorations:
Thread.Sleep(1000);
vous aurez une boucle infinie.GetWindowRect
avec un HWND qui n'est plus valide renvoie toujours zéro, ce qui signifie que lewhile
boucle dans cette réponse ne sera jamais la quitter et il suffit de graver l'UC de toujours, qui est un joli bug grave. Mais sinon, je pense que cette réponse est une solution élégante. Peut-être juste de limiter à un nombre fixe de nouvelles tentatives, et peut-être dormir un peu entre les deux. Ou de ne pas réessayer dans cette méthode.Graphics
objet.Vous pourriez regarder dans P/Invoquant win32 façon de faire cela, un article à cet effet... en quelque sorte.
Fondamentalement, passer par la peine de mettre en place un contrôleur de domaine à une image et l'envoyer WM_PRINT à la fenêtre de l'application en question. Sa jolie coquine, pour tout dire, mais peut travailler pour vous.
Fonctions dont vous pourriez avoir besoin: SendMessage, GetDC, CreateCompatibleBitmp, et La méthode.
Je ne peux pas dire que je n'ai jamais fait cela avant, mais c'est ce que je pourrais attaquer le problème. (Eh bien, je serais probablement le faire dans le plus pur C, mais encore; à peu près de la manière que j'avais de l'attaquer).