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

C

 > 

Divers

 > 

Débutant(e)

 > 

Lancer et arreter un EXE avec ShellExecuteEx


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

Lancer et arreter un EXE avec ShellExecuteEx

mardi 21 juillet 2009 à 10:24:37 | Lancer et arreter un EXE avec ShellExecuteEx

taggle

Salut voici mon puissant code qui lance notepade2.exe

Code C/C++ :
#include <windows.h>

#include <stdlib.h>
#include <shellapi.h>
#include <stdio.h>
using namespace std;

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

SHELLEXECUTEINFO ExecuteInfo;
memset(&ExecuteInfo, 0, sizeof(ExecuteInfo));
ExecuteInfo.cbSize = sizeof(ExecuteInfo);
ExecuteInfo.lpFile = "C:\\Notepad2.exe";
if(ShellExecuteEx(&ExecuteInfo) == FALSE)
{
// erreur
}
printf("looool\n");
system("PAUSE");
return EXIT_SUCCESS;
}


J'aimerai savoir s'il est possible via des identifiants d'arreter via une commande l'application que je viens de lancer. Merci

mardi 21 juillet 2009 à 10:36:34 | Re : Lancer et arreter un EXE avec ShellExecuteEx

taggle

j'ai trouvé :

Code C/C++ :
#include <windows.h>

#include <stdlib.h>
#include <shellapi.h>
#include <stdio.h>
using namespace std;

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

STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;

memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
if(CreateProcess(NULL,"c:\\Notepad2.exe ",0,0,FALSE,
CREATE_DEFAULT_ERROR_MODE,0,0,
&siStartupInfo,&piProcessInfo) == FALSE)
{
// erreur
}


Sleep(2000);
PostThreadMessage(piProcessInfo.dwThreadId, WM_QUIT, 0, 0);


printf("looool\n");
system("PAUSE");
return EXIT_SUCCESS;
}



j'aime me parler à moi meme

mardi 21 juillet 2009 à 18:38:22 | Re : Lancer et arreter un EXE avec ShellExecuteEx

rt15

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

Salut,

taggle a écrit

j'aime me parler à moi meme



Bin on va essayer de te faire un peu la conversation alors !

A la fin, faut faire un CloseHandle sur les handles récupérés dans la PROCESS_INFORMATION. (Si si, c'est dans la doc).

CloseHandle(piProcessInfo.hProcess);
CloseHandle(piProcessInfo.hThread);

Le :
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
sert à rien, c'est un paramètre de sortie.

Le :
using namespace std;
Ca sert quand tu fais du C++ et que tu inclus des headers de la STL (iostream...). Là t'as que du C...

Tu n'as plus besoins de shellapi.h, qui te servait pour ShellExecute.

mardi 21 juillet 2009 à 20:42:45 | Re : Lancer et arreter un EXE avec ShellExecuteEx

taggle

re salut, mon truc marche avec notepad2 mais pas avec java.exe, je sens que je vais etre obligé d'utiliser tskkill

y'a pas des solutions intermédiaires?

mercredi 22 juillet 2009 à 09:40:39 | Re : Lancer et arreter un EXE avec ShellExecuteEx

rt15

Membre Club Administrateur CodeS-SourceS

Bon déjà, plutôt qu'un utilitaire quelconque, utilise TerminateProcess, avec le handle piProcessInfo.hProcess, avant le CloseHandle.

java.exe... -> Application console ? (javaw.exe pour une application GUI sans console).

Si c'est une appli console, tu peux envoyer un ctrl + C avec GenerateConsoleCtrlEvent. (Mais visiblement faut que l'appli appelante soit console, cf les remarques sur la page.

Si c'est une application GUI, un SendMessage de WM_CLOSE peut fonctionner. Il faut cependant que tu récupères un handle sur la fenêtre. Pour cela il faut énumérer les fenêtres avec EnumWindows, utiliser GetWindowThreadProcessId et comparer le résultat avec ce qu'il y a dans piProcessInfo.

vendredi 24 juillet 2009 à 01:22:31 | Re : Lancer et arreter un EXE avec ShellExecuteEx

taggle

merci de ta réponse pour le TerminateProcess je vais essayer quand je retournerais dessus
Donc si j'ai suivi

-piProcessInfo.hProcess ca identifie le procéss lancé?
-CloseHandle(piProcessInfo.hProcess) ca demande gentiement de se fermer?
-terminateProcess ca force la fermeture .
-CloseHandle(piProcessInfo.hThread) ca fait quoi ?


j'utiliser un java pour lancer un .jar

vendredi 24 juillet 2009 à 09:46:39 | Re : Lancer et arreter un EXE avec ShellExecuteEx

rt15

Membre Club Administrateur CodeS-SourceS

CloseHandle ne permet pas de demander la fermeture gentiment. Sous Windows, pour manipuler les objets systèmes (Processus, thread, bitmap, fichier...), on les désigne par leur handle.

Et une fois que l'on a plus besoin de handle, bin faut appeler CloseHandle.



Cette discussion est classée dans : exe, lancer, include, arreter, executeinfo


Répondre à ce message

Sujets en rapport avec ce message

Lancer programmes simultanement... [ par Annihilator ] bien voila j' aimerais lancer differents programmes simultanement, ou plusieurs fois directement le meme programme, mais je ne sais pas comment le fai Salut je voudrai savoir comment faire pour lancer une appl. en C/C++ [ par jarodx64 ] comment faire pour lancer une application en C/C++ sur : - Win32: j'ai commencer un programme et je voudrai lancer une application externe Win16/32 (m DEV C++ -> pr lancer "exe" de mon programme [ par grandebutant ] svp Sur DEV C++, je voudrais lancer un exe de mon programmeAAAauuuuuuuu seeeeeccccouuurrrr!!Merci aux dieux de la programmation !! lancer un exe avec son programmme [ par zoreol ] je veut lancer un exe et recuperer se qu'il affiche(ou retourne) a partir de mon programme j'y arrive avec Win exec mais je n'arrive pas a recup se qu Lancer un exécutable à partir d'un programme C [ par yoyo_du_49 ] Est-il possible de lancer un exécutable (.exe) à partir d'un programme C en écrivant une instruction particulière dans le main() ?Exemple:lancer exemp Lancer un exe depuis mon appli [ par crocejf2000 ] Salut tout lmonde,Je sais qu'il est possible de lancer un exe et créant un nouveau thread, mais il me semble qu'il y a une autre methode, et le proble Lancer une application .exe avec argument a partir d'une application cpp [ par ian_solo ] Bonjour,J'explique mon probleme, je cherche a ecrire sur un port // a partir d'une application en cpp, mais je ne trouve aucune commande permettant de lancer un .exe, et cassos! [ par Arnaud16022 ] hello tt le monde, je voudrais faire un launcher, c'est a dire un prog qui lance mon jeu, se ferme tt de suite apres, et le jeu se poursuit sans qu'i Lancer une seule instance de mon .exe [ par Helau ] Voilà, tout est résumé dans le titre !Je voudrais pouvoir lancer qu'une seule fois mon .exe.Mais, je ne sais pas comment controler si mon prog est déj Comment savoir si un Exe est lancer ? [ par Solerodemiko ] Bonjour,Comment savoir si un Exe est lancer ?MerciSolero


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,343 sec (4)

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