Process mettre un lecteur media en pleine ecran [Résolu]

gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 17 mai 2008 à 21:31 - Dernière réponse : leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention
- 20 mai 2008 à 15:04
Bonjour,
J'utilise Process pour lancer un exécutable multimédia dans mon application.
dont voici le code en dessous :
Process

p =
new
Process();

public Form1()
{
  InitializeComponent();

  try
  {
    p.StartInfo.UseShellExecute =
false;
    p.StartInfo.FileName =
@"C:\Program Files\Windows Media Player\wmplayer.exe";

    p.StartInfo.Arguments =
@"C:\MesVidéos\cockatoo.wmv";

    p.Start();

  }

  catch (
Exception e)
  {

    MessageBox.Show(e.Message);
  }
}

Je souhaiterais savoir comment dans la programmation je peux lancer directement en plein écran sans avoir  à toucher média player ?? et surtout si c'est possible ??
Afficher la suite 

14 réponses

Répondre au sujet
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 18 mai 2008 à 22:35
+3
Utile
Salut,

Pour cela, il faut que tu t'aide de la Spy++
http://logiciel.codes-sources.com/logiciels/Spy-174.aspx

Ouvre Media Player et lance la Spy++
Tu devrai le trouver dans la liste des fenêtre ouvertes. Là il apparaît le titre de la fenêtre et sa classe. Info qu'il faut mettre dans le FindWindow pour retrouver l'handle. Si elles sont différentes, met à jour avec celles que tu as.

Ensuite, pour les valeurs, WM_COMMAND est une valeur constante utilisé par le SendMessage. Sert à envoyer les messages de commandes aux applications.
Pour le WMP_FULLSCREEN, là, j'ai encore utilisé la Spy++ pour connaître la valeur.
Clique droit dans la liste sur la fenêtre MediaPlayer, puis messages, il faut ensuite filtrer, Ctrl+O, sur l'onglet message, dans la liste, tu sélectionne WM_COMMAND, tu applique.
Reste plus qu'à aller dans le MediaPlayer, (l'application cette fois), de le toucher un peu (le mettre en full screen par exemple), et hop, il apparaît dans la spy++ la valeur du message qui t'intéresse.

Après, il conviendra peut-être de mettre une tempo entre l'ouverture de wmp et du passage en mode pleine-écran
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Charles Racaud
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 19 mai 2008 à 11:47
+3
Utile
Salut,

Oui, j'ai oublié de précisé, utilise les menu de wmp au lieu des boutons de l'interface.

__________
  Kenji
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Charles Racaud
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 20 mai 2008 à 15:04
+3
Utile
sinon tu as remote Spy présent dans les remote tools de visual studio (dans le menu démarrer ou dans le menu target, bien qu'il me semble que cest platform builder qui te rajoute ce menu).
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de leprov
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 18 mai 2008 à 11:30
0
Utile
Salut,

Suffit de lui envoyer le message :
[

DllImport(
"user32.dll")]

private
static
extern System
.IntPtr FindWindow(
string strClassName,
string strWindowName);
[
DllImport(
"user32.dll")]

private
static
extern
int SendMessage(System
.IntPtr hWnd,
int Msg,
int wParam,
int lParam);

private
const
int WM_COMMAND
=
0x111;

private
const
int WMP_FULLSCREEN
=
0x495E;

System

.IntPtr WmpHandle
= FindWindow(
"WMPlayerApp",
"Windows Media Player");
SendMessage(WmpHandle, WM_COMMAND, WMP_FULLSCREEN,
0x0);

__________
  Kenji
Commenter la réponse de Charles Racaud
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 18 mai 2008 à 11:31
0
Utile
Je repose car ca c'est mal mis en forme :

[DllImport("user32.dll")]
private static extern System.IntPtr FindWindow(string strClassName, string strWindowName);


[DllImport("user32.dll")]
private static extern int SendMessage(System.IntPtr hWnd, int Msg, int wParam, int lParam);


private const int WM_COMMAND = 0x111;
private const int WMP_FULLSCREEN = 0x495E;


/* ... */


System.IntPtr WmpHandle = FindWindow("WMPlayerApp", "Windows Media Player");
SendMessage(WmpHandle, WM_COMMAND, WMP_FULLSCREEN, 0x0);

__________
  Kenji
Commenter la réponse de Charles Racaud
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 18 mai 2008 à 21:46
0
Utile
Charles Racaud,



Merci d'avoir répondu aussi vite mais le code n'a pas l'air de fonctionner lorsque j'effectue un pas à pas FindWindow retourne un handle = 0
Par conséquent, je pense qu'il y a quelque chose qui ne va pas !!
Est ce que je pourrais savoir sur quoi tu te base pour récupérer le nom de la classe et le nom de la fenetre (pour celui je pense que c'est le nom de l'éxécutable ???) ainsi que les valeurs des 2 constantes.
Comme cela, je pourrais comprendre son principe et chercher plus concrètement de mon coté et au besoin apporté les modifications si je veux l'appliquer à un autre programme.










































DllImport
(


"user32.dll"

)]



private s





tatic





extern





IntPtr

FindWindow(


string

strClassName,


string

strWindowName);
[


DllImport
("user32.dll")]
private static extern int SendMessage(System.IntPtr hWnd, int Msg, int wParam, int lParam);
private const int WM_COMMAND =0x111;
private const int WMP_FULLSCREEN =0x495E;





IntPtr

WmpHandle


=

FindWindow(


"WMPlayerApp"

,


"Windows Media Player"

);
SendMessage(WmpHandle, WM_COMMAND, WMP_FULLSCREEN,


0x0

);
Commenter la réponse de gabs77
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 18 mai 2008 à 22:30
0
Utile
__________
  Kenji
Commenter la réponse de Charles Racaud
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 18 mai 2008 à 22:32
0
Utile
__________
  Kenji
Commenter la réponse de Charles Racaud
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 18 mai 2008 à 22:41
0
Utile
Sinon on peut lancer WMP et faire un SendInput Alt+Entrée non?
Commenter la réponse de bubbathemaster
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 18 mai 2008 à 23:26
0
Utile
Merci pour ces infos !! Cela me sera d'une aide inconsidérable !
J'ai pu corrigé l'erreur que voici ; et désormais ça fonctionne !!

IntPtr
WmpHandle =
FindWindow( "WMPlayerApp", "Lecteur Windows Media");

En revanche, il reste juste un dernier point auquel je ne suis pas parvenu à trouver :
Pour le WMP_FULLSCREEN, là, j'ai encore utilisé la Spy++ pour connaître la valeur.
Clique droit dans la liste sur la fenêtre MediaPlayer, puis messages, il faut ensuite filtrer, Ctrl+O, sur l'onglet message, dans la liste, tu sélectionne WM_COMMAND, tu applique.
Reste plus qu'à aller dans le MediaPlayer, (l'application cette fois), de le toucher un peu (le mettre en full screen par exemple), et hop, il apparaît dans la spy++ la valeur du message qui t'intéresse.
J'ai suivi tes consignes, lancer WMP puis lancer Spy++ et le retrouver dans la liste des fenêtres > clic droit > Messages
Je stop l'enregistrement pour pouvoir accéder au options du journal et sélectionne uniquement WM_COMMAND j'applique, rédemarrer l'enregistrement et je manipule media player mais rien ne s'affiche
Commenter la réponse de gabs77
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 18 mai 2008 à 23:35
0
Utile
bubbathemaster
,
je ne connais pas SendInput dans quelques références se trouve-t-elle ?
Aurais tu un exemple de code a me proposer ??
Cdlt.
Commenter la réponse de gabs77
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 19 mai 2008 à 17:25
0
Utile
ah, sa y est j'ai trouvé !!!
effectivement il faut utilisé les menus et faire un clic droit > propriété puis prendre le wParam !!!

Je te remercie
Commenter la réponse de gabs77
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 19 mai 2008 à 18:14
0
Utile
Par contre, j'ai un autre souci !!


Si je veux le faire pour un WinCE 6.0 avec ceplayer.exe, je ne peux pas utiliser spy++ pour déterminer les paramètres !!!


Quelqu'un a une idée ??
Commenter la réponse de gabs77
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 20 mai 2008 à 15:03
0
Utile
pourquoi ne pas embarquer l'activeX WMP dans ton appli? il me semble que l'activeX est aussi dispo sous CE
Commenter la réponse de leprov

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.