Je développe un launcher en VB.NET pour un jeu. Je souhaiterais lancer le jeu en mode compatibilité Win XP SP3 quand il est exécuté sur un Seven 64. (Le menu du jeu n'est plus animé et devient statique sur 64b …)
Existe-t-il un moyen pour faire cela ? Peut-être qu'on peut le faire à l'aide d'argument ?
Ma seconde question concerne toujours le lancement. Serait-il possible de définir l'affinité du jeu sur un core en particulier ?
(Le jeu étant assez ancien, il s'avère légèrement plus performant s'il est affilié à un seul core …)
Enfin une petite dernière, est-il possible de détecter la présence d'un processus en cours d'exécution afin de bloquer des fonctionnalités du launcher. (Inutile de relancer le jeu ou risqué de modifier des fichiers de config si le jeu tourne déjà …)
Pour info je lance le jeu comme ceci pour le moment :
StartApp("path\game.exe", argument)
C'est développé avec Visual Basic Express 2010 pour le framework.NET 2.0
A voir également:
[VB.NET] Lancer une application en mode compatibilité
1/ Ton jeu peut, peut-être, être lancé en ligne de commande avec des paramètres de lancement. Il faut vérifier la documentation du jeu. Dans l'affirmative, tu devras lancer le jeu avec Process et sa propriété StartInfo pour fournir les arguments voulus.
2/ Tu peux vérifier si le process recherché est en cours d'exécution :
For Each p As Process In Process.GetProcesses
If p.ProcessName = "ton_jeu" Then
'....
J'ai testé le code que tu proposes et ça fonctionne (enfin pour 1 des 2 processus qui gère le jeu mais ça suffira). Il me reste juste à le placer comme j'en ai besoin.
Pour l'idée des arguments en fait je me demandais s'il existait des arguments générique qui fonctionnent pour toute exécutable. Car dans la documentation du jeu il n'y a rien de prévu pour être lancé en compatibilité XP (en même temps il est sorti avant Vista).
Sinon pas de suggestions en ce qui concerne l'affiliation du processeur ?
Ah et pour le mode compatibilité, je créerais simplement un raccourcis (lnk) manuellement (avec les compatibilités en bonnes et dues formes), je le joindais aux côtés de ton lanceur et l'exécuterais avec Process.Start.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Encore une fois ça marche nickel pour l'affinité CPU :D
L'idée du raccourci aurait pu être intéressante s'il elle était automatisable et éditable. Il faudrait que ça soit le laceur lui-même qui créer le raccourci et inclue les paramètres. Dans ce que tu proposes il faut que l'utilisateur créée lui même le raccourci (d'ailleurs autant faire directement clic-droit/propriété/compatibilité sur l'application à ce compte là), enfin si j'ai bien compris où tu veux en venir ?
Le principe du lanceur est de rendre les actions le plus transparent possible et de demander simplement au joueur de cliquer sur les boutons.
Je vais préciser quelques trucs, ça peut éclairer : Je n'ai pas développé le jeu dont il est question par contre je développe avec une petite équipe un mod pour ce jeu (www.cnc-sgu.fr) d'où l’intérêt du lanceur (qui permet plein d'autres choses, comme des réglages graphiques supplémentaires, des recherche de mise à jour, un système de rapport de bug, etc).
En fouillant sur la toile, tu devrais trouver ces fameux paramètres de ligne de commande. Tout bon jeu en a.
Ton lien renvoie sur une page blanche. Quel est donc ce fameux jeu ?
Et donc oui ce jeu à des lignes de commande pour lancer en fenêtré, mode debug, démarrage rapide et quelques autres trucs mais certainement pas compatibilité XP (surtout qu'il est sortie en 2003).