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

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

Switcher facilement d'un mode clone à un bureau étendu...

Message » 29 Mai 2009 8:30

Salut à tous !

Depuis peu j'ai ajouté à mon install de salon un ecran de controle pour pas avoir à alumer tout le temps la tv et pour surfer et utiliser les applis plus facilement. Seulement j'aimerai trouver un moyen de creer des raccourcis sur le bureau permettant de passer du mode clone au bureau étendu et vice versa (à priori juste 2 raccourcis). Je suis quasiment sur avoir vu ça quelque part mais impossible de retrouver...
Pour ce qui est du matos je suis avec une Radeon4850 (Si besoin j'ai une nvidia sous le coude) la tv est branché en VGA et le 23" en DVi le tout sous Vista...

Un gros merci d'avance !
bkool77
 
Messages: 201
Inscription Forum: 10 Aoû 2006 15:47
Localisation: Aix-en-Provence
  • offline

Message » 30 Mai 2009 8:38

bonjour,
Avec ton ATI dans CCC rubrique gestionnaire de profils tu peux dans l'onglet "activation" mettre un "raccourci sur le bureau".
En clair, tu fabriques ta configuration puis tu la sauvegardes dans un profil ( éventuellement avec une touche d'accès rapide en plus.
michelB2
 
Messages: 1728
Inscription Forum: 08 Sep 2003 9:42
Localisation: Nantes
  • offline

Message » 04 Juin 2009 13:15

Pas tout à fait la réponse exacte, mais cela apportera de l'eau à ton moulin ...

Récemment, grâce à la disponibilité d'un forumeur, j'ai pu enfin trouver une solution simple à mes besoins de changement de configuration d'écrans.

Config : Un écran LCD analogique en 1280x1024 60hz, un Vidéoprojecteur en HDMI 1920x1080, 50hz pour les DVD, 24hz pour les BD ... ATI Radeon 4670, CCC au dernier indice technique.

Après avoir longtemps cherché à avoir les deux affichages simultanés, je me suis rendu compte qu'un seul affichage était plus simple à gérer. Aussi ...

En utilisant les fonctionnalités du CCC ATI citées par MichelB2, et en "programmant" une série de touches, je peux très simplement :
Switcher l'affichage bureau de l'écran LCD vers le VP : Alt S (le Vidéoprojecteur se synchronise en 1280, le LCD s'éteint ...)
Changer la résolution de 1280 vers 1920, en 50 Hz (Alt 5) ou en 24 (Alt 2)

Après la séance HC, avant d'éteindre le VP ...

Je prépare le retour de l'affichage vers le LCD : Pour cela, Alt P repasse l'affichage 1920 en 1280, 60hz
Alt S permet de switcher les écrans ... Le LCD se synchronise, le VP répond "no signal".

Simple, facile à retenir, cela marche à tous les coups ...
Je reconnais qu'il faut passer un peu de temps à comprendre le paramétrage du CCC, mais cela en vaut la chandelle ...
alcatol
 
Messages: 3647
Inscription Forum: 14 Fév 2002 2:00
Localisation: 78
  • offline

Message » 04 Juin 2009 17:26

bonjour,
en fait je fais (presque) pareil;
j'ai un script qui m'a automatisé toute la procédure.
Dans CCC j'ai un profil VP, un LCD, pour le VP j'ai un profil 24, 50 et 60Hz.
Quand un lance un film, le script bascule du profil LCP au profil VP ( et donc éteint ) le LCD en envoyant les touches rapides
mediainfo analyse le film lancé et en profite pour me basculer en 24 50 ou 60Hz (reclock pourrait le faire aussi).
accessoirement, je commande mon VP par le port série et je l'allume en même temps (ce qui descend l'écran motorisé via le trigger du VP).
via Girder j'utilse une télécommande pour gérer les actions.
quand je ferme MPC, le script éteint le VP et rebascule en mode LCD.
michelB2
 
Messages: 1728
Inscription Forum: 08 Sep 2003 9:42
Localisation: Nantes
  • offline

Message » 04 Juin 2009 17:48

Diablement intéressant tout celà :D

Tu as la possibilité de développer encore plus ou de mettre tes scripts en ligne ?

Scripts, c'est du AutoIt, du AutoHotkey ou carrément autre chose ?
grave
 
Messages: 904
Inscription Forum: 13 Déc 2005 17:08
Localisation: 44 Saint Herblain
  • offline

Message » 04 Juin 2009 20:32

grave a écrit:

Tu as la possibilité de développer encore plus ou de mettre tes scripts en ligne ?

Scripts, c'est du AutoIt, du AutoHotkey ou carrément autre chose ?


c'est du Autoit + un peu de php pour lancer le script à partir de choix de film fait dans Movie Collection utilisé en mode serveur.
Cela ne me gène pas de mettre tout à disposition de la communauté mais comme c'est un développement à usage perso., c'est un torchon non commenté.
michelB2
 
Messages: 1728
Inscription Forum: 08 Sep 2003 9:42
Localisation: Nantes
  • offline

Message » 04 Juin 2009 22:49

Si ça peut nous mettre sur la voie c'est déjà beaucoup.

J'ai déjà joué un peu à Autoit par contre le Php :oops:

merci d'avance.
grave
 
Messages: 904
Inscription Forum: 13 Déc 2005 17:08
Localisation: 44 Saint Herblain
  • offline

Message » 05 Juin 2009 11:17

voici le code demandé (livré brut de fonderie)
n'ayant pas fourni les 2 includes de changement de papier et de gestion du VP, il faudra supprimer ces appels dans le code
il faut également mettre à la bonne valeur
$ipservideo
les chemins pour le fichier log, les endroits où trouver les fichiers films
les chemins des applicatifs utilisés (deamon, vlc,kmplayer,mpc, mediainfo,girder

il manque de plus le php interfaçant Movie collection avec ce script.
j'espère que cela pourra te servir
A+

Code: Tout sélectionner
;----------------------------------------------------
;
;       resolution monit film
; avec monit= 1 ou 2
;      film=    nom_fichier_avi(mkv)
;            nom_image_iso à monter dans deamon tools (lettre W)
;            lettre lecteur du DVD
; exemple
;
;  C:\util\autoit\AutoIt3.exe C:\util\autoit\resolution.au3 1 "e:\video\xxxx.mkv"
;  C:\util\autoit\resolution.exe 2 x:
;-------------------------------------------------------
#Include <String.au3>
#Include <File.au3>
;#Include <Array.au3>
#Include <Date.au3>
#include 'hc6000_Commg.au3'         ; fonction de communication avec le projecteur
#include 'change_papier.au3'      ; changement de fond d'ecran lors du basculement VP <-> LCD

global $ip,$std_vidform = "",$std_audform = "",$std_vidwidth = "",$std_vidheight = "",$filmlog,$std_bitrate=""
global $duree_lampe="9999:99"

;----------fermeture du navigateur---------------------------
$aa=controlclick("Windows Internet Explorer","","&Oui")
$aa=controlclick("Windows Internet Explorer","","&Oui")

;-----montage par défaut X: (sans parametes)----------------
;sinon si iso ,nrg montage en w:
; si exist bdmv\stream\*.m2ts => lire avec kmplayer ou vlc
;sinon fichier
;----------------------------------------------------------
$ipservideo="192.168.0.6"

;;;;;;;;;;msgbox(0,"",@IPAddress1 & @CR & @ComputerName & @CR & @UserName)
;;;;;;;;;;exit
;  msgbox(0,"",$cmdline[0]             & ".." & $cmdline[1] & ".." & $cmdline[2])
;exit
;--------------------------------nom ----------------------------------------------------------
$a=stringsplit(@ComputerName,"-")
$cptname=$a[1]

;---------------------Emplacement des executables------------------------------------------
$path_daemon="C:\Program Files\DAEMON Tools Lite\"
$daemon="daemon.exe"

$path_girder="C:\Program Files\girder32\"
$girder="Girder.exe"
   if $cptname="MICHEL-xxxxx" then
      $f=lecteur($path_girder,$girder)
      if $f<>"" then $path_girder=""
   else
   $path_girder=""
   endif

;$path_mediainfo="C:\util\mediainfo\"
$path_mediainfo=@TempDir & "\"
$mediainfo="mediainfo.exe"
   $f=lecteur($path_mediainfo,$mediainfo)
   if $f<>"" then $path_mediainfo=""

$path_lecteur1="C:\util\mediaplayerclasic\"
$lecteur1="mplayerc.exe"

$path_lecteur2="c:\util\kmplayer\"
$lecteur2="kmplayer.exe"

$path_lecteur3="C:\Program Files\VideoLAN\VLC\"
$lecteur3="vlc.exe"

$path_log="\\" & $ipservideo & "\video\logs\"
$path_log="\\192.168.0.1\o\Movie Collection\web\logs\"
$fich_log=$cptname & "_resolution.log"
;------------------------------------------------------------------------------------------
$path_video="\\" & $ipservideo & "\video_e\"
$path_video2="\\" & $ipservideo & "\video_j\"
$path_video3="\\" & $ipservideo & "\video_f\"
$path_video4="\\192.168.0.1\o\video\"

;----------------------------------------------------------------
$monit=1
$film=""
switch $cmdline[0]
case 0
   $monit=1
case 1
   if $cmdline[1] = 1 or $cmdline[1] = 2  then
      $monit=$cmdline[1]
      $film=""
   else
      $film=$cmdline[1]
   endif
case 2
   $monit=$cmdline[1]
   $film=$cmdline[2]
endswitch
;-------gestion du cas particulier d'un support physique connu----------
$filmlog=$film
$a=stringsplit($film,"/")
;msgbox(0,"","error =" & "<" & $film & ">" & @error)
;msgbox(0,"","$a[0] =" & $a[0])
 if $a[0] >= 2 then
   $film= $a[1]         ; nom de fichier ou DVD
   $filmlog=$a[2]         ; nom du film
 endif   
if StringInStr($film,"DVD")=1 then
;   $filmlog=stringtrimleft($film,4)
   $film=""
endif

;msgbox(0,"","<" & $film & ">" & chr(13) & "<" & $filmlog & ">")
;exit
;---------------------------------------Emplacement possible des films -----------------------
;$film=stringreplace($film,"%20"," ")   ; gere par decodeURI dans le html


if $film<>"" then
   $f1=recherche_fich($path_video,$film)
   if $f1="" then $f1=recherche_fich($path_video2,$film)         
   if $f1="" then $f1=recherche_fich($path_video3,$film)      
   if $f1="" then $f1=recherche_fich($path_video4,$film)      
$film=$f1
endif
;msgbox(0,"test1","<" & $film & ">" & chr(13) & "<" & $filmlog & ">")
;--------------------------------------------------------------------------------------------
if $film="" then
   $a1="X:"
else
   $a1=$film
   if StringInStr($a1,".iso")>0 or StringInStr($a1,".nrg")>0 or StringInStr($a1,".mds")>0 then
      $f=lecteur($path_daemon,$daemon)
      if $f="" then
         runwait ($path_daemon & $daemon & " -mount 0,"  & '"' & $a1 & '"',$path_daemon)
         $dd=DriveGetDrive ("cdrom")
         $a1=$dd[1]      ;$a1="w:"

      else
         msgbox(0,"Anomalie Deamon","Deamon.exe n'est pas installé, pas de lecture d'image de DVD possible")
         exit
      endif
   endif
endif

do
$rep="1"
if   not fileExists($a1) then
   $rep=msgbox(5,"Anomalie","Pas de disque dans le lecteur " & $a1 & "ou fichier non trouvé")
      if $rep <> "4" then
         exit
      else
         $rep=""
      endif
endif
until $rep <>""
;msgbox(0,"","monit=" & $monit & " --<" & $a1 & ">--" & $rep)
;exit
;--------------------------------------------------------------------------------

$bdr=false
$gros=recherche_gros_fich($a1)
;MsgBox(0, "fin de recherche",$gros)
;exit
if $path_mediainfo<>"" then
$a=$path_mediainfo & $mediainfo & "  -f " & '"' & $gros & '"' & " >" & $path_mediainfo & "xxx"
runwait(@ComSpec & " /c " & $a,$path_mediainfo)

$l=FileGetSize($path_mediainfo & "xxx")
$ip = FileRead($path_mediainfo & "xxx", $l)


$ip2=StringStripWS ($ip, 8)         ;suppression de tous les blancs
;msgbox(0,"",$ip2)

;------recherche Mediainfo-----------------------------
;---------frequence de balayage-------------------------
$a=_stringbetween($ip2,"Framerate:","fps")   ;recherche du 1er fps
$ip=0
if $a <> "" then $ip=number($a[0])
$a=_stringbetween($ip2,"Scanorder:","Pulldown")
if ($a <> "" and $a[0]="2:3" and $ip=29.97) then $ip=24            ;;;;; $a<>0 remplacé par <>""

$a=_stringbetween($ip2,"CodecID:","CodecID/Hint")
if $a="" then $a=_stringbetween($ip2,"Video_Format_List:","Video_Format_WithHint_List")
if $a<>"" then $std_vidform=$a[0]

$a=_stringbetween($ip2,"Audio_Format_List:","Audio_Format_WithHint_List")
if $a<>"" then $std_audform=$a[0]

$std_audform2=""
; si %Codec%  non OK mettre %Format%--------
$param="  --Inform=Audio;(%ID%=%Language%)%Codec%-%Channel(s)% "
$a=$path_mediainfo & $mediainfo & $param & '"' & $gros & '"' & " >" & $path_mediainfo & "xxx1"
runwait(@ComSpec & " /c " & $a,$path_mediainfo)
$l=FileGetSize($path_mediainfo & "xxx1")
$std_audform2 = FileRead($path_mediainfo & "xxx1", $l)
$std_audform2=stringreplace($std_audform2,@CR & @LF ,"")

$a=_stringbetween($ip2,"Width:","pixels")
if $a<>"" then $std_vidwidth=number($a[0])
$a=_stringbetween($ip2,"Height:","pixels")
if $a<>"" then $std_vidheight=number($a[0])
   
   if $std_vidwidth=720 and $std_vidheight=480 and $ip=29.97 then $ip=24
      
;$ab=_stringbetween($ip2,"VideoCount","AudioCount",1)
;$a=_stringbetween($ab[0],"Bitrate:","Width:",1)
$a=_stringbetween($ip2,"Bitrate:","Width:",1)
if $a<>"" then $std_bitrate=round(number($a[0])/1000,2)
;msgbox(0,"Mediainfo",$a[0])
;msgbox(0,"Mediainfo","ip  = " & $ip & chr(13) & "std = " & $std_vidform & chr(13) & "aud = " & $std_audform & chr(13) & "larg = " & $std_vidwidth  & chr(13) & "long = " & $std_vidheight & chr(13) & "bit rate = " & $std_bitrate)
;exit
;----------traitement particulier pour les BluRay--------------
; structure non reconnu par mediainfo et mediaplayerc

if $a1="W:" and fileexists("W:\bdmv\stream\*.m2ts") then
   $bdr=true
   $a1="W:\BDMV\STREAM\00001.m2ts"
   $ip=24
endif
;------------------allume VP et changement de frequence---------------------------------------
if $monit=2 then
      $duree_lampe=dureelampe()
      SoundPlay(@WindowsDir & "\media\ding.wav",1)
      allumvp()
      sleep(1000*10)                           ; attendre descente ecran et allume lampe
;      attendreVP_dispo()
      SoundPlay(@WindowsDir & "\media\tada.wav",1)
      ShellExecuteWait ("c:\util\autoit\HC6000.lnk")      ;   send("^!H")      ; basculer VP seul
      sleep(1000*10)                           ; attendre changement d'ecran      
      change_papier()
      sleep(1000*15)                           ; attendre fin allumage lampe (somme=30s)      
      SoundPlay(@WindowsDir & "\media\notify.wav",1)
   $kk=""
   $msg="Frequence non trouvée, laissée en l'état"
   if $ip<23 or $ip>=35 then
      $msg="Frequence <23 ou >35 : " & $ip
   ;   exit
   endif
   if $ip>23 and $ip<25 then
      $kk="^!{F4}"
      $msg="change 24"
   endif
   if $ip>=25 and $ip<29 then
      $kk="^!{F5}"
      $msg="change 25"
   endif
   if $ip>=29 and $ip<35 then
      $kk="^!{F6}"
      $msg="change 30"
   endif
   if $kk<>"" then
      send($kk)
      sleep(2000)
   ;   msgbox(0,"",$msg)
   else
      msgbox(0,"",$msg)
   endif
endif   ;fin moniteur 2
endif   ;fin traitement mediainfo
send ("{NUMLOCK off}")
;--------relance eventuelle de Girder-----(changer de configuration ecran plante girder => relancer apres)---------------------------------
if $path_girder<>"" then
   ProcessClose($girder)
   sleep(500)
   shellexecute($path_girder & $girder, '',$path_girder)
endif

;--------------------------------choix du lecteur------------------------------------------------

   if $bdr then
      $f=lecteur($path_lecteur2,$lecteur2)
      if  $f = "" then
         ecritlog()
         shellexecutewait($path_lecteur2 & $lecteur2, '"' & $a1 & '"',$path_lecteur2)
      else
         msgbox(0,"Anomalie",$f)
         exit
      endif
   else
      $f=lecteur($path_lecteur1,$lecteur1)
      if $f="" then
         ecritlog()
;         shellexecutewait($path_lecteur1 & $lecteur1," /fullscreen /monitor " & $monit & " " & '"' & $a1 & '"',$path_lecteur1)
         shellexecutewait($path_lecteur1 & $lecteur1," /fullscreen " & '"' & $a1 & '"',$path_lecteur1)
      else
         $f=lecteur($path_lecteur3,$lecteur3)
         if $f="" then
            ecritlog()
            shellexecutewait($path_lecteur3 & $lecteur3, '"' & $a1 & '"',$path_lecteur3)
         else
            msgbox(0,"Anomalie",$f)
            exit
         endif
      endif
   endif

if StringInStr($a1,"W:")>0 or StringInStr($a1,"V:")>0  then
   runwait ($path_daemon & $daemon & " -unmount 0"  ,$path_daemon)
endif

send ("{NUMLOCK on}")
exit
;--------------------------------------------------------------------------
;            FONCTIONS
;--------------------------------------------------------------------------
func recherche_fich($chemin,$fichier)
;msgbox(0,"",$fichier)
;$f=split_fich($fichier)
;$c=split_dir($fichier)
if fileexists($fichier) then return $fichier
   
$fichier=split_fich($fichier)
$ff=@ComSpec & " /c dir /b/s/a-d "  & '"' & $chemin & $fichier  & '"' & " > c:\xxx"
;msgbox(0,"recherche",$ff)
runwait($ff,"",@SW_HIDE)
if filegetsize("c:\xxx")=0 then
$fichier=""
else
$f=filereadline("c:\xxx")
$fichier=split_dir($f) & $fichier
;msgbox(0,"split dir",$fichier)
endif
filedelete("c:\xxx")
return $fichier
endfunc
;---------------------------------------------------------------------------------
func split_fich($fichier)
Dim $szDrive, $szDir, $szFName, $szExt
$TestPath = _PathSplit($fichier, $szDrive, $szDir, $szFName, $szExt)
return $szFName & $szExt
; _ArrayDisplay($TestPath,"Demo _PathSplit()")
endfunc
;-----------------------------
func split_dir($fichier)
Dim $szDrive, $szDir, $szFName, $szExt
$TestPath = _PathSplit($fichier, $szDrive, $szDir, $szFName, $szExt)
return $szDrive & $szDir
endfunc
;---------------------------------------------------------------------------------
func lecteur(byref $pl ,byref $l)
;   msgbox(0,"avant",$pl &  "--" & $l)
   if not fileexists($pl & $l) then
      $f=recherche_fich("c:\",$l)
;      msgbox(0,"apres",$pl &  "--" & $l)
      if $f="" then
         return 'Anomalie Programme (" & $l & ") non trouvé'
      endif
      $pl=split_dir($f)
      $l=split_fich($f)
   endif
return ''
endfunc
;------------------------------------------------------------------------------------
; recherche du plus gros fichier
func recherche_gros_fich($fichier)
; Shows the filenames of all files in the current directory.
if $fichier="W:" or $fichier="X:" then
$pth=$fichier & "\VIDEO_TS\"   
   $search = FileFindFirstFile($pth & "*.*" ) 
   if $search = -1 Then
      $pth=$fichier & "\BDMV\STREAM\"
      $search = FileFindFirstFile($pth & "*.*")
         if $search = -1 Then
         $pth=$fichier   
         $search = FileFindFirstFile($pth & "*.*" ) 
            If $search = -1 Then
            MsgBox(0, "Error", "Gros fichier non trouvé")
            Exit
            endif
         endif
   endif

$plusgrand_tail=0
While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
;    MsgBox(0, "recherche", $file & " : " & filegetsize($pth & $file) & "/" & $plusgrand_tail)
    if filegetsize($pth & $file)>$plusgrand_tail then
   $plusgrand_tail=filegetsize($pth & $file)
   $fichier=$pth & $file
    endif
WEnd
; Close the search handle
FileClose($search)
; MsgBox(0, "fin de recherche",$fichier & " : " & $plusgrand_tail)

endif
return $fichier
endfunc
;--------------------------------------------------------------------------------------------------------------------
func ecritlog()
;msgbox(0,"Ecritlog",$path_log & "--" & $fich_log)
$ip1=stringformat("%.2f ",$ip)            ; frequence (fps)
$vf= stringformat("%-15s ",$std_vidform)         ; standard video
if $std_audform2="" then $std_audform2=$std_audform
$af= stringformat("%-30s ",$std_audform2)         ; standard audio
;$af2= stringformat("%-15s ",$std_audform2)

$xy= stringformat("%4.0fx%4.0f ",$std_vidwidth,$std_vidheight)   ; HxV
$br= stringformat("%7.1f ",$std_bitrate)         ;bitrate

;$mm=@MDAY & "/" & @MON & "/" & @YEAR & " " & $ip1 & $vf & $xy & $br & $af & $duree_lampe & " " & $filmlog & ' "' & split_fich($film) & '"' & @CRLF
$mm=@MDAY & "/" & @MON & "/" & @YEAR & " " & $ip1 & $vf & $xy & $br & $af & $duree_lampe & " " & split_fich($filmlog) & @CRLF

filewriteline($path_log & $fich_log, $mm)
endfunc
michelB2
 
Messages: 1728
Inscription Forum: 08 Sep 2003 9:42
Localisation: Nantes
  • offline


Retourner vers Matériel PC Home-cinéma

 
  • Articles en relation
    Dernier message