2012-01-30 30 views
10

Estaba trabajando en una aplicación de monitoreo de seguridad y el mejor enfoque que encontré fue Skype.C# Llamada de video de Skype API

Cuando ocurre una posible intrusión, la aplicación llama a una ID de Skype especificada, que probablemente sea mi teléfono Android. Ya terminé con todo el procesamiento de imágenes. Pero estoy atascado con este API de Skype que escribí esta pieza de código:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using SKYPE4COMLib; 


namespace SkypeCall 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Skype skype; 
      skype = new Skype("Skype4COM.Skype", "Skype_"); 

      Call call = skype.PlaceCall(SkypeID); 
      call.StartVideoSend(); 
     } 
    } 
} 

Esto inicia una llamada de voz, pero en el call.StartVideoSend(); muestra un error

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in SkypeCall.exe 

Additional information: CALL: Action failed 

i siquiera intentado this pero yo supongo que es la API de edad y no podía sacar nada de él. Y ni siquiera enviando commands.

si alguien me ayudara, estaré agradecido.

Respuesta

5

Creo que debe esperar hasta que se conecte la llamada.

forma más fácil sería poner a prueba la call.Status

class Program 
    { 
     static void Main(string[] args) 
     { 
      Skype skype; 
      skype = new SKYPE4COMLib.Skype(); 
      string SkypeID = args[1]; 
      Call call = skype.PlaceCall(SkypeID); 
      do 
      { 
       System.Threading.Thread.Sleep(1); 
      } while (call.Status != TCallStatus.clsInProgress); 
      call.StartVideoSend(); 
     } 
    } 

También puede añadir un evento, sin embargo creo que esto va a disparar en cada llamada por lo menos que sólo lo está utilizando para este proyecto podría ser demasiado.

class Program 
    { 
     static string SkypeID = ""; 
     static void Main(string[] args) 
     { 
      Skype skype; 
      skype = new SKYPE4COMLib.Skype(); 
      skype.CallStatus += new _ISkypeEvents_CallStatusEventHandler(skype_CallStatus); 
      Call call = skype.PlaceCall(SkypeID); 

      Console.ReadKey(); 
     } 

     static void skype_CallStatus(Call pCall, TCallStatus Status) 
     { 
      if (Status == TCallStatus.clsInProgress && pCall.PartnerHandle == SkypeID) { pCall.StartVideoSend(); } 
     } 
    } 
+0

Gracias a un millón @Matt –

Cuestiones relacionadas