2012-01-30 43 views
10

Tôi đang làm việc trên một ứng dụng giám sát bảo mật và cách tiếp cận tốt nhất mà tôi tìm thấy là Skype.C# Skype API Cuộc gọi video

khi có thể xảy ra sự cố, ứng dụng gọi một ID Skype được chỉ định có thể là điện thoại Android của tôi tôi đã hoàn tất với tất cả các công cụ xử lý hình ảnh. Nhưng tôi bị mắc kẹt với API Skype này tôi đã viết đoạn mã này:

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

này khởi tạo một cuộc gọi thoại nhưng trong call.StartVideoSend(); hiển thị lỗi

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

Additional information: CALL: Action failed 

tôi thậm chí đã thử this nhưng tôi đoán đó là API cũ và không thể lấy bất kỳ thứ gì từ nó. Và thậm chí không bằng cách gửi commands.

nếu ai đó giúp tôi, tôi sẽ biết ơn.

Trả lời

5

Tôi nghĩ bạn cần chờ cho đến khi cuộc gọi được kết nối.

Cách đơn giản nhất sẽ được kiểm tra 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(); 
     } 
    } 

Bạn cũng có thể thêm một sự kiện, tuy nhiên tôi nghĩ rằng đây sẽ kích hoạt trên mỗi cuộc gọi vì vậy trừ khi bạn chỉ sử dụng nó cho dự án này nó có thể là quá nhiều.

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

Cảm ơn một triệu @Matt –

Các vấn đề liên quan