DOS

cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 - 17 mars 2006 à 14:02
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 17 mars 2006 à 18:35
Bonjour,

Comment écrire à n'importe quel endroit dans une fenêtre DOS ?

Je voudrais afficher un pourcentage de progression dans une fenêtre DOS sans que ça change de ligne à chaque changement de valeur...

-- Pourquoi faire simple quand on peut faire compliquer --

8 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 mars 2006 à 15:08
Salut, en .NET 2.0 la classe Console est bien plus complète, il y'a notamment la méthode Console.SetCursorPosition. C'est possible aussi en .NET 1.1 via l'API Windows.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 mars 2006 à 15:23
Si ça se trouve c'est juste ça que tu veux :

// Les espaces c'est pour éffacer l'ancienne valeur.
Console.Write( "\r \r" + myString );
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
17 mars 2006 à 15:42
Merci de tes réponses...
je suis en Frameworks 1.1
Peux-tu être plus explicit sur ta première réponse ?
Avec quelle API ?

-- Pourquoi faire simple quand on peut faire compliquer --
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 mars 2006 à 15:59
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 mars 2006 à 17:00
Voilà rapidement ce que ça donne :

class Program
{
[ StructLayout( LayoutKind.Sequential ) ]
private struct COORD
{
public short x;
public short y;
}


[ DllImport( "Kernel32.dll", SetLastError = true ) ]
private static extern IntPtr GetStdHandle( int handle );


[ DllImport( "Kernel32.dll", SetLastError = true ) ]
private static extern bool SetConsoleCursorPosition( IntPtr handle, COORD pos );


private const int STD_OUTPUT_HANDLE = -11;


static void Main( string[ ] args )
{
// Unmanaged
IntPtr handle = GetStdHandle( STD_OUTPUT_HANDLE );
COORD coord = new COORD( );
coord.x = 10;
coord.y = 10;
SetConsoleCursorPosition( handle, coord );


// Managed
Console.Write( "Hello" );
Console.Read( ); // wait..
}
}
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
17 mars 2006 à 17:26
merci

Je viens d'avoir un gros problème avec mon PC,
Dès que je rétablit le minimum vital je test

-- Pourquoi faire simple quand on peut faire compliquer --
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
17 mars 2006 à 17:44
ça fonctionne plutot bien merci

Comment tu fais pour récupérer la dernière position du curseur écrite avant l'utilisation de l'API ?

-- Pourquoi faire simple quand on peut faire compliquer --
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 mars 2006 à 18:35
Y'a pas la fonction GetConsoleCursorPosition donc je pense qu'il faut passer par GetConsoleScreenBufferInfo.
0
Rejoignez-nous