begin process at 2012 05 28 13:07:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Appel de programme par un programme


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

Appel de programme par un programme

samedi 9 janvier 2010 à 18:54:06 | Appel de programme par un programme

ElendilAranwe

Bonjour, je sais que cette question des milliers de fois vous l'avez vu! Et vous en avez surement marre, "google tout y es!" oui et non, j'ai trouver de nombreuses réponses pour mon problème mais tout les sujets renvoies a createProcess() et il se trouve que je n'arrive pas à l'utiliser correctement.
Je suis aller sur msdn pour voir le prototype de la fonction, et j'ai des parametres que je n'arrive pas à renseigner. alors si vous pouviez m'aider a faire un appel de programme, comme sa je saurais comment faire.

données:

Je veux lancer le programme sd4hide.exe
Je suis sous Borland c++
Programmation sous C++
le chemin absolu est "C:\\Programmes\\Electronic Arts\\L'Avènement du Roi-sorcier\\sd4hide.exe"

HRESULT CreateProcess (
[in] LPCWSTR lpApplicationName,
[in] LPWSTR lpCommandLine,
[in] LPSECURITY_ATTRIBUTES lpProcessAttributes,
[in] LPSECURITY_ATTRIBUTES lpThreadAttributes,
[in] BOOL bInheritHandles,
[in] DWORD dwCreationFlags,
[in] PVOID lpEnvironment,
[in] LPCWSTR lpCurrentDirectory,
[in] LPSTARTUPINFOW lpStartupInfo,
[in] LPPROCESS_INFORMATION lpProcessInformation,
[in] CorDebugCreateProcessFlags debuggingFlags,
[out] ICorDebugProcess **ppProcess
);

merci


Du C/C++ donnez m'en j'adore en manger^^
samedi 9 janvier 2010 à 23:30:20 | Re : Appel de programme par un programme

ghuysmans99

Membre Club
Code C/C++ :
#include <stdio.h>
#include <tchar.h>
#include <windows.h>

int main(int argc, char* argv[])
{
	STARTUPINFO startupinfo; PROCESS_INFORMATION procinfo; DWORD ret;
	memset(&startupinfo,0,sizeof(STARTUPINFO));	startupinfo.cb = sizeof(STARTUPINFO);
	ret = CreateProcess(_T("C:\\Program Files\\Electronic Arts\\L'Avènement du Roi-sorcier\\sd4hide.exe"),_T(""),NULL,NULL,FALSE,0,NULL,NULL,&startupinfo,&procinfo);
	if (ret == FALSE) wprintf(_T("Erreur lors de lors de l'ouverture de l'application.\nCode d'erreur : %X\n"),GetLastError());
	//WaitForSingleObject(procinfo.hProcess,INFINITE); //si tu veux attendre la fin de son exécution
	CloseHandle(procinfo.hProcess); CloseHandle(procinfo.hThread);
	return 0;
}

---
VB.NET is good ... VB6 is better
samedi 9 janvier 2010 à 23:55:16 | Re : Appel de programme par un programme

ElendilAranwe


merci beaucoup je vais tester sa, par contre j'avoue qu'il y a des choses que je ne comprend pas:

- qu'est ce que sont les _T, ensuite pourquoi CreateProcess() à perdu des arguments?

Je sais je dois être chiant :D mais je préfère comprendre quelque chose que de revenir dans deux heures pour une ouverture d'un autre exe. mici

Du C/C++ donnez m'en j'adore en manger^^
dimanche 10 janvier 2010 à 00:13:23 | Re : Appel de programme par un programme

ghuysmans99

Membre Club
_T permet de transformer une chaîne de caractères ASCII en Unicode (c'est pour cela que printf est devenue wprintf signifiant wide printf). Je n'ai pas le même nombre d'arguments que toi pour CreateProcess malgré que je ne trouve pas d'autre prototype pour CreateProcess.
---
VB.NET is good ... VB6 is better
dimanche 10 janvier 2010 à 02:20:00 | Re : Appel de programme par un programme

ElendilAranwe



d'accord merci :) Je vais me renseigner sur wprintf je savais pas que sa existait et sur l'unicode.

bonne soirée

Du C/C++ donnez m'en j'adore en manger^^
dimanche 10 janvier 2010 à 02:20:15 | Re : Appel de programme par un programme

aardman

Membre Club
Salut,
Si c'est juste pour lancer un executable, tu as aussi ShellExecute() qui est moins embêtant à utiliser que CreateProcess().
A propos des _T, ça ne sert pas a transformer une chaine ascii en unicode, mais a faire du code générique, qui peut etre compilé au choix en ascii ou en unicode. il ne faut donc pas utiliser wprintf mais _tprintf (qui sera remplacé par printf ou wprintf).
mardi 12 janvier 2010 à 20:59:11 | Re : Appel de programme par un programme

katsankat

Membre Club
Si tu n'as pas besoin de récupérer ce qu'envoie ce programme sur la sortie standard, alors system() suffira :
system("\"C:\\Documents and Settings\\etc\\chrome.exe\"");
vendredi 15 janvier 2010 à 23:04:59 | Re : Appel de programme par un programme

ElendilAranwe

Rebonjour merci pour vos réponses :)

Katsankat j'ai essayer ta solution et je me retrouve confronter à des problèmes.

- A chaque essai de lancement du programme ( le programme permettant le lancement des autres programmes ), au milieu de celui-ci la console reste inactive, comme une attente. Ce qui est bizarre c'est que le moment auquel le programme "freeze" est toltalement aléatoire. J'ai essayer de lancer les programmes séparement et sa fonctionne.

Mon but serait de lancer les trois programmes en lancant l'exe. Un peu d'aide ne serait pas de refus merci.

ps: je voudrais vraiment effectuer ceci en C++.

PS: ce n'est pas pour un jeu craqué, jeu acheter légalement mais qui se raye. merci

Code C/C++ :
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>


void main()
{


	system( "\"C:\\Program Files\\DAEMON Tools Lite\\DTLite.exe\"" );
   system( "pause" );
	system( "\"C:\\Program Files\\Electronic Arts\\L'Avènement du Roi-sorcier\\sd4hide.exe\"" );
   system( "pause" );
   system( "\"C:\\Program Files\\Electronic Arts\\L'Avènement du Roi-sorcier\\.exe\"" );


}


Du C/C++ donnez m'en j'adore en manger^^
samedi 23 janvier 2010 à 11:56:13 | Re : Appel de programme par un programme

memspell

hello, la méthode system attend le retour du process, ce n'est visiblement pas l'effet que cherche.

Le code que ghuysmans99 est ce dont tu as besoin.

Pour faire un peu plus simple voila ce que tu pourrais utiliser :
Code C/C++ :
#include <windows.h>
void create_process_detached(const char * file_path)
{
	STARTUPINFOA lpStartupInfo;
    PROCESS_INFORMATION lpProcessInformation;
	memset(&lpProcessInformation,0,sizeof(STARTUPINFOA));	lpStartupInfo.cb = sizeof(STARTUPINFOA);
	CreateProcessA(file_path,"",0,0,0,0,0,0,&lpStartupInfo,&lpProcessInformation);
	CloseHandle(lpProcessInformation.hProcess); CloseHandle(lpProcessInformation.hThread);
}


Cette discussion est classée dans : arrive, programme, appel, in, createprocess


Répondre à ce message

Sujets en rapport avec ce message

Pb pour faire appel à un programme externe avec MFC [ par jujunio ] Bonjour, Mon prob est le suivant. j'ai réalisé un exécutable en C++.Et plutot que de tout refaire en MFC, je voudrais faire appel au programme.exe en turboC++ [ par serge_alain ] je programme sous turboc++ 4.5 dans le cadre d'un projet scolaire...mais depuis un certain temps je n'arrive plus à ajouter de fonction...j'ai comme Version de programme sous Visual 97 [ par themaste ] Salut a tous!Voila, je viens de récupérer un vieux programme dont je dois faire des mise à jour. Je dois bosser sous visual studio 97, et je n'arrive Exception [ par ROnE91 ] Bonjour, J'ai une exception qui fait planter mon programme : il arrive qu'une fonction tente d'utiliser une méthode d'un objet qui vient d'etre détrui Appel de fonction VB a partir de C++ [ par sekatirex ] car en fet je voudra fer un programme ki utile deux otre programme dont 1 en c++ et lotre en VB!en c++ c un programm de dessin et en vb un ocr !en mél Programme C sur clef USB [ par timy94 ] Bonjour.Je n'arrive pas à executer mon programme C qui se trouve dans la racine de la clef USB.Mon programme à les droits d'execution pour tout le mon problème de lib et de dll... [ par Raoul12 ] je programme sous vc++6 et j'aimerais savoir s'il est possible de faire appel à une dll externe à un programme principal sans avoir à recompiler le pr Excel et window proc [ par sailline ] Bonjour, Je n'arrive pas à récupérer l'adresse de la window procedure d'une fenetre Excel : j'obtient l'erreur 5 (Access is denied) pourtant Spy++ arr programme faisant appel à Allegro [ par sta_schmitt ] Salut à vous!!!Voilà je fais un programme qui doit récupérer une floppée de données, les traiter pour finalement faire des graphiques à l'aide d'Alleg (win32) Modifier la valeur affichée d'une fenetre [ par mogwai93 ] Bonjour,j'essaie de modifier les valeurs affichees d'un programme B à l'aide d'un programme Ale programme A arrive à recupérer la liste des objets gra


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 1,373 sec (4)

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