process.kill fonctionne t il sous Win 2000?

aluccard Messages postés 22 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 11 octobre 2007 - 20 juil. 2007 à 14:15
aluccard Messages postés 22 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 11 octobre 2007 - 20 juil. 2007 à 14:52
Bonjour,


je fait une application sous windows XP et j'utilise Visual Basic Express 2005.


Mon application possède cette Sub

    Sub KillProcessus(ByVal NomDuProcessus As String)

        'ceci supprimera tous les processus de ce nom (voir exemple)


        Dim SystemeExploitation As String = My.Computer.Info.OSFullName

        Dim p() As Process

        Dim r As Process

        p = Process.GetProcessesByName(NomDuProcessus)

        For Each r In p

            Call r.CloseMainWindow()

            If SystemeExploitation = "Microsoft Windows XP Professional" Then

                r.Kill()

            End If

        Next


    End Sub

comme vous pouvez le voir, j'ai mit une condition qui exécute que le r.Kill() si
mon application est sous XP car lorsque je l'utilise sous Windows 2000
Professional, j'obtient une exception qui n'a pas l'air d'aimer la
méthode Process.kill.


quand je vais sur msdn2 : http://msdn2.microsoft.com/en-us/library/system.diagnostics.process.kill.aspx


je vois dans les OS autorisé
Platforms

Windows
98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition,
Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows
Server 2003, Windows XP Media Center Edition, Windows XP Professional
x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

Windows Server 2000 SP4 correspond t il a Windows 2000 Professiona ?, ce qui expliquerait que la métohde Process.kill ne fonctionne pas sous Windos 2000 Pro ce qui me surprendrait

Dans ce cas, peut on faire un Process.kill sous windows 2000 Pro ? car j'ai peur qu'en faisant uniquement le CloseMainWindow(), mon PC risquerai de planter du fait que c'est une application qui est censé tourner pendant toute la nuit (pouvant faire la Sub KillProcessus() une a deux fois par minute)

j'espere avoir été le plus précis possible, n'hésitez pas a me demander plus de détails


Merci


Alu

3 réponses

aluccard Messages postés 22 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 11 octobre 2007
20 juil. 2007 à 14:23
pour répondre a [auteurdetail.aspx?ID= 15669 EBArtSoft] qui me propose d'empecher le process en question de demarrer. Car un kill n'est pas sans consequences.

Le problème est que j'ai pas le choix, je dois en fait lancer et fermer sans cesse une application. Donc j utilise un process. CloseMainWindow() et un process.kill pour fermer correctement mon application car le process.kill() permet de libérer de la mémoire je crois.

donc comme me dit

[auteurdetail.aspx?ID =17710 Exploreur]Windows Server 2000 n'est pas pareil que Windows 2000...
Server >> Serveur....

ce qui me parrait étrange dans ce cas est qu'en regardant la pluspart des méthodes sur le site msdn2, on a jamais la Platforme Win 2000 Pro donc  ceci signifierait que le VB 2005 ou VB.net ne soit pas optimisé sur Windows 2000?
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
20 juil. 2007 à 14:36
Tu pourrais dans ce cas piloter l'application soit en lui indiquant de quitter comme avec closemainwindows soit en injectant une dll ce qui pourrait necesiter une petite modification du programme en question.

Le probleme est qu'en "killant" le processus tu ne maitrise pas vraiment ton programme et c'est bien dommage. Peut etre que si tu nous en disais plus sur l'application on trouverais ue autre solution.

Sinon utilise directement l'API TerminateProcess qui marche a 100% sur tout les windows dans des conditions d'utilisation normales

@+

E.B.
0
aluccard Messages postés 22 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 11 octobre 2007
20 juil. 2007 à 14:52
c'est une application toute simple sous Windows, ça ouvre une fenetre et je dois la fermer a certains moment puis la rouvrir, la fermer, ... car elle communique en local avec d'autre application sur le même PC.

Je pense qu'elle a rien de particulier, mais comme tu peux le voir dans ma fonction je fais de toute façon un CloseMainWindow()

Apres, peut etre que le CloseMainWindow() suffit a la fermeture d'une application, je ne sais pas si la méthode CloseMainWindow() fait une fermeture "propre", c'est a dire que je vais pas avoir de problème de... mémoire par exemple, qu'elle va se remplir a chaque ouverture de l'application car la fermeture ne sait pas fait proprement je pensais que le kill permet de faire une fermeture "propre", de libérer en même temps de la resources par exemple).

Sinon je peux aussi tenté d'utiliser l'API TerminateProcess, j'ai trouvé un tuto ici (pour ceux qui sont interessé)
http://www.vbfrance.com/infomsg_FERMETURE-APPLICATION_855297.aspx
0
Rejoignez-nous