2017-03-07 1 views
0

Est-il possible d'obtenir le nom du processus/id d'un jeu de vapeur a commencé par:Obtenir processus ID ou le nom de processus après le lancement d'un jeu de vapeur par la vapeur: // rungameid/#

Process.Start("steam://rungameid/#"); 

Comme prévu, la La méthode ci-dessus renvoie Steam.exe.

+0

Peut-être l'un des 3 liens en haut ici peut aider ► [https://www.google.ie/webhp?hl=en&sa=X&ved=0ahUKEwiB8rv01sTSAhVCC8AKHeG_BukQPAgD#safe=active&hl=en&q=c%23+get+process+id& *] (https://www.google.ie/webhp?hl=fr&sa=X&ved=0ahUKEwiB8rv01sTSAhVCC8AKHeG_BukQPAgD#safe=active&hl=fr&q=c%23+get+process+id&) ou peut-être que cet OS peut vous aider. ► [http://stackoverflow.com/questions/3003975/how-to-get-the-current-processid](http://stackoverflow.com/questions/3003975/how-to-get-the-current-processid) – Nope

+0

Process.Start from System.Diagnostics renvoie un objet Process ayant une propriété id. C'est l'identifiant de processus que je crois (https://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110).aspx) – ojf

+0

Pas en général. Cela peut, par exemple, démarrer un lanceur à la place, qui exécute ensuite l'exécutable du jeu. Vous pouvez contourner ce problème en effectuant le suivi des lancements de processus enfants, mais en général, vous devriez vous demander pourquoi vous en avez besoin. Bien sûr, il doit y avoir un moyen de détecter le jeu en cours d'exécution dans ce cas, car Steam en a un, mais cela peut impliquer un accrochage dans l'API Steam elle-même. –

Répondre

1

Chaque jeu a une clé dans le Registre sous HKCU\SOFTWARE\Valve\Steam\Apps

Vous devriez être en mesure de vérifier la valeur Installed de votre jeu à partir de là, puis exécutez le jeu en utilisant steam://rungameid/#, puis attendre les Running ou Updating valeurs pour passer à 1, et encore pour 0. Cela permet de suivre une exécution de jeu, mais vous ne pouvez toujours pas avoir directement l'identifiant de processus du jeu.

1

En général, non. Steam utilise simplement un préfixe URI personnalisé, qui vous permet de spécifier quelle application va traiter cette demande. Mais il ne crée pas de nouveau préfixe pour chaque jeu - à la place, il est géré par steam.exe, qui décide quelle application exécuter. Steam va bien sûr suivre les jeux qu'il exécute, mais je suppose qu'il garde simplement la trace de ses identifiants de processus, peut-être avec une certaine influence de l'intégration Steam ou de l'injection Steam Overlay pour suivre les jeux utilisant un lanceur. Je ne pense pas qu'il existe un moyen simple de garder cette information si vous n'êtes pas prêt à déranger avec les privés d'autres applications.

Il peut y avoir des cas où vous avez d'autres solutions; par exemple. Si cela ne vous dérange pas que plusieurs jeux Steam s'exécutent en même temps, vous pouvez essayer de trouver tous les processus qui ont la superposition Steam, mais ils sont plutôt spécifiques - ils peuvent bien fonctionner pour vous, mais échouer pour les autres utilisateurs.

0

Comme le nouveau processus ne sera pas démarré en tant que processus fils de vapeur, il sera impossible de dériver son identifiant. Ce que vous pouvez essayer est de dériver le jeu en cours via the API - et ensuite rechercher dans tous les processus en cours d'exécution pour leurs noms. L'API doit exposer le nom du jeu via la propriété gameextrainfo, qui doit être identique au nom du processus (non testé, cependant).