begin process at 2010 02 10 02:36:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Windows

 > 

Process

 > 

Fermeture d'application


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

Fermeture d'application

jeudi 7 décembre 2006 à 11:36:26 | Fermeture d'application

xavier77

Bonjour à tous,
J'ai développé deux applications (app1 et app2) en VB6.
app1 est une sorte de menu qui sert a appeler app2. app2 est lancé avec la commande SHELL puis j'utilise l'API SetParent pour que app2 soit dans app1... Je sauvegarde le handle de app2 de maniere a ce que si l'utilisateur reclique sur le menu de app1 pour app2, cela reactive app2 sans le lancer a nouveau. Pour cela, je controle avec l'API IsWindow si app2 est deja ouvert ou pas.

Jusque la tout se passe plutot bien... par contre, lorsque app2 plante (et oui ca arrive malheureusement lol!!) il se ferme mais reste dans la liste des processus actif.
Je cherche donc un moyen de pouvoir tuer ce processus sachant que j'ai toujours son Handle de stoché...
J'ai essayé d'utiliser de les API TerminateProcess et CloseHandle mais sans succes.

Merci de votre aide...
Xavier
jeudi 7 décembre 2006 à 16:16:22 | Re : Fermeture d'application

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Je crois que tu appel TerminateProcess avec le handle de la fenêtre et non du processus. Attention : il y a une différence.

Tu peux récupérer le handle de ton processus en le crant via CreateProcess.

Bonne chance.

@+
lundi 11 décembre 2006 à 14:17:00 | Re : Fermeture d'application

ShareVB

salut,

partant d'un handle de fenêtre, et pour obtenir un handle de processus, tu peux utiliser l'api GetWindowThreadProcessId afin de récupérer le processid du programme puis utiliser openprocess pour obtenir un handle du processus (avec le droits PROCESS_TERMINATE) que tu vas utiliser avec terminateprocess puis closehandle...

ou sinon effectivement, http://vb.developpez.com/faq/?page=Systeme#close_exe

ShareVB
vendredi 15 décembre 2006 à 09:14:08 | Re : Fermeture d'application

xavier77

merci pour vos réponse...
Les api terminateprocess et closehandle marche correctement sauf dans mon cas car il faut considérer que le programmes est planté.
vendredi 15 décembre 2006 à 09:43:45 | Re : Fermeture d'application

ShareVB

salut,

normalement terminateprocess c'est comme kill -9 sous linux, c'est vraiment du brute de chez brute...normalement quelque soit l'état d'un processus que tu as créé, tu dois pouvoir le killer...le seul cas où tu ne peux pas le faire c'est quand un débuggeur est en fonction pour ton programme qui plante...

http://forum.sysinternals.com/forum_posts.asp?TID=4464
http://www.experts-exchange.com/Programming/Programming_Platforms/Win_Prog/Q_10225778.html
http://support.microsoft.com/kb/231844

ShareVB
vendredi 15 décembre 2006 à 16:44:39 | Re : Fermeture d'application

rt15

Membre Club Administrateur CodeS-SourceS
C'est moche, mais tu peux peut être essayer la commande tskill du DOS. Elle prend le nom de l'exe en paramètre. Elle est présente sous XP, et au moins souvent sous 2k.

shell "tskill app2"
devrait suffire.

Mais c'est certainement rien d'autre qu'un TerminateProcess...

lundi 18 décembre 2006 à 19:58:51 | Re : Fermeture d'application

zavier666

Tu trouveras le détail de toutes les fonctions utilisées sur mon site API @ la loupe [ Lien ] :

Voici le tuto sur "terminer un processus":


I) Préparatifs
Pour les besoins de l'exemple, il est nécessaire d'ouvrir le Bloc-notes.

II) Obtenir le handle du processus à tuer
Dans un premier temps, il est nécessaire d'obtenir le handle de la fenêtre du Bloc-notes:
handle_fen = FindWindow(vbNullString, "Sans titre - Bloc-notes")

A partir de ce handle de fenêtre, il est possible d'obtenir le handle du processus correspondant:
r = GetWindowThreadProcessId(handle_fen, handle_process)

III) Ouvrir le processus
Cette étape ouvre le processus en mode Interrogation et Terminate, ce qui permettra d'obtenir le code de sortie du processus et de le tuer par la suite
hproc_ouvert = OpenProcess(&H1 + &H400, False, handle_process)

IV) Obtenir le code de sortie du processus
Maintenant que l'on connaît le handle du processus (processus ouvert en mode interrogation), il est possible d'obtenir le code de sortie de celui-ci:
r = GetExitCodeProcess(hprocess_ouvert, exit_code)

V) Tuer le processus
r = TerminateProcess(hproc_ouvert, exit_code)

VI) Fermer la handle
r = CloseHande(hproc_ouvert)




Cette discussion est classée dans : application, fermeture, api, app2, app1


Répondre à ce message

Sujets en rapport avec ce message

Utiliser un contrôle d'un autre proces [ par Brosske ] BonjourJe me demande si c'est possible d'utiliser un contrôle style listbox qui se trouve dans un autre processus, par exemple ajouter une ligne dans API win32 fermeture d'un programme [ par gglafouine ] Bonjour, J'aimerai savoir comment je peux fermer l'application par défaut ouverte pour lire un morceau de musique.Es qu'il est possible de retrouver l Tester fermeture form fille [ par ptitelili059 ] Bonjour Je développe en ce moment une application de gestion en MDI. J'ai plusieurs formulaires filles et je voudrais tester avant de fermer mon appl Pb de fermeture de mon application VB [ par ymerej ] Bonjour, lorsque l'utilisateur clic sur la croix en haut à droite, le programme n'est plus visible mais en fait, il tourne encore ce qui est tres mauv Fermeture application par visual basic [ par sacotte ] Bonsoir,Avec visual basic je lance un fichier Html par firefox avec l'instruction Shell    Set Exec = CreateObject("WScript.Shell")    Url = "SRD.html Annulation de fermeture d'application Excel [ par pilounet54 ] Bonjour, J'ai une Application excel dans laquelle 2 classeurs sont ouverts. Je souhaiterais annuler la fermeture de l'application si l'utilisateur c fermeture port série [ par taf06 ] bonjour, je travaille sur une application qui récupère des données via un port série.Comment peut on fermer le port série et le libérer une fois que l Fermeture d'application [ par nitho ] Bonjour à tous, Dites je programme dans vb6 et dans mon application l'utilisateur modifie le contenu d'un label (indirectement par code)et j'aimerais Bouton de fermeture [ par dghaiesaymen ] Salut tout le monde. J'ai un petit problème en ce qui concerne mon application, en fait j'aimerai bien pouvoir maitriser le bouton de fermeture de l'a Fermeture application [ par agparchitecture ] Bonjour à vous tous.Je suis confronté à un drole de problème sous ma version vb2005 express. Je m'explique:Mon projet est paramétré avec démarrage par


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

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

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