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?