Tuer proprement un processus

[Résolu]
Signaler
Messages postés
43
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
22 avril 2013
-
Messages postés
43
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
22 avril 2013
-
Bonjour a tous,

Après quelques recherches non fructueuse sur le site, je viens m'adresser a vous.

Je conçois un soft qui tourne sur un écran tactile.
Pour que l'utilisateur puisse écrire quelque chose je lance le clavier visuel :


Process ClavierV; //En variable globale

private void frmParametre_Load(object sender, EventArgs e)
{
     //Ouverture du clavier visuel
     ClavierV = Process.Start("osk.exe");
}



Le clavier se lance bien et lorsque je fais : Ctrl + Shift + Echap et que je regarde dans les processus,
un petit processus nommé : msswchx.exe se lance.

Jusque la tout est normal.

Lorsque que mon programme s’arrête, je fais :


private void frmParametre_FormClosing(object sender, FormClosingEventArgs e)
{
     //On ferme le clavier visuel
     try { ClavierV.Kill(); }
     catch { }

     //Le try est la si jamais le clavier visuel à été fermé manuellement
}


Lorsque je ferme le clavier visuel en cliquant sur la croix de sa fenêtre, ce processus, s’arrête. (Avant la fermeture du programme)

En revanche, si je ne l'ai pas fermé manuellement avant, ce fameux processus : msswchx.exe ne se ferme pas et dans un de mes autres
programmes, je ne peux pas "Accédez au port COM1" -_-

C'est assez génant, avez vous une idée pour fermer proprement ce processus ?

PS : j'ai essayé sans succès :


private void frmParametre_FormClosing(object sender, FormClosingEventArgs e)
        {
            //On ferme le clavier visuel
            try { ClavierV.Kill(); }
            catch { }
            try { ClavierV.Dispose(); }
            catch { }
            ClavierV = null;
        }


Merci et bonne journée


Vivoubos

Celui qui n'expérimente rien ne se trompe qu'une seule fois.

4 réponses

Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
8
Bonjour,
Etant donné que tu connais le nom du processus utilisé, tu peux l'obliger à se fermer de la manière suivante :

Process[] clavier = Process.GetProcessesByName("msswchx");
foreach (Process myProcess in clavier)
    myProcess.Kill();

BinKentsu
Messages postés
43
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
22 avril 2013
3
Oui c'est une brillante solution ^^

Par contre, il va y avoir conflit si je veux lancer mes deux programmes en même temps :s

...

Alors, j'ai effectuer des recherche de mon coté et j'ai trouvé que le msswchx est : Microsoft On-Screen Keyboard program.

Donc normal qu'il se lance avec le clavier visuel, le problème est qu'il ne se ferme pas quand je fais un process.Kill ou autre :s
Il se ferme seulement quand je clique sur la croix su clavier visuel...

Ben je vais jouer le bourrin avec ta méthode je crois ^^
Enfin s'il y a pas d'autre solution ^^

Merci :)


Celui qui n expérimente rien ne se trompe qu'une seule fois.
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Et si tu envoyait un message WM_CLOSE à la fenêtre de ton clavier?


louis
Messages postés
43
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
22 avril 2013
3
Salut Louis14

Je n'ai jamais utilisé WM_CLOSE ...
Alors j'ai un peu chercher sur le forum en mettant dans la recherche WM_CLOSE, et je n'ai pas vraiment trouvé d'exemple exploitable

J'ai un peu compris le fonctionnement avec ce code :


public const int SC_CLOSE = 0xF060;
public const int WM_SYSCOMMAND = 0x0112;
private bool _closeClick;

protected override void WndProc(ref System.Windows.Forms.Message m)
{
    if(m.Msg WM_SYSCOMMAND && (int)m.WParam SC_CLOSE)
        this._closeClick = true;
    base.WndProc(ref m);
}



Mais rien sur l'envoie de la fermeture à moins que ce soit base.WndProc

Pourrais tu m'en dire un peu plus ? Cette solution m'a l'air intéressante!




PS : Normal que lorsque je tape WM_CLOSE dans la recherche csharpfr, qu'il y ai un livre dénomé porno dans la section livre ? xD le rapport? (pas osé cliquer ^^)


Celui qui n expérimente rien ne se trompe qu'une seule fois.