Modérateurs: Modération Forum Home-Cinéma, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: HighEndSound et 27 invités

Toutes les solutions à base d'ordinateur (PC, Mac, Linux...)

[RUN2MON] Lancement d'une appli sur un moniteur particulier

Message » 17 Fév 2005 17:46

Salut tout le monde

J'ai écrit un petit programme (au départ pour mon usage personnel), mais il pourrait bien être utile à ceux qui veulent utiliser un PCHC avec une résolution différente sur leur moniteur et leur projo...

Présentation de l'application:

Run2mon.exe est un petit utilitaire permettant de configurer un écran (activation d'écran secondaire, changement de résolution/fréquence) avant de lancer une application quelconque (mais à priori un soft de lecture de DVD), et de déplacer la fenêtre d'affichage vers l'écran voulu si elle n'y est pas déjà. Quand on quitte l'application, les paramètres peuvent être automatiquement restaurés (y compris la suppression de l'écran du desktop).

L'installation est très simple, il suffit de mettre l'exe avec son .ini dans un répertoire quelconque, et on l'ajoute sur la ligne de commande d'une icône du bureau, comme ceci:

Original:

"c:\program files\appli\appli.exe" <paramètres>

Ajouter l'appel devant:

c:\program files\run2mon\Run2mon.exe" HD "c:\program files\appli\appli.exe" <paramètres>

Le plus simple est de copier un raccourci existant avant d'éditer sa ligne de commande.

Ca marche normalement avec n'importe quelle application. Le premier paramètre est le nom du profile utilisé dans le fichier run2mon.ini, dans le même répertoire que l'exe. C'est le nom de la section où les paramètres sont écrits (donc en dessous de la ligne [HD], avec les crochets). Il n'y a pas de limite au nombre de sections possibles.

Voici les paramètres disponibles:

MonitorDevice=1
-> indique sur quel écran l'appli doit se trouver, le zéro étant l'écran primaire, le un étant l'écran secondaire.

PixelWidth=1280
PixelHeight=720
PixelBits=32
Frequency=50
Interlaced=No

-> paramètres de configuration à forcer sur l'écran. Si l'une des valeurs vaut -1, la configuration restera telle quelle, mais l'appli cible sera lancée sur l'écran choisi (MonitorDevice)

RestoreWhenExit=Yes

-> Mettre Yes ou No selon si on veut que la configuration originale soit restaurée sur le moniteur choisi (registry + settings)

RestoreFromRegistry=Yes

-> Valable uniquement quand RestoreWhenExit=Yes. Si c'est "Yes", la configuration remise lorsqu'on quitte l'appli cible est celle stockée dans la registry, sinon celle qui a été trouvée au lancement de Run2mon. "No" ne doit normalement être utilisé que pour des cas particuliers (conservation d'une config non sauvée dans la registry)

TrackWindow=Yes

-> Si c'est "No", on se contente de lancer le process avec des paramètres d'info. Ca ne marche donc qu'avec les applis qui ouvrent leur fenêtre principale avec les paramètres indiquant une position par défaut, ce qui est rare de nos jours (et dans ce cas, il ne se passera rien). Quand on le met sur "Yes", les fenêtres créées par le process sont examinées, et repositionnées dynamiquement après lancement de l'application cible.

ProcessInitTime=2000

-> Temps d'attente initial avant d'examiner les fenêtres créées par l'appli (en millisecondes). A augmenter en cas de problèmes (ne serait-ce que pour laisser un peu de temps à la carte graphique pour initialiser le mode, et à l'application cible pour finir d'initialiser ses fenêtre avant qu'on chamboule tout)...

RegistryRootKey=\HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO\{E4E4D78D-DFD8-41E1-9AD5-0F58292616DB}\0000

-> Optionnel: permet de dire quelle clé modifier dans la registry avant de changer le format d'écran. Je m'en sers pour attacher le projecteur au desktop de Windows uniquement quand mon appli H3D tourne. Ainsi, ma config par défaut est uniquement avec mon moniteur CRT actif, et le projecteur n'est alimenté que quand l'appli H3D tourne. Cette clé dépend du matériel installé. Il faut donc vérifier dans la registry qu'elle est bonne, à cet endroit:
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\VIDEO
Il existe des clés nommées "\Device\Video0", "\Device\Video1", etc. La chaine associée indique à quel endroit chercher dans la registry pour chaque moniteur (attention, le début n'est pas absolument identique au format "standard" exigé par RegistryRootKey, un simple copier coller ne convient pas, mais c'est très facile à comprendre).

RegistryValueList=RADEON

-> Va avec le précédent: indique l'entrée de section dans Run2mon.ini qui contient la liste de valeurs à modifier préalablement. Dans le cas de ma radeon 9600 SE avec les derniers drivers Catalyst, il n'y en a qu'une : "Attach.ToDesktop". La valeur originale est sauvegardée et restaurée en quittant, si RestoreWhenExit=Yes. Attention, il est très possible que ce soit différent avec d'autres drivers, il faut donc vérifier ce qu'on a avec Regedit.

MoveInvisibleWindows=No

-> Si on le met sur Yes, les fenêtres invisibles sont aussi déplacées sur le moniteur choisi. C'est a priori à ne pas faire. (c'était pour du debug)

WindowTitleFilter=

J'avais prévu ça pour les cas tordus, pour ne déplacer que les fenêtres dont le titre contient la chaine de caractère mise en paramètre. A voir si ça rend service à quelqu'un...

SaveLog=Yes

Permet de générer un fichier Run2mon.log dans le répertoire où se trouvent Run2mon.exe et Run2mon.ini. C'est un fichier texte qui donne un rapport de fonctionnement et décrit les erreurs trouvées. C'est très utile quand on veut voir ce qui se passe ;)

Dans la pratique, quand on clique sur l'icône modifiée, l'appli examine les moniteurs disponibles, sélectionne le bon, applique si besoin est la modif dans la registry avant d'envoyer un reset au moniteur (ce qui l'active dans mon cas), applique ensuite si nécessaire les paramètres de format d'écran, puis lance l'exécutable fourni en paramètre. L'appli apparait alors sur le moniteur primaire, selon son setup (mode full screen ou fenêtré). Sa fenêtre est ensuite migrée sur l'autre moniteur. Si elle était en full screen, elle passe temporairement en mode icône, parce qu'on ne peut pas changer directement le moniteur assigné à une fenêtre full screen. Ensuite, Run2Mon ne fait plus rien et attend la fin du process (conso CPU absolument nulle, conso mémoire ridicule). Quand l'appli se ferme, les paramètres écran trouvés au départ sont restaurés (chez moi, la sortie DVI dédiée au projo se coupe).

Dans le .ini, il n'y a qu'un seul profile (que j'ai appelé "HD"), mais le but est d'en créer plusieurs, notamment pour forcer les fréquences en 50 ou 60 Hz selon qu'on est en PAL ou en NTSC. Ce qui n'obligerait qu'à avoir deux icônes différentes sur le bureau...

Cela dit, ce n'est pas un powerstrip: ça ne peut pas faire marcher une config refusée par le driver de la carte graphique (en cas de mode invalide sélectionné, si le fichier de log est actif, ça donne la liste des modes acceptables dans le log. Avec une remarque: les modes ayant une fréquence donnée à 0 ou 1 Hz signifient "fréquence par défaut", donc a priori 60 Hz)

J'espère que ça marchera aussi bien chez vous que chez moi ;)

A bientot
Georges

[EDIT] Le fichier à télécharger a évolué depuis cette première version, il est désormais un peu plus bas sur la page, dans ce post.
Dernière édition par Georges G le 18 Fév 2005 18:15, édité 1 fois.
Georges G
 
Messages: 10747
Inscription Forum: 06 Fév 2002 2:00
Localisation: Pamparigouste :o) (34)
  • offline

Message » 17 Fév 2005 22:43

Je j'utiliserai pas mais merci de partager avec nous ton travail :D
BennJ
 
Messages: 23125
Inscription Forum: 07 Juil 2002 15:02
  • offline

Message » 17 Fév 2005 23:07

Par curiosité, tu ne veux pas donner les sources ?
guest
 
Messages: 23465
Inscription Forum: 15 Fév 2001 2:00
  • offline

Message » 18 Fév 2005 8:46

merci, as tu constaté une augmentation de l'occupation cpu en mode etendu?
Daigoro
 
Messages: 10869
Inscription Forum: 16 Mai 2003 22:57
Localisation: Le Havre
  • offline

Message » 18 Fév 2005 12:08

Salut tout le monde

Loloboy,
Pas de problème pour les sources (c'est juste un cpp). Tu veux que je te les envoie par mail ?

Mxav,
Il n'y a pas de raison que l'occupation CPU augmente avec le bureau étendu. Et mon programme ne consomme absolument pas de CPU une fois qu'il a déplacé la fenêtre sur le moniteur secondaire. Quant à sa consommation mémoire, elle est très faible...

A bientot
Georges
Georges G
 
Messages: 10747
Inscription Forum: 06 Fév 2002 2:00
Localisation: Pamparigouste :o) (34)
  • offline

Message » 18 Fév 2005 12:10

Georges G a écrit:Loloboy,
Pas de problème pour les sources (c'est juste un cpp). Tu veux que je te les envoie par mail ?

Oui, ca m'interesserait.
Merci ;)
guest
 
Messages: 23465
Inscription Forum: 15 Fév 2001 2:00
  • offline

Message » 18 Fév 2005 12:49

Salut tout le monde

Bon, alors vu que j'ai eu d'autres demandes par MP, je vais mettre les sources ici ;)

C'est un programme en Visual C++ 6. Mais en fait, c'est du C pur, avec juste un grosse fonction WinMain qui se déroule. Rien de bien sorcier en fait ;)

A bientot
Georges
Fichiers joints
Run2mon_sources.zip
Les sources de Run2mon.exe
(7.18 Kio) Téléchargé 83 fois
Georges G
 
Messages: 10747
Inscription Forum: 06 Fév 2002 2:00
Localisation: Pamparigouste :o) (34)
  • offline

Message » 18 Fév 2005 17:57

Merci, je vais regarder ça, ca m'instruira ;)
guest
 
Messages: 23465
Inscription Forum: 15 Fév 2001 2:00
  • offline

Message » 18 Fév 2005 18:13

Voici une nouvelle version de l'application (non testée en grandeur réelle, mais ça devrait quand même bien fonctionner ;) )

[AJOUT VERSION 2]
On peut désormais utiliser les couples RegistryRootKey2/RegistryValueList2, RegistryRootKey3/RegistryValueList3, RegistryRootKey4/RegistryValueList4 pour modifier jusqu'à 4 clés dans la registry

InitPrimaryMonitor=No

-> Mis à Yes, réinitialise en plus le moniteur primaire aux valeurs par défaut, en sus du moniteur secondaire.

Cette modif a pour but de gérer davantage de cas tordus (par exemple permettre la suppression temporaire du mode clone)
[FIN AJOUT V2]

A bientot
Georges
Fichiers joints
Run2mon.zip
Run2mon.exe + Run2mon.ini version 2
(20.18 Kio) Téléchargé 135 fois
Georges G
 
Messages: 10747
Inscription Forum: 06 Fév 2002 2:00
Localisation: Pamparigouste :o) (34)
  • offline

Message » 18 Fév 2005 18:19

Merci beaucoup !!
Bravo :wink:
jim.ro
 
Messages: 204
Inscription Forum: 14 Jan 2003 14:57
Localisation: Pas loin de Disney !
  • offline

Message » 18 Fév 2005 18:24

Ya pas de quoi ;)

Pour les sources, je ne les mets pas... j'ai juste ajouté quelques boucles et mis en tableaux les variables de la registry, ça n'a aucun intérêt technique, à part rendre le source moins lisible... :roll:

Enfin, si certains veulent faire des développements supplémentaires sur cette base, je pourrais les transmettre sans problème ;)

A bientot
Georges
Georges G
 
Messages: 10747
Inscription Forum: 06 Fév 2002 2:00
Localisation: Pamparigouste :o) (34)
  • offline

Message » 22 Fév 2005 19:10

J'arrive pas Georges ! :)

Ma config:

Ecran TFT17" 1280x1024 Ecran numéro 2 dans paneau de config
branhé en VGA

Projo PTAE700 1280x720 Ecran numéro 1 dans panneau de config
branché en DVI

Carte graphique ATI 9600XT avec drniers catalyst

Ce que je veux faire :

Hors visionnage de film, utiliser mon TFT seul

Pour mater des films, en cliquant sur une icone sur mon TFT, désactiver celui ci, activer ma DVI (en 1280x720 ) donc mon projo, ouvrir Windvd 6 et lire le film ( donc passer ma DVI en ecran principal pour lire en overlay )

Après le film, en coupant windvd, désactiver la DVI et réactiver la VGA en écran principal ( en 1280 x 1024 ).

Est ce possible avec ton prog ? si oui, tu pourrais m'indiquer un exemple du fichier ini ?

Merci d'avance Georges ! ;)
Pierrick29
 
Messages: 67
Inscription Forum: 29 Oct 2004 19:55
  • offline

Message » 22 Fév 2005 19:27

Salut Pierrick

En fait, c'est tout simple. Ce qu'il faut, c'est que ton écran principal soit ton TFT, et l'écran secondaire le projecteur. Bref, dans la boîte des propriétés avancées, tu vas dans l'onglet Displays, et tu mets l'écran TFT en écran 1 en cliquant sur le bouton 1. Et tu désactives complètement ton écran 2 (le projecteur).

Dans cette configuration, ton PC est en mode "normal", le projecteur n'est pas alimenté. Run2mon est parfaitement capable d'activer la sortie DVI du projecteur, à la résolution que tu veux, uniquement quand tu projettes un film. Il suffit de suivre le mode d'emploi cu premier post de ce fil à la lettre. N'oublie pas d'éditer la clé d'accès à la registry dans le .ini, comme indiqué dans le post ;)

Note: pendant la projection d'un film, ton écran TFT reste alimenté... mais je suppose que tu l'éteins pendant le film ;)

La seule chose que je n'arrive pas à faire avec une Radeon, c'est de restaurer le mode clone s'il était présent au lancement... dans ce cas, en sortie, on se retrouve avec le projo non alimenté... mais ça ne correspond pas à ce que tu cherches ;)

A bientot
Georges
Georges G
 
Messages: 10747
Inscription Forum: 06 Fév 2002 2:00
Localisation: Pamparigouste :o) (34)
  • offline

Message » 22 Fév 2005 20:13

ça avance Georges:)

Le seul problème que je rencontre maintenant,c'est que mon projo n'est pas mis en écran principal donc l'image ne s'affiche pas dans la fenêtre de winDVD ( à cause de l'overlay)


Tu vois une piste de solution ?

Merci en tout cas pour tes conseils

PS : sinon le reste fonctionne nicquel

Edit : il faut maintenant trouver la clé de registre à modifier pour passer mon projo en écran principal non ? Je cherche mais vu me connaissances...
Pierrick29
 
Messages: 67
Inscription Forum: 29 Oct 2004 19:55
  • offline

Message » 23 Fév 2005 0:32

Si tu veux contourner le PB passe en VMR9 au lieu de l'ovelay comme cela ta video s'affichera sur les deux ecrans le principal et le secondaire..

Stéph.
HCPASS
 
Messages: 1944
Inscription Forum: 25 Juil 2001 2:00
Localisation: Haute-Indre (44)
  • offline


Retourner vers Matériel PC Home-cinéma