begin process at 2012 05 29 05:49:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

Faire écrier qch a mon Prog derriere la CMD


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Faire écrier qch a mon Prog derriere la CMD

mardi 21 février 2006 à 17:47:36 | Faire écrier qch a mon Prog derriere la CMD

Sens0r

Salut,
je suis en train d'ecrire un programme en C++, il ouvre une CMD avec CreateProcess, imaintenant je voudrai qu'il écrive qch derière la CMD. Dans mon exemple "dir".

Mais cela ne marche pas, la CMD fonctione elle en soit, si j'y inscrit manuellement qch il n'y a pas de probleme, mais je ne parviens pas a faire écrire qch au programme.

Quelqu'un peut il m'aider? Ca fait plussiers semaines que je suis bloqué a cuase de ce Pprobleme, je ne trouve pas la faute... Je serai content si qu'un avait un tuyau.

Salutations,
Sens0r
[code]
HANDLE hIn;
hIn = GetStdHandle(STD_INPUT_HANDLE);        
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);



        if (hIn != INVALID_HANDLE_VALUE)
        {
            bool y=TRUE;
            AllocConsole();
            STARTUPINFO si = { sizeof(si) };
            si.dwFlags = STARTF_USESTDHANDLES;
            si.hStdInput = hIn;
            si.hStdOutput = hOut;
           

            PROCESS_INFORMATION  pi;
            char                 szExe[] = "cmd.exe";
            while (y){
                if(CreateProcess(0, szExe, 0, 0, TRUE, 0, 0, 0, &si, &pi))
                    {
                    for(;;)
                        {
                 
                       
                        const char *dir= "dir\r\n";
                            DWORD written = 0;
                        WriteFile (hIn,dir,strlen(dir),&written,NULL);      
                        }
                    }
                }
            }
[/code]
mardi 21 février 2006 à 20:53:58 | Re : Faire écrier qch a mon Prog derriere la CMD

KeniiyK

Membre Club

Salut, si tout simplement tu ecris sur la sortie standard cela ne marche pas ?? genre printf ou std::cout ?

Sinon il existe une/des fonction(s) pour simuler l'appui et le relachement de touche clavier mais je ne me souvient plus de leur nom....

KeniiyK
mardi 21 février 2006 à 21:00:52 | Re : Faire écrier qch a mon Prog derriere la CMD

AlexN

Comme le fait judicieusement remarquer KeniiyK, tu t'es trompé de descripteur. de la même manière que que écris sur stdout, tu doit écrire sur hOut et pas hIn.

WriteFile (hIn,dir,strlen(dir),&written,NULL);  
par
WriteFile (hOut,dir,strlen(dir),&written,NULL); 


Sinon,
La commande CMD accepte l'option "/K ligne_de_commande" :
tu remplaces :
char szExe[] = "cmd.exe";
par
char szExe[] = "cmd.exe /K dir\r\n";



mardi 21 février 2006 à 21:03:17 | Re : Faire écrier qch a mon Prog derriere la CMD

Sens0r

Excellent!
Merci ler gars ;)

j'essaie et je vous dir si ca marche, dans tout les cat, big thx

Sens0r
mardi 21 février 2006 à 21:29:08 | Re : Faire écrier qch a mon Prog derriere la CMD

Sens0r

Ok, j'ai testé.

Mais j'ai encore certains problemes...

Tout d'abord doit-je laisser WriteFile (hOut,dir,strlen(dir),&written,NULL); dans le handle hIn? Oubien le placer dans le hOut?

Si je le laisse dans le Handle hInil m'affice "dir" mais ne l'execute pas, est-ce que quelqu'un sait pourquoi?

De plus:
char szExe[] = "cmd.exe /K dir\r\n";
ne marche pas, mais cela n'importe guere car dans mon projet sela ne marcherai pas, car j'utilise un buffer car il s'agit du'un projet utilisant des sockets...

Je suis très content de votre aide, j'espère pouvoir compter sur vous encore un peu...
;)
Sens0r
mardi 21 février 2006 à 21:45:10 | Re : Faire écrier qch a mon Prog derriere la CMD

AlexN

Ca ne marche pas ? fait moi un copier coller de ca stp

#include "stdafx.h"
#include <windows.h>

int main(int argc, char* argv[]) {

HANDLE hIn;
hIn = GetStdHandle(STD_INPUT_HANDLE);       
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);

    if (hIn != INVALID_HANDLE_VALUE) {

        bool y=TRUE;
        AllocConsole();
        STARTUPINFO si = { sizeof(si) };
        si.dwFlags = STARTF_USESTDHANDLES;
        si.hStdInput = hIn;
        si.hStdOutput = hOut;


        PROCESS_INFORMATION pi;
        char szExe[] = "cmd.exe /K dir\r\n";
        if(CreateProcess( 0, szExe, 0, 0, TRUE, 0, 0, 0, &si, &pi)) { }
    }
    return 0;
}



mardi 21 février 2006 à 21:48:19 | Re : Faire écrier qch a mon Prog derriere la CMD

AlexN

d'autre part ton programme tourne en rond la variable de boucle n'est jamais mis à jour !!
Relis toi avant de poser des questions et d'affirmer des trucs !!!

mardi 21 février 2006 à 21:56:42 | Re : Faire écrier qch a mon Prog derriere la CMD

Sens0r

Mh... tu as raison ton programme marche... mh alors il y a un probleme quelquepart d'autre...

Je ne voulais surtout pas te vexer lorsque j'ai dir que cela ne marchait pas, je voulais en fait dire que cela ne marchait pas pour mon prog...

Mh mais si j'ai un Buffer je ne peux pas le mettre comme tu as mis "dir" oubien?
Que me propose tu la?

Je te remercie beaucoup!

Sens0r
mardi 21 février 2006 à 21:59:04 | Re : Faire écrier qch a mon Prog derriere la CMD

Sens0r

desolé si je me suis mal exprimé... je voulait vraiment pas te vexer, ni affirmer que c'etait faux...

cela est peut etre lié au fait que le francais n'est pas ma langue maternelle...

excuse stp

Merci beaucoup
mardi 21 février 2006 à 22:03:05 | Re : Faire écrier qch a mon Prog derriere la CMD

AlexN

Tout d'abord doit-je laisser WriteFile (hOut,dir,strlen(dir),&written,NULL); dans le handle hIn? Oubien le placer dans le hOut?

Je ne comprend pas ta question...
Je comprend "placer un descripteur dans un autre"..pas possible
peux tu préciser ?

1 2

Cette discussion est classée dans : handle, cmd, dir, hin, qch


Répondre à ce message

Sujets en rapport avec ce message

Faire exécuter plusieurs commandes à la cmd dans la même Console [ par Sens0r ] Bonjour,j'airais besaoin d'un coup de main de votre part.J'ai un programme qui devrait exécuter quelques commandes dans la cmd.exe après l'avoir lancé faire executer des lignes de commande a cmd [ par Mick7 ] Salut, voila je m'exlique je veux executer cmd (avec CreateProcess par exemple) et lui passer plusieurs lignes de commande une apres les autres  par e ODBC en C [ par oxifis974 ] Bonjour tout le mondeJe cherche a me connecter à une base de données en C. SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); // la version d'ODB Deamnde d'aides sla réalisation d'aun programme adaptable [ par gledyvfr ] BOnjour Pourriez vous m'aider dans la réalisation du programme adaptable comme suit, merci d'avance  Explications: KillTimer sur un timer sans handle ??? [ par nascimo ] Voila mon problème, je n'arrive pas à killer mon timer car je n'ai pas son handle ...void __fastcall TraitementTimer(int temps) {  MSG msg;  HWND gnha Info sur les include [ par jose12 ] Bonjour, contexte : Je ne suis pas développeur mais admin réseau. Je connais un peu le VB et divers langage Web, et j'ai une vision très très succint Intéraction entre 2 programmes [ par ssmint ] Bonjour à tous,afin de mieux vous orienter, le but de mon prog est d'executer cmd.exe, de tapez des commandes puis de récupérer l'affichage...Pour ce Récupération de Handle [ par Gendal67 ] Bonjour à tous,J'ai un petit souci et j'espère que les plus habiles sauront me répondre car je suis un peu embêté là.Voila, j'aimerais récupérer le ha PID et HANDLE [ par CleFac ] Bonjour,J'aimerai savoir comment récupérer l'HANDLE d'une fenêtre quand on connais son PID.Merci d'avance police d'edit de boite de dialogue [ par by_rabbit_08 ] Bonsoir!J'ai une boite de dialogue, crée dans un fichier resource, dans la quelle j'ai un edit. Comment est-ce que je fais changer la police de cet ed


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales