Il n'y a pas d'API Windows facile pour modifier l'intégralité du contenu de l'écran. Mais cela pourrait être fait au niveau du pilote de périphérique.
Sinon, vous devez recourir à certaines astuces Windows API: placer une "fausse" fenêtre sur l'ensemble du bureau, en boucle: saisir tout le contenu de l'écran sans saisir le contenu de la fenêtre, faire votre traitement pour obtenir l'effet monochrome, puis affichez cela sur la fausse fenêtre. Oui, c'est hacky et lent, mais possible. Encore plus hacky, quand vous obtenez des clics de souris pour "traverser" la fausse fenêtre (beaucoup d'appels SetWindowsRgn
). Donc, multiplateforme signifie ici utiliser GDI, bien que certaines anciennes API DirectDraw puissent fonctionner, dans ce cas, vous avez beaucoup plus de facilité avec les superpositions matérielles (et de meilleures performances). Bien que je ne sois pas sûr combien de cartes supportent réellement les superpositions de matériel, et si les nouvelles versions de Windows supportent les anciennes API DirectDraw. Une autre possibilité est que si la carte vidéo a une API C# ou C++ ou C, alors vous pouvez faire ce que vous voulez avec la carte sans écrire le code du pilote de périphérique.
Ensuite, il y a CUDA, mais je ne l'ai pas encore essayé. Je sais que c'est pour le traitement de flux sur les cartes nVidia, mais je me demande si cela pourrait vous permettre d'accéder facilement à la vidéo.
Qu'est-ce qui vous fait penser que le logiciel auquel vous vous êtes connecté est * multiplate-forme *? Tout ce que je peux voir est des références à diverses versions de Windows. – thkala
Je suis corrigé. Je voulais dire que cela fonctionne sur différentes versions de fenêtres, cross plate-forme était très mal formulé. – Dyte
Vous devrez peut-être créer un pilote ou appliquer 'Wide System Hooks' ... Ce ne sera pas simple spécialement avec du code managé. – fardjad