Fermeture d'un processus

scharly3 Messages postés 88 Date d'inscription mardi 1 juillet 2003 Statut Membre Dernière intervention 9 juillet 2009 - 20 juil. 2007 à 20:59
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 23 juil. 2007 à 14:41
Bonjour,
Je suppose ce sujet moulte foi evoqué dans le forum mais aprés plusieur heure de recherche code source ... je vais osé la question :D
Alors voici mon code :

Public Class Form1
    Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long 'API de fermeture de Process
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long 'Ouverture de Process
    Dim IDProg As Integer
    Dim condition As Integer

    Private Sub Bouton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bouton.Click
        Dim hProcess, Termine&

        If condition = 1 Then
            IDProg = Shell("explorer http://www.google.fr")
            condition = 2
        Else

            hProcess = OpenProcess(1, False, IDProg)
            Termine& = TerminateProcess(hProcess, 4)
            condition = 1
        End If
    End Sub

Au niveau des condition , tous marche comme je le veux , au premié clique , ma page est ouverte , au deuxiéme rien ne ce passe , au troisiéme une seconde pas s'ouvre ... j'en conclu que le probléme est a ce niveau hProcess = OpenProcess(1, False, IDProg)
            Termine& = TerminateProcess(hProcess, 4)
le but étant de fermé la page précédement ouverte voili voilou ...
Merci de votre aide
   
  
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        naab = 1
    End Sub
End Class

4 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
21 juil. 2007 à 07:54
salut,

deux choses :

1/ tu es en DotNet, les types Long dans les fonctions d'api sont à remplacer par Integer.
2/ ton framework t'offre 2 belles fonctions à la place de ces api :
    System.Diagnostics.Process.Kill
    System.Diagnostics.Process.GetProcessById

la première remplace TerminateProcess, la seconde OpenProcess

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
scharly3 Messages postés 88 Date d'inscription mardi 1 juillet 2003 Statut Membre Dernière intervention 9 juillet 2009
21 juil. 2007 à 10:08
Hum je sent que le passage vers le .net va etre difficil:
J'ai donc décidé d'utilisé tes instruction apré quelque renseignement j'ai cru comprendre que Process me permetté de récupé la liste des processus en fonctionnement et aprés faire monprocessus.kill pour l'arreté , mais en pratique je ne voi pas du tous comment codé ca ? un petit coup de main ne serrait pas de refu :D Merci
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
21 juil. 2007 à 10:28
Désolé mais je ne suis qu'en vb6
mais je suppose que la méthode Kill accèpte un paramètre style :
System.Diagnostics.Process.Kill "nom_processus"
OU
System.Diagnostics.Process.Kill "chemin\nom_executable"

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 juil. 2007 à 14:41
Salut,

Je n'ai que VB6 aussi, et encore, que chez moi...
Mais ça doit ressembler tout simplement à ça :

Dim po As New Process
...
po.Start("explorer", "http://www.google.fr")
...
po.kill()
0
Rejoignez-nous