begin process at 2012 05 30 04:51:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

system() en hide


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

system() en hide

mardi 10 juillet 2007 à 04:05:15 | system() en hide

Yunchi

Bonjour, Est-il possible de ne pas afficher la fenetre de commande lorsque l'on lance un programme externe avec system("prog.exe"); ? Comme si on faisait ShellExecute(NULL,NULL,"prog.exe",NULL,NULL,SW_HIDE); J'ai un probleme avec ShellExecute et avec system y'a pas ce probleme alors je me rabat sur system .... Merci
mardi 10 juillet 2007 à 05:24:39 | Re : system() en hide

SAKingdom

Membre Club
Ben, j'ignore si c'est possible avec system mais si tu nous exposais ton problème avec ShellExecute, on serait peut-être en mesure de le régler.

C++ (@++)

mardi 10 juillet 2007 à 05:42:17 | Re : system() en hide

Yunchi

En gros j'ai une interface avec gtk. Lorsque je clique sur un bouton, ca met la valeur contenu dans un gtk_entry dans un fichier puis ca lance un programme qui se sert de cette valeur. Avec system("prog"); ca marche bien : ca enregistre la valeur de l'entry dans le fichier puis ca lance le programme. En revanche avec ShellExecute, j'ai l'impression que ca lance d'abord le programme puis ca enregistre la valeur de l'entry dans le fichier ensuite meme si dans le code, on a bien d'abord l'enregistrement de la valeur dans le fichier et ensuite la commande ShellExecute.
mardi 10 juillet 2007 à 05:47:42 | Re : system() en hide

SAKingdom

Membre Club
Je ne suis pas sûr de bien comprendre.

Tu récupère une valeur que tu stock dans un fichier grâce à fwrite ou WriteFile ou peut-importe puis quand tu exécute ShellExecute, il ouvre le fichier sans prendre en compte les modifications c'est bien ça ?

Peux-tu me montrer ce bout de code (où tu enregistre puis tu exécute ShellExecute) ?

C++ (@++)

mardi 10 juillet 2007 à 06:48:23 | Re : system() en hide

Yunchi

ca donne ca : void connect_com(){ FILE* fp; const gchar* temp; fp = fopen("com.txt","w"); if (fp){ temp = gtk_entry_get_text(GTK_ENTRY(entry1)); fprintf(fp,temp); fclose(fp); } system("connect.exe"); //ShellExecute(NULL,NULL,"connect.exe",NULL,NULL,SW_HIDE); } la fonction connecte n'a aucun probleme car ca marche parfaitement avec system mais pas bien avec ShellExecute. En fait, si je met ShellExecute, je dois lancer deux fois la fonction connect_com pour que ca soit la bonne valeur.
mardi 10 juillet 2007 à 10:39:21 | Re : system() en hide

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

A la place de ShellExecute tu peux utiliser CreateProcess, avec le membre wShowWindow de STARTUPINFO à SW_HIDE.

Concernant ShellExecute, tu peux essayer de passer "open" en deuxième paramètre, même si ça devrait le prendre comme tu met NULL.

mardi 10 juillet 2007 à 10:51:53 | Re : system() en hide

Yunchi

euh elle m'a l'air bien complexe cette fonction :D j'ai essaye CreateProcess(NULL, "connect.exe", NULL, NULL, FALSE, 0, NULL, NULL, SW_HIDE, &pi); mais pour le dernier paramatre je ne sais pas trop quoi mettre ..... sinon le 4e parametre c'est LPSECURITY_ATTRIBUTES lpThreadAttributes est-ce ca a un rapport avec les thread cad que ca lance le programme externe en parallele a une GUI par exemple ?
mardi 10 juillet 2007 à 11:52:29 | Re : system() en hide

rt15

Membre Club Administrateur CodeS-SourceS
Pour le dernier, c'est plutôt normal que tu ne sache pas quoi mettre : c'est un paramètre de sortie. Il faut juste que tu lui passe l'adresse d'une structure PROCESS_INFORMATION non initialisée.

Par contre, ton avant dernier paramètre n'est pas bon : il faut passer une STARTUPINFO, et initialisée elle.

Pour LPSECURITY_ATTRIBUTES, il s'agit des droits du thread ce qu'il a le droit de faire et pas faire (Lire tel fichier, modifier tel clé...)

Le processus est lancé en parallèle normalement... En tout cas dans le cas ou le lanceur est une GUI (On utilise WaitForSingleObject quand on souhaite attendre la fin d'un processus qu'on a lancé).

STARTUPINFO         siStartupInfo;
PROCESS_INFORMATION piProcessInfo;

memset(&siStartupInfo, 0, sizeof(siStartupInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
CreateProcess(NULL, "
connect.exe", NULL, NULL, FALSE, 0, NULL, NULL, &siStartupInfo, &piProcessInfo);



mercredi 11 juillet 2007 à 04:11:12 | Re : system() en hide

Yunchi

en fait j'ai vu le probleme avec ShellExecute ou CreateProcess je pense: quand on a une fonction type : void funct(){ instruction1(); system(); / ShellExecute(); / CreateProcess(); instruction2(); } si on utilise system, ca execute l'instruction1, lance le prog externe avec system puis execute l'instruction2. pour ShecllExecute ou CreateProcess, j'ai l'impression que ca exucute l'instruction1 puis execute l'instruction2 et enfin lance le programme externe. c'est peut-etre du au fait que j'ai pas mis les bons parametres pour les fonctions ShellExecute ou CreateProcess ...
mercredi 11 juillet 2007 à 08:49:07 | Re : system() en hide

rt15

Membre Club Administrateur CodeS-SourceS
Le truc, c'est que shellExecute ou CreateProcess n'attendent pas que le programme que tu lances soit terminer pour rendre la main au créateur, qui fort logiquement passe à l'instruction suivante.

Pour attendre que le programme lancé soit terminé, on utilise WaitForSingleObject.

STARTUPINFO         siStartupInfo;
PROCESS_INFORMATION piProcessInfo;

ZeroMemory(&siStartupInfo, sizeof(siStartupInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
CreateProcess(NULL, "
connect.exe", NULL, NULL, FALSE, 0, NULL, NULL, &siStartupInfo, &piProcessInfo);
WaitForSingleObject(piProcessInfo.hProcess, INFINITE);

1 2

Cette discussion est classée dans : exe, system, prog, hide, shellexecute


Répondre à ce message

Sujets en rapport avec ce message

PROG EN C, C++ ou autre langage... [ par sremy ] salut, je pose mon pb :Imaginons qu'on ai un prog. MS-DOS appelé prog1.exe qui une fois lancé est en attente d'un password dans la ligne de commande. ShellExecute [ par michel1968 ] Allo !Comment puis-je demandé si un programme est déjà ouvertavant d'exécuté ShellExecute.je pense par exemple quelque chose comme ca,---------------- Service + execution de prog java [ par Pedroalx ] Bonjour je souhaite creer un service NT qui lance un programe java.J'ai deja reussis a creer un exe qui permet d'executer mon programme java, mais des gros probleme shellexecute [ par morgandetoi06 ] bonjour voila j ai un probleme :dj ai une liste de programme à executer, je met le nom des cdes programmes dans un tableau et les execute comme ceci : Programme dans un autres comment faire ? O_o [ par oshin ] Bijour,J'ai un autre petit souci, j'ai un programme .exe que j'ai deja mais dont je ne posséde pas la source et je voudrais savoir si il est possible Récupération de la valeur de retour d'un .exe dans un prog en C [ par stephanieL ] Salut tout le monde!Je voudrais lancer un exe d'un programme en c, et récupérer la valeur de retour de cet exe dans ce prog en c.Le main de l'exe à la ShellExecute ne fonctionne pas et marche avec system [ par chasse18 ] Bonjour je voudrais executer la ligne de commande suivante avec sellexecute pour éviter l'ouverture d'une feneetre DOSCOPY C:\0.mpg /B + C:\1.mpg /B c ShellExecute dans une DLL executer par Winlogon de la base de registre [ par guitoulefoux ] Bonjour,J'ai fais une DLL qui s'execute au Winlogon de mon OS (base de registre).Cette DLL doit normalement faire plusieurs tests et executer une autr port // pas moyen de s'en servir... [ par baptor ] salut à tous, je suis en train de développer une petite appli pour piloter des leds sur une carte electronique, par le port //.Rien de bien compliqué Problem avec ShellExecute et System() [ par Sens0r ] Salut,je rencontre des problèmes si j'essaie d'exécuter un fichier batch que je viens de créer avec mon prgramm C++.En effet le programme ne déclence


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,655 sec (3)

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