3 votes

Mode kiosque pour application en 16 bits héritée

J'ai besoin de minimiser et de maximiser de manière programmée une application en mode plein écran 16 bits. Malheureusement, DosBox n'est pas une option car cette application communique avec des périphériques non pris en charge par DosBox.

J'ai réussi à écrire du code (lourd sur l'API Win32) qui peut définir le focus, envoyer les touches alt + entrée et minimiser/maximiser.

Tout fonctionnerait, cependant, certains utilisateurs ont découvert que Alt + Entrée pouvait quitter le plein écran et ont commencé à en abuser.

Je peux désactiver Alt + Enter en utilisant les paramètres dans un PIF, mais cela casse mon approche d'envoi programmé de ces touches.

Y a-t-il une meilleure alternative pour obtenir que NTVDM bascule de manière programmée en plein écran que d'envoyer Alt + Entrée?

J'ai utilisé Spy++ et j'ai constaté que pour passer en plein écran, NTVDM changeait la résolution du système en 640 x 480.

J'ai essayé d'appeler l'API ChangeDisplaySettings pour basculer les résolutions comme nécessaire, mais lorsque je définis 640 x 480, NTVDM continue de s'exécuter comme une application en fenêtré.

Je pense à mettre en place un hook de clavier de bas niveau pour filtrer Alt + Enter. Je pourrais désactiver le hook pendant le bref instant où mon application l'envoie. Cela semble être une solution risquée qui pourrait avoir beaucoup d'effets secondaires. Je ne suis pas non plus sûr que cela fonctionnerait car NTVDM ne semble pas utiliser une boucle de messages pour traiter les entrées clavier. L'API SendMessage ne donne pas de résultats, et Alt + Enter doit être envoyé en utilisant l'API keybd_event. Des idées?

2voto

Loren Pechtel Points 5730

Que diriez-vous d'une approche différente - arrêtez d'essayer de le bloquer. Au lieu de cela, suivez la fenêtre (disons 10x par seconde), si elle n'est pas en plein écran et que vous n'avez pas envoyé un Alt-Entrée dans les dernières secondes, envoyez-en un.

Si quelqu'un appuie sur Alt-Entrée, cela ouvre une fenêtre et revient immédiatement en plein écran.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X