Est-il possible de détecter une capture d'écran ou l'enregistrement?
Je suis en train de faire un Winforms programme pour un ami, et l'une des fonctions qu'il veut en œuvre est de masquer le contenu d'une zone de texte à l'enregistrement; le sens qu'il veut à l'abri des captures d'écran et l'écran d'enregistrement.
À ce point, j'ai essayé d'expliquer la futilité de ce point, expliquant que
- Il y a des tas de programmes qui peuvent être utilisés pour l'enregistrement/capture de l'écran, et d'essayer de regarder pour eux tous, non seulement serait trop exhaustive pour l'expliquer, il serait également inutile, depuis n'importe quel programmeur vaut son sel peuvent mettre sur pied un programme personnel qui peut prendre une capture d'écran sans utiliser les noms connus
- Même SI vous en quelque sorte de gérer bloc de chaque programme, une personne peut juste prendre une photo de l'écran
Pour répondre à la question de prendre une photo de l'écran, il a dit que, bien que nous ne pouvons pas le programme idéal, nous POUVONS le rendre aussi dur que possible pour quelqu'un de "hack" il. (Opinion personnelle est qu'il est une sorte de droit, mais je ne pense pas que nous devrions aller à la mer pour quelque chose avec un simple travail autour)
Sa réponse à la question qu'il y a des tonnes de différents programme d'enregistrement a été cependant assez intéressant, mais je ne sais pas suffisant pour lui donner la réponse avec confiance. Il en conclut qu'il devait y avoir une action commune dans tous les programmes, car à un certain degré, ils sont tous en récupérer une copie des données qui s'affiche sur l'écran à utiliser, et que nous devrions être en mesure de, théoriquement, être en mesure de détecter et de réagir en conséquence.
Donc ma question est: est-ce que quelqu'un sait si il y a une action commune pour les programmes d'enregistrement de l'écran, et si il y a une action commune, ce que c'est?
Vous devez vous connecter pour publier un commentaire.
Tous les programmes de capture d'écran fonctionnent de la même que dans le interagir avec le moteur graphique pour capturer l'image de l'écran à un pount dans le temps, mais tgat est comme il va, il n'y a pas de déclencheur d'événement lorsqu'une capture d'écran est fait et donc aucun moyen de le détecter quand une capture se produit.
Edit: La façon dont une capture d'écran du programme d'accès à l'écran est en appelant
GetDC(NULL)
. Puis il copie le contenu dans une image bitmap à l'aide de la BitBit fonction. Il n'y a aucun évènement déclenché lors de l'appel deGetDC()
, il y a peut être une méthode intégrée dans Windows qui n'a pas été documentée par Microsoft et qui est enfoui au plus profond de l'API Windows, mais rien de ce qui a été documenté en ce moment.Pour plus d'informations sur ce prendre un coup d'oeil à Windows Confidentiel: Ce que Vous Voyez Est Ce que Vous obtenez
GetDC(NULL)
est en effet pas une vraie solution. Peu de Blitting il blits de la primaire GDI Surface et NON à partir de la mémoire de trame elle-même. Vous DEVEZ accrocher dans DWM pour obtenir une image de bureau. Il y a quelques applications qui n'ont pas de tirage sur GetDC(NULL) et l'un d'eux est la Loupe. Et la plupart des jeux. Démarrer la Loupe, ensemble pour objectif de vue, frappé PrintScreen et avis que vous obtenez la fenêtre noire. Essayez d'impression écran dans n'importe quel Mode de jeu Exclusif.