begin process at 2013 06 19 00:38:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Mono

 > 

Général

 > 

Tuer proprement un processus


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

Tuer proprement un processus

mardi 10 juillet 2012 à 14:50:03 | Tuer proprement un processus

StagiaireMsl

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 :

Code C# :

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 :

Code C# :

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 :

Code C# :

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.
mardi 10 juillet 2012 à 14:56:35 | Re : Tuer proprement un processus

BinKentsu

Réponse acceptée !

Bonjour,
Etant donné que tu connais le nom du processus utilisé, tu peux l'obliger à se fermer de la manière suivante :

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

BinKentsu
mardi 10 juillet 2012 à 16:36:46 | Re : Tuer proprement un processus

StagiaireMsl

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.
mercredi 11 juillet 2012 à 09:03:04 | Re : Tuer proprement un processus

louis14

Et si tu envoyait un message WM_CLOSE à la fenêtre de ton clavier?


louis
mardi 17 juillet 2012 à 16:37:44 | Re : Tuer proprement un processus

StagiaireMsl

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 :

Code C# :

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.


Cette discussion est classée dans : code, clavier, processus, visuel, clavierv


Répondre à ce message

Sujets en rapport avec ce message

Vérifier si un touche clavier est pressée SANS mettre le processus en pause (console) [ par Gulien ] Bonsoir, Malgré de nombreuses recherches, je n'ai malheureurement pas trouvé de solution à mon problème. Je sais que pour savoir si une touche du cl Exécuter un raccourci clavier [ par AzevedoSt27 ] Bonjour, Je développe une application capable de dessiner n'importe ou sur l'écran des que mon bouton central de ma souris est enfoncer lorsque je le envoyer un code clavier à une appli directx [ par survcopt ] Bonjour, J'ai un jeu qui fonctionne avec directx, je voudrais lui envoyer un code clavier pour simuler un appui . j'ai essayé les fonctions sendkeys s Problème de reconnaissance des touches du clavier [ par Noxalus ] Salut à tous ! :) Je suis en train de réaliser un petit snake en mode console en C# pour m'entrainer et mieux maîtriser ce langage. Seulement, lorsqu modifier des valeurs dans un form [ par s7even ] bonjour, je sais pas si mon titre est clair mais je vois pas comment décrire mon problème qui pour vous sera très basic Donc j'ai un form WindowsFo DateTime en culture FR [ par SaiYan5102 ] Bonjour, Je souhaite enregistrer une date dans ma base de données au format FR. Pour cela je suis les indications du msdn pour changer la culture du Compiler sur windows un code c# pour linux [ par babaOrhumette ] Bonjour, J'ai créé dernièrement un petit programme en c# qui fonctionne bien sur windows. J'aimerai en faire profiter à des amis linuxiens (ubuntu), WPF : Problème de style [ par Philenain1 ] Bonjour, Je viens vers vous car j'ai un petit souci sur un projet en WPF. Ma problématique est la suivante : J'ai un style appliqué sur plusieurs de Native C++ Callback in C# SetWindowsHookEx [ par railarmenien ] Bonjour à tous, Dans un programme C# j'appelle une dll C++ native dans laquelle j'installe un hook qui leve un callback que je souhaite recupérer dan ToolTip Binding ListBox.Items.Count [ par lelio1407 ] Bonjour, J'ai un UserControl avec un label et une ListBox. Je souhaite mettre un tooltip sur le label qui me renvoie le nombre d'Items de ma ListBox.


Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 1,622 sec (3)

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