La réponse est que vous devez utiliser le toolhelp Api. Il y a un exemple complet sur MSDN qui comprend l'énumération des processus et de tuer un être sélectionné.
Malheureusement, il semble comme Processus.GetProcess ne fonctionne pas dans la .NET CF de sorte que vous devez utiliser une autre façon de trouver votre processus avant de le tuer, il ya aussi des articles à ce sujet:
Alors que le Compact Framework ne vous donne pas de façon native à la liste de tous les processus, il est toujours facile de gérer les processus que vous avez créé.
Lorsque vous utilisez Processus.Start(nom,arguments) vous récupérer une valeur booléenne.
C'est parce que la fonction est une fonction partagée qui est conçu pour être utilisé lorsque vous créez un processus et par la suite de ne pas s'en soucier. Il dit juste qu'il a créé ou pas.
Ce que vous voulez vraiment est d'obtenir une copie du descripteur de processus lorsque vous démarrez votre exécutable, et cela signifie que vous devez créer un nouvelle instance de Processus et ensuite utiliser les méthodes de cette instance pour démarrer votre exécutable.
Créez une nouvelle instance de Processus - appelons-la P. C'est de fait un processus de descripteur - mais ce n'est pas encore connecté à un processus.
Vous trouverez que P expose beaucoup plus d'attributs.
Configurer votre nom de l'exécutable et des arguments (si vous en avez) dans P. StartInfo.Nom de fichier et P. StartInfo.Les Arguments
et maintenant appel P. Start()
Si elle retourne True ce qui met l'Id de processus dans P. Id pour vous et maintient un lien direct vers votre processus.
Les valeurs dans P. de RépondreP. hasexited n' et P. ExitCode vous dire si il est toujours en cours et, si non, comment ça s'est terminé et vous pouvez utiliser la fonction sans paramètre P. Kill() à la fin quand vous en avez marre avec elle parce que se termine le processus associé au descripteur.
Il suffit de créer une nouvelle instance de Processus pour chaque processus que vous souhaitez gérer, de la lancer, par le biais de l'instanciation de la variable plutôt que le générique de fonction partagée Processus.Start() et gardez ce que votre lien vers le processus.
Si vous ne garder que la valeur de P. Id vous pouvez toujours utiliser la fonction partagée Processus.Tuer(Id) d'y mettre fin, et vous pouvez les utiliser Processus.GetProcessById() pour obtenir une référence à l'instance de la descripteur qui s'y rapporte.
Cela devrait fonctionner dans n'importe quelle langue.
La Processus structure contient aussi quelque chose appelé MainWindowHandle qui ressemble, il est le handle de la création de la tâche. Je n'ai jamais vérifié pour voir si elle correspond, mais il ne se rempli.
Donc, si vous voulez tuer "Windows\MyProcc.exe" il est facile, à condition qu'il est vraiment "votre processus de" parce que vous pouvez le créer d'une manière qui vous donne son Id et le Descripteur.
Si "Windows\MyProcc.exe" vraiment "Windows\Someone-elses-Procc.exe" ensuite, il n'est pas si facile, car vous devez connaître l'Id et il n'y a pas de moyen simple de les obtenir, sauf si c'est la vôtre.
D'abord trouver le Processus en donnant l'exe en cours d'exécution du nom et de le tuer. Utiliser le Système.Les Diagnostics de l'espace de noms.
@Gali utilisation GetProcessById la place à cet effet.
OriginalL'auteur Sai Kalyan Kumar Akshinthala
La réponse est que vous devez utiliser le toolhelp Api. Il y a un exemple complet sur MSDN qui comprend l'énumération des processus et de tuer un être sélectionné.
OriginalL'auteur ctacke
Un projet de code fait exactement ce que vous cherchez.
Je trouve cette classe très utile en Tuant les processus dans CE.
http://www.codeproject.com/Articles/36841/Compact-Framework-Process-class-that-supports-full
OriginalL'auteur CathalMF
Une fois que vous avez trouvé votre processus, vous pouvez appeler
Kill
commande.c'est dans
System.Diagnostics
et pris en charge .NET Compact Framework, voir ici:Processus.Tuer Méthode
Malheureusement, il semble comme Processus.GetProcess ne fonctionne pas dans la .NET CF de sorte que vous devez utiliser une autre façon de trouver votre processus avant de le tuer, il ya aussi des articles à ce sujet:
Compact Framework Processus de classe qui prend en charge complètement spécifié, les chemins de fichiers
OriginalL'auteur Davide Piras
Alors que le Compact Framework ne vous donne pas de façon native à la liste de tous les processus, il est toujours facile de gérer les processus que vous avez créé.
Lorsque vous utilisez Processus.Start(nom,arguments) vous récupérer une valeur booléenne.
C'est parce que la fonction est une fonction partagée qui est conçu pour être utilisé lorsque vous créez un processus et par la suite de ne pas s'en soucier. Il dit juste qu'il a créé ou pas.
Ce que vous voulez vraiment est d'obtenir une copie du descripteur de processus lorsque vous démarrez votre exécutable, et cela signifie que vous devez créer un nouvelle instance de Processus et ensuite utiliser les méthodes de cette instance pour démarrer votre exécutable.
Créez une nouvelle instance de Processus - appelons-la P. C'est de fait un processus de descripteur - mais ce n'est pas encore connecté à un processus.
Vous trouverez que P expose beaucoup plus d'attributs.
Configurer votre nom de l'exécutable et des arguments (si vous en avez) dans
P. StartInfo.Nom de fichier et P. StartInfo.Les Arguments
et maintenant appel
P. Start()
Si elle retourne True ce qui met l'Id de processus dans P. Id pour vous et maintient un lien direct vers votre processus.
Les valeurs dans P. de Répondre P. hasexited n' et P. ExitCode vous dire si il est toujours en cours et, si non, comment ça s'est terminé et vous pouvez utiliser la fonction sans paramètre P. Kill() à la fin quand vous en avez marre avec elle parce que se termine le processus associé au descripteur.
Il suffit de créer une nouvelle instance de Processus pour chaque processus que vous souhaitez gérer, de la lancer, par le biais de l'instanciation de la variable plutôt que le générique de fonction partagée Processus.Start() et gardez ce que votre lien vers le processus.
Si vous ne garder que la valeur de P. Id vous pouvez toujours utiliser la fonction partagée Processus.Tuer(Id) d'y mettre fin, et vous pouvez les utiliser Processus.GetProcessById() pour obtenir une référence à l'instance de la descripteur qui s'y rapporte.
Cela devrait fonctionner dans n'importe quelle langue.
La Processus structure contient aussi quelque chose appelé MainWindowHandle qui ressemble, il est le handle de la création de la tâche. Je n'ai jamais vérifié pour voir si elle correspond, mais il ne se rempli.
Donc, si vous voulez tuer "Windows\MyProcc.exe" il est facile, à condition qu'il est vraiment "votre processus de" parce que vous pouvez le créer d'une manière qui vous donne son Id et le Descripteur.
Si "Windows\MyProcc.exe" vraiment "Windows\Someone-elses-Procc.exe" ensuite, il n'est pas si facile, car vous devez connaître l'Id et il n'y a pas de moyen simple de les obtenir, sauf si c'est la vôtre.
Espère que cette aide.
OriginalL'auteur Steve Douglas