IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[c#] utilisation de mcisendcommand


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Points : 149
    Points
    149
    Par défaut [c#] utilisation de mcisendcommand
    Bonsoir,
    Dans ma recherche de l'utilisation de la commande mcisendcommand, j'ai trouvé au lien ci dessous une transcription en c# de toutes les commandes de winmm.dll



    http://www.koders.com/csharp/fidD708...mcisendcommand

    sur cette base j'ai construis ce programme dont l'objectif est d'ouvrir un cd audio pour lire dans un deuxième temps les informations relatives aux pistes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using System.Text;
    using HANDLE = System.IntPtr;
    using HWND = System.IntPtr;
    using HDC = System.IntPtr;
     
     
    namespace essai_winmm
    {
        public partial class Form1 : Form
        {
     
     
            public struct MCI_OPEN_PARMS
            {
                public int dwCallback;
                public int wDeviceID;
                public string lpstrDeviceType;
                public string lpstrElementName;
                public string lpstrAlias;
            }
     
            public struct MCI_STATUS_PARMS
            {
                public int dwCallback;
                public int dwReturn;
                public int dwItem;
                public short dwTrack;
            }
     
            public struct MCI_INFO_PARMS
            {
                public int dwCallback;
                public string lpstrReturn;
                public int dwRetSize;
            }
     
            public const int MCI_OPEN = 0x803;
            public const int MCI_OPEN_ALIAS = 0x400;
            public const int MCI_OPEN_ELEMENT = 0x200;
            public const int MCI_OPEN_ELEMENT_ID = 0x800;
            public const int MCI_OPEN_SHAREABLE = 0x100;
            public const int MCI_OPEN_TYPE = 0x2000;
            public const int MCI_OPEN_TYPE_ID = 0x1000;
     
            [DllImport("winmm")]
            public static extern int mciSendCommand(int wDeviceID, int uMessage, int dwParam1, IntPtr dwParam2);
     
     
     
     
     
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                MCI_OPEN_PARMS mciOpenParms = new MCI_OPEN_PARMS();
                mciOpenParms.lpstrDeviceType = "cdaudio";
                mciOpenParms.lpstrElementName = "E";
                int Score = mciSendCommand(0, MCI_OPEN, (MCI_OPEN_TYPE | MCI_OPEN_ELEMENT), mciOpenParms);
            }
        }
    }
    Mon problème est que j'ai un message m'informant que le dernier argument de ma commande mcisendcommand n'est pas correcte

    Comment faire pour faire fonctionner en utilisant le type IntPrt

    par avance merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    dans la signature de la méthode mcisendcommand, essaye de remplacer IntPtr par MCI_OPEN_PARMS

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Points : 149
    Points
    149
    Par défaut
    merci tomlev ton idée fonctionne mais je m'explique toujours pas pourquoi dans les autres programmes trouvés sur le net il mettent une signature différente pour cette commande
    As-tu une piste ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    En fait si tu mets un IntPtr, il faut gérer toi-même le marshalling des données (allouer la mémoire non managée, copier la structure managée vers la mémoire allouée, etc...)
    Si tu mets simplement le type de la structure, c'est fait automatiquement (mais dans certains cas ça ne peut pas fonctionner)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo