Fermer un programme externe ?

Résolu
kalantho Messages postés 19 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 13 mars 2006 - 11 mars 2006 à 15:20
kalantho Messages postés 19 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 13 mars 2006 - 13 mars 2006 à 17:44
Bonjour :)
Voilà, étant encore dans le développement de mon utilitaire, j'ai un petit problème pour fermer un programme externe.
En fait en cliquant sur un bouton de mon projet, j'ai une application externe qui se lance, et je souhaiterais qu'en cas de second clic, l'application en question se ferme et se relance.
J'ai bien trouvé diverses solutions pour tuer les processus et fermer des programmes mais ça ne correspondait jamais avec mon cas, j'ai essayé d'intégrer des ligne et de les réadapter à mon projet mais malheureusement à chaque fois y avait un problème. :(
Pourriez vous me venir en aide s'il vous plaît? :)

Merci d'avance ^^

12 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 mars 2006 à 16:12
comme presque toute fonction, tu dois l'appeler avec un paramètre, pas lui attribuer une valeur.





si ton caption est vraiment "TeamSPeak 2", alors remplace-le dans la constante ci-dessous.

sinon voici un exemple. il faut ouvrir notepad avant








Option Explicit

'

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _

(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

'

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _

(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'

Private Const WM_CLOSE As Long = &H10

Private Const HTCAPTION As Long = 2&

'

Private Const MON_TITRE As String = "Sans titre - Bloc-notes"

'

'

Private Sub Command1_Click()

Dim lHwnd As Long

lHwnd = FindWindow(vbNullString, MON_TITRE)



If lHwnd = 0 Then

MsgBox "titre non-trouvé!!!"

Else

Call SendMessage(lHwnd, WM_CLOSE, HTCAPTION, ByVal 0&)

End If

End Sub




<small> Coloration
syntaxique automatique [AFCK]</small>







PCPT [AFCK]
3
mictif Messages postés 105 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 14 février 2013 2
11 mars 2006 à 17:16
il faut passer par le handle et l'api sendmessage ...avec tout ca tu devrais trouver ...
0
kalantho Messages postés 19 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 13 mars 2006
11 mars 2006 à 18:36
Désolé mais ça fait seulement une semaine que j'ai commencé à apprendre le VB, et je dois bien avouer que je suis un peu perdu sur ce coup là lol
Pourrais tu m'expliquer de manière un peu plus précise la démarche à suivre s'il te plaît? :)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 mars 2006 à 19:37
salut,

comment peux-tu authentifier l'appli en question? elle a un caption fixe (genre "Document Sans Titre") ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kalantho Messages postés 19 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 13 mars 2006
11 mars 2006 à 20:23
Oui tout à fait elle a un caption fixe :) En fait c'est TeamSpeak 2 pour être plus précis.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 mars 2006 à 02:33
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal
hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
As Long

Private Const WM_CLOSE = &H10

Private Const HTCAPTION = 2
0
kalantho Messages postés 19 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 13 mars 2006
13 mars 2006 à 15:29
Merci beaucoup PCPT pour ce code!!! Tu m'ais vraiment d'un très grand secours :) Donc en fait je fais les déclarations ça y a pas de soucis, mais ensuite je dois placer dans mon command1 (par exemple) les lignes :
FindWindowA = TeamSPeak 2
SendMessageA = kill TeamSpeak 2
?

Enfin je vais essayer et pi ça marche pas je me permettrais peut être de venir t'ennuyer de nouveau :)
Merci encore en tout cas et bonne journée!
0
kalantho Messages postés 19 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 13 mars 2006
13 mars 2006 à 15:37
Ah bah non ça marche pas...j'ai encore beaucoup de mal avec les Déclarations apparement moi. :(
0
kalantho Messages postés 19 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 13 mars 2006
13 mars 2006 à 16:57
Alors je dis merci MONSIEUR PCPT ^^ Cela fonctionne à merveille :-O Je suis vraiment impressionné,déjà par le fait que le code fonctionne merveille, et deuxièmement car tu m'as présenté ça d'une manière vraiment très propre et très complète!
Je n'avais pas du tout réussi à trouver un code tel que celui ci (aussi "simple" et nickel) sur le site :) Merci beaucoup!

Si je veux l'adapter à deux programmes par exemple, donc deux boutons différents, j'ai juste à faire :

Private Const MON_TITRE1 As String = "Sans titre - Bloc-notes"
Private Const MON_TITRE2 As String = "MSN Messenger"

et dans les command bouton :

Private Sub Command1_Click()
Dim lHwnd As Long
lHwnd = FindWindow(vbNullString, MON_TITRE1)
'etc...
Private Sub Command2_Click()
Dim lHwnd As Long
lHwnd = FindWindow(vbNullString, MON_TITRE2)
'etc...

N'est ce pas? :)
0
kalantho Messages postés 19 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 13 mars 2006
13 mars 2006 à 17:16
C'est bon ça marche!!! C'est formidable, cela va m'offrir un paquet de possibilités ^^ Merci encore PCPT!
@ très bientôt en espérant pouvoir aider quelqu'un à mon tour :)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 mars 2006 à 17:30
c'est bien çà oui



après, si par exemple tu as 10 programmes, tu peux faire un groupe de
contrôle pour les boutons, les noms des applications dans un tableau,
puis utiliser l'index du bouton pour aller chercher le caption voulu.



bon courage @+



ps : pense au bouton Valider...
0
kalantho Messages postés 19 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 13 mars 2006
13 mars 2006 à 17:44
Merci (de nouveau ^^) pour toutes explications complémentaires qui me seront d'une grande aide pour mes prochaines applications, je prend bien note de tout cela car j'n'ai pas envie de me retrouver comme un idiot devant mon écran quand j'en aurais besoin :D
C'est vraiment sympa de ta part de m'avoir offert autant d'aide :)
@ bientôt et merci ^^
0
Rejoignez-nous