none
Enviar una tecla (espacio) a una aplicacion en segundo plano (Spotify). RRS feed

  • Pregunta

  • Hola. Estoy haciendo un trabajo para mi escuela y necesito ayuda.

    Estoy intentando desarrollar un pequeño asistente de voz, que responda preguntas basicas y que pueda reproducir o pausar musica. El problema llega cuando quiero que mi aplicación envíe un espacio a Spotify, que es un atajo de teclado para que la musica se reproduzca. 

    Estuve investigando en varias paginas, pero nunca encuentro la solución definitiva. Ademas, soy bastante principiante, ya que estoy aprendiendo.

    Dejo una parte muy pequeña de mi código (simplificada), donde escribí lo que encontré en una pagina, casi exactamente como estaba.

    public partial class Form1 : Form
        {
    
    [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
            public static extern IntPtr FindWindow(string lpClassName,
              string lpWindowName);
         
            [DllImport("USER32.DLL")]
            public static extern bool SetForegroundWindow(IntPtr hWnd);
            IntPtr wordHandle = FindWindow(null, "Spotify");
    
    
    private void Reconocedor_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
            {
    
       if (r == "reproducir" || r == "pausa" )
                    {
    
                        if (wordHandle == IntPtr.Zero)
                        {
                            say("espotifai esta cerrado");
                            return;
                        }
    
                        SetForegroundWindow(wordHandle);
                       
                        System.Threading.Thread.Sleep(100);
                        SendKeys.SendWait(" ");
    
                    }
    }
    }

    Esto no me sirve por dos cosas:

    1- Como se puede notar, el programa busca el proceso por el nombre de ventana

    ("IntPtr wordHandle = FindWindow(null, "Spotify"); 

    y lo que pasa, es que el nombre de la ventana de Spotify cambia de acuerdo a la cancion que escuches, entonces, si estoy escuchando Yellow de Coldplay, por ejemplo, la ventana se llamaria "Yellow - Coldplay" y mi programa no encontraría la ventana.

    2- El otro problema, es que simplemente no funciona. Cuando el nombre de ventana es correcto y se ejecuta la condición, Windows hace el tipico sonido de cuando una tecla que presionas no sirve y en la barra de tareas queda seleccionado Spotify, pero ni la música se empieza a reproducir, ni la ventana aparece en primer plano.

    Agradezco infinitamente cualquier tipo de ayuda, y mejor si es con varios ejemplos (recuerden que soy principiante).

    Muchas gracias.

    lunes, 27 de junio de 2016 1:07