Comment puis-je trouver l'id de processus du nom du service/de la poignée en Delphi?
J'ai le nom du service pour un service windows en delphi, et je sais comment obtenir la poignée de que la. Ce que j'ai besoin de faire est d'arrêter un service, et si l'arrêt de échoue pour une raison que j'ai besoin de tuer le processus associé au service. Le problème est que j'ai de multiples services en cours d'exécution à partir de la même exécutable, donc je ne peux pas utiliser le nom de l'exécutable de tuer le processus. Cela signifie que j'ai besoin de l'id de processus pour tuer le bon associé à des processus. Comment puis-je obtenir cette carte d'identité ou une certaine façon de tuer le processus approprié du nom du service ou de la poignée?
OriginalL'auteur Chris J | 2009-01-22
Vous devez vous connecter pour publier un commentaire.
QueryServiceStatusEx
?Cela ne semble pas être une solution pour delphi, je ne suis pas vraiment à la recherche d'une solution dans une autre langue pour ce que je vais avoir à crochet. @Arkadi - tuer le processus n'est pas un gros problème, le système actuel ne permet cela, mais ne fait pas la différence lorsqu'il y a plusieurs processus en cours d'exécution
Chris, Jk lié à la QueryServiceStatusEx la fonction de l'API. Vous pouvez appeler à partir de n'importe quelle langue que vous voulez, y compris Delphi. Vous n'avez pas à "crochet" dans une autre langue. Vous appelez les fonctions API de tous les temps: tout ce que vous avez appelé à partir de l'unité Windows, par exemple.
L'appel donne l'ID de processus ainsi que de l'état, de sorte que devrait être ce qui est voulu.
J'ai eu du mal à comprendre comment utiliser l'appel en Delphi, je l'ai trouvé dans une autre réponse à cette question.
OriginalL'auteur Jk.
Veuillez noter que j'ai seulement accepté cette solution, de sorte que le code delphi solution est acceptée, merci à Jk mais pour me pointer sur le bon chemin.
--
Ok, j'ai été en mesure de comprendre comment utiliser la réponse par Jk et ont abouti à cette solution en delphi.
Pour la référence, c'est le lien fourni par Jk:
QueryServiceStatusEx
Ma Solution:
Veuillez noter que pas toutes externes de nommage et d'autres biens de première nécessité sont inclus.
OriginalL'auteur Chris J
Ou utiliser DSiWin32 pour de nombreuses fonctions utiles, y compris DSiGetProcessID. Ce code a été écrit par StackOverflow de l'utilisateur (et programmeur) Gabr.
Voici la fonction, pour votre propre référence. Il vous donnera ce que vous cherchez:
OriginalL'auteur Mick