cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 2006
-
3 mars 2005 à 12:40
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 2006
-
5 mars 2005 à 11:15
Bonjour,
Dans les propriétés avancées des raccourcis PIF, il y a une case à cocher «Empêcher la détection de Windows par les applications MS-Dos».
Quel est donc le code C++ permettant à une application 16 bits de Turbo C++ de détecter Windows ? C'est le principe utilisé par l'application ScanDisk.exe qui se lance ou qui lance ScanDiskW.exe si Windows est lancé.
Ce doit être compatible avec Turbo C++, car l'EXE doit être en 16 bits. Mais si vous avez une solution pour les consoles 32 bits en C++, alors il sera possible d'adapter par la suite.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 5 mars 2005 à 11:15
Tu as raison de nous faire penser à des variables d'environnement. Je viens de piger comment on les récupère. Mais comme j'ai quelques soucis avec le C++, je propose plutôt un exemple naturel en Turbo Pascal:
program Environn;
uses Dos;
var I : integer;
begin for I := 1 to EnvCount do WriteLn(EnvStr(I));
end.
Sous Windows, dans les résultats, on note celui-ci:
CMDLINE =WIN
En mode Ms-Dos après reboot spécial, on a:
CMDLINE=environn.exe
En résumé:
=> sous Windows, CMDLINE vaut "WIN"
=> sous Dos, CMDLINE vaut le nom de l'application
Cependant, c'est pas encore bon, car en lançant l'application depuis COMMAND.COM, l'application se détecte hors Windows (ce qui est faux). Quant à l'application WIN.COM, elle ne se fait pas piéger. Y'a donc autre chose... Ca serait sympa que qqn regarde les variables que le C++ affiche, car de mon côté avec Turbo Pascal, certaines ne se récupèrent pas, comme 'WINDIR' par exemple qui apparaît en minuscules (les autres étant en majuscules).