wald39
Messages postés68Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention23 février 2011
-
17 févr. 2007 à 14:12
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 2016
-
24 févr. 2007 à 11:23
J'ai une application qui utilise le composant windows media player, j'ouvre un fichier avec mon appli tout marche nikel, mais lorsque j'en ouvre un autre sans quitter mon appli, qui est deja en train de lire l'autre fichier audio, sa me lance une deuxième fois mon application, du coup j'ai deux mon appli qui jou deux fichiers differents.
J'ouvre montre mon code qui recupère le fichier et le lit au lancement de l'appli :
string[] arg = Environment.GetCommandLineArgs();
if (arg.Length > 0)
{
try
{
if (arg[1] != "")
{
axWMP.URL = arg[1]; //axWMP est le composant windows media player
}
}
catch{}
}
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 20 févr. 2007 à 00:39
Une solution qu'on voit souvent sur le web c'est de passer par le .Net-remoting mais je ne suis pas trop fan du Net-remoting, l'autre soluce c'est d'envoyer un message à la première instance via l'API Win32. Si je trouve le temps j'essayerai de te donner un exemple.
wald39
Messages postés68Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention23 février 20117 19 févr. 2007 à 12:03
Vos deux réponses sont bonnes mais comment je fais pour que mon application arrete de jouer le premier fichier et récupère le chemin de l'autre pour ensuite le jouer ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 20 févr. 2007 à 17:54
à tester..
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace Lutinore
{
// Une seule instance de l'application, la ligne de commande est passée à l'instance active.
// C'était également possible de faire ça avec un mutex nommé et le .NET remoting.
// Le code unsafe peut être remplacé par des GCHandle pinned ou en copiant les données
// dans le tas non managé avec Marshal.StringToHGlobalAuto, Marshal.StructureToPtr etc..
internal class MainForm : Form
{
#region Win32
[ StructLayout( LayoutKind.Sequential ) ]
private struct COPYDATASTRUCT
{
public UIntPtr dwData;
public uint cbData;
public IntPtr lpData;
}