السيطرة على سكايب عبر API Skype4COM.dll COM لها
سؤال
وأنا أعمل مع Skype4COM.dll COM API باستخدام C # ويعمل بشكل جيد جدا لجميع وظائف الاتصالات التي نحتاج إليها. نحن نحاول وضع أسهل للاستخدام واجهة على رأس سكايب التي تخبز في طلبنا.
وبلدي مشكلة تكمن في السيطرة أو تعطيل النوافذ التي Skype إلى استخدام وعدم استخدام. نافذة سكايب الوحيد أعتقد أنني سوف تحتاجه هو نافذة الهاتف / مؤتمرات فيديو سكايب. أود أن إخفاء والسيطرة على كل نافذة أخرى أن سكايب يمكن أن تقدم. حتى أود أن تعطيل نافذة الحوار مكالمة واردة أن الملوثات العضوية الثابتة حتى على المكالمات الواردة، منذ سنقدمها ردنا موجه الخاصة. أنا سعيد مع API باستثناء إدارة النافذة.
ومع API، أستطيع أن أرى كيفية تمكين ويندوز، ولكن أنا لا يمكن أن يبدو لمعرفة كيفية إخفائها، وباختصار من القرصنة رسالة إطارات إلى التطبيق سكايب. أنا شيء مفقود؟
وشكرا لمساعدتكم، كيني
المحلول
وبدس حول قليلا وجدنا أن من الممكن أن ترسل "سكايب أوامر" عبر
skypeobj.SendCommand ( Command cmd );
وهذا يعمل بشكل جيد جدا لمعظم ما نحتاج إليه. هنا هو إشارة على موقع المطور سكايب :
وبعض كود:
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" );
}
نصائح أخرى
ومما يؤسف له، واجهة لا يعطي في الواقع كنت السيطرة على النوافذ الفعلية، طرق فقط لعرض وتعديلها (من خلال مغلفة).
وكما قلت، سيكون لديك للحصول على مؤشر الإطار بطريقة أو بأخرى ومن ثم إرسال رسالة إلى إخفائه.
ولدي نفس المشكلة، و
و_SendSkypeCommand ( "SET SILENT_MODE ON")؛
تم كسر، كما يقال على هذه الوظيفة: <لأ href = "http://devforum.skype.com/t5/Desktop-API/How-to-keep-hidden-Skype-UI-using- Skype4COM / TD-ص / 12338 "يختلط =" نوفولو "> http://devforum.skype.com/t5/Desktop-API/How-to-keep-hidden-Skype-UI-using-Skype4COM/td-p/ 12338
وبلدي الحل هو جعل UI سكايب غير مرئية عن طريق تحريك انها نافذة للخروج من منطقة العرض.
والآن كود:
[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);