2009-03-09 25 views
6

Tôi đang làm việc với Skype4COM.dll COM API bằng C# và nó hoạt động rất tốt cho tất cả chức năng giao tiếp chúng tôi cần. Chúng tôi đang cố gắng đặt giao diện dễ sử dụng hơn trên Skype được đưa vào ứng dụng của chúng tôi.Kiểm soát Skype qua API COM Skype4COM.dll

Sự cố của tôi nằm trong việc kiểm soát hoặc vô hiệu hóa cửa sổ Skype nào sẽ sử dụng và không sử dụng. Cửa sổ Skype duy nhất tôi tin rằng tôi cần là cửa sổ hội nghị/điện thoại video Skype. Tôi muốn ẩn và kiểm soát mọi cửa sổ khác mà Skype có thể trình bày. Tôi thậm chí sẽ vô hiệu hóa cửa sổ hộp thoại cuộc gọi đến bật lên khi có cuộc gọi đến, vì chúng tôi sẽ trình bày lời nhắc câu trả lời của riêng mình. Tôi hài lòng với API ngoại trừ quản lý cửa sổ.

Với API, tôi có thể xem cách bật Windows, nhưng tôi không thể tìm ra cách ẩn chúng, thiếu thông báo cửa sổ cho ứng dụng Skype. Tui bỏ lỡ điều gì vậy?

Cảm ơn sự giúp đỡ của bạn, Kenny

Trả lời

6

Poking xung quanh một chút, chúng tôi thấy rằng bạn có thể gửi 'Skype lệnh' qua

skypeobj.SendCommand (Command cmd); 

đó làm việc khá tốt cho hầu hết những gì chúng ta cần. Đây là một reference on the Skype developer site:

Một số mã:

void _SendSkypeCommand (string cmdToSend) 
    { 
     Command cmdSkype = new Command(); 
     cmdSkype.Blocking = true; 
     cmdSkype.Timeout = 2000; 
     cmdSkype.Command = cmdToSend; 
     Trace.WriteLineIf (_TracingDetailed, string.Format ("skype command sent '{0}'", cmdToSend)); 
     _skype.SendCommand (cmdSkype); 
    } 

    void _hideSkypeWindows() 
    { 
     _SendSkypeCommand ("SET SILENT_MODE ON"); 
     _SendSkypeCommand ("SET WINDOWSTATE HIDDEN"); 
    } 
+0

Tôi có vấn đề tương tự. Giải pháp là khá tốt đẹp, nhưng ... có thể nó có thể kiểm soát các cuộc gọi, tin nhắn, vv mà không cần đăng nhập khách hàng? Hoặc 'ẩn tốt hơn' (không có biểu tượng trong khay)? – Saint

1

Thật không may, giao diện không thực sự cung cấp cho bạn kiểm soát các cửa sổ thực tế, chỉ có phương pháp để hiển thị và sửa đổi chúng (thông qua giấy gói).

Như bạn đã nói, bạn sẽ phải nhận được tay cầm của cửa sổ bằng cách nào đó và sau đó gửi một tin nhắn để ẩn nó.

0

Tôi có cùng một vấn đề, và

_SendSkypeCommand ("SET SILENT_MODE ON");

đã bị phá vỡ, như người ta nói về bài đăng này: http://devforum.skype.com/t5/Desktop-API/How-to-keep-hidden-Skype-UI-using-Skype4COM/td-p/12338

Giải pháp của tôi là làm cho skype UI vô hình bằng cách di chuyển cửa sổ của nó ra khỏi vùng hiển thị.

Bây giờ mã:

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] 
    public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle); 
    [DllImport("user32.dll", SetLastError = true)] 
    internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);   
    IntPtr hwnd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "tSkMainForm", null);//find skype window     
    MoveWindow(hwnd, 2300, 2300, 300, 400, true); 
Các vấn đề liên quan