[c++] passer une suite de commandes à un .exe

Résolu/Fermé
hugues_popovitch Messages postés 2 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 28 juillet 2008 - 25 juil. 2008 à 15:09
hugues_popovitch Messages postés 2 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 28 juillet 2008 - 28 juil. 2008 à 08:52
Bonjour,

je cherche à automatiser la création de signatures numériques en utilisant GnuPG. J'écris donc un programme c++ qui appelle l'exécutable de GPG par la fonction CreateProcess() :



#include <stdio.h>
#include <windows.h>

int main(int argc, char *argv[])
{
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
CHAR command[] = ".\\gpg\\gpg.exe --homedir .\\gpg --output .\\doc.sig --detach-sig
.\\doc.txt";

if(!CreateProcess(0, command, 0, 0, FALSE, 0, 0, 0, &si, &pi))
{
return 0; // error on launching GnuPG
}

WaitForSingleObject(pi.hProcess, INFINITE); // wait until GnuPG has finished his work

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);

return 1;
}



GnuPG est ainsi lancé dans une console, avec directement la commande de créer une signature pour le fichier doc.txt (que je remplacerai plus tard par l'argument de mon programme).
Cependant il reste une ligne de commande à entrer : c'est un mot de passe.
Or je ne sais pas comment écrire dans mon programme que je souhaite passer une nouvelle ligne de commande à l'exécutable déjà lancé. J'ai cherché sans succès sur Internet.

Quelqu'un saurait-il comment faire ?

Merci d'avance.
A voir également:

3 réponses

mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
25 juil. 2008 à 15:21
Je sais que pour envoyer des commande a GNUplot j'ai utilser les" pipes" en C.
Mais je sais pas si c'est possible avec GNUpg que je ne connais pas.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
25 juil. 2008 à 16:48
le mot de passe est saisi en ligne de commande depuis l'entrée standard.
tu peux rediriger cette entrée avec < ou | Mais pas pour tout les types de programme. Par exemple telnet ne suporte pas ce type d'indirection.Gnupg, si c'est un prog GNU, tu doit avoir les source.
Tu peux peut être inclure toutes les source dans ton programme ou tout simplement bidouiller les sources (c'est bien le open source !)
0
hugues_popovitch Messages postés 2 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 28 juillet 2008
28 juil. 2008 à 08:52
Merci de vos réponses, je vais m'atteler à ces histoires de "pipes" aujourd'hui.
0