C # Skype API Video Call - PullRequest
       21

C # Skype API Video Call

10 голосов
/ 30 января 2012

Я работал над приложением для монитора безопасности, и наилучшим подходом, который я нашел, был Skype.

, когда происходит возможное вторжение, приложение вызывает указанный Skype ID, который, вероятно, является моим телефоном для Android.материал для обработки изображений.Но я застрял с этим Skype API, я написал этот кусок кода:

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();
        }
    }
}

Это инициирует голосовой вызов, но в call.StartVideoSend ();показывает ошибку

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

Additional information:  CALL: Action failed

я даже пытался это , но я думаю, что это старый API и ничего из этого не получилось.И даже не посылая команды .

, если кто-нибудь мне поможет, я буду благодарен.

1 Ответ

5 голосов
/ 30 января 2012

Я думаю, вам нужно подождать, пока вызов не будет подключен.

Самый простой способ - проверить вызов. Статус

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();
        }
    }

Вы также можете добавить событие, однако я думаю, что оно будет срабатывать при каждом вызове, поэтому, если вы не используете его только для этого проекта, это может быть слишком много.

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(); }
        }
    }
...