[c++] passer une suite de commandes à un .exe
Résolu
hugues_popovitch
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
hugues_popovitch Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
hugues_popovitch Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- [c++] passer une suite de commandes à un .exe
- Invite de commandes - Guide
- Passer de qwerty a azerty - Guide
- .Exe - Télécharger - Divers Utilitaires
- Passer de windows 7 à windows 10 - Accueil - Mise à jour
- Passer de majuscule à minuscule - Guide
3 réponses
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.
Mais je sais pas si c'est possible avec GNUpg que je ne connais pas.
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 !)
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 !)