2009-03-09 4 views
6

Je travaille avec le Skype4COM.dll COM API en utilisant C# et il fonctionne très bien pour toutes les fonctionnalités de communication dont nous avons besoin. Nous essayons de mettre une interface plus facile à utiliser sur Skype qui est intégrée dans notre application. Mon problème réside dans le contrôle ou la désactivation des fenêtres Skype à utiliser et à ne pas utiliser. La seule fenêtre Skype dont je pense avoir besoin est le visiophone Skype/la fenêtre de conférence. Je voudrais cacher et contrôler toutes les autres fenêtres que Skype peut présenter. Je voudrais même désactiver la fenêtre de dialogue d'appel entrant qui apparaît sur les appels entrants, puisque nous présenterons notre propre invite de réponse. Je suis content de l'API sauf la gestion de fenêtres.Contrôle de Skype via son API COM Skype4COM.dll

Avec l'API, je peux voir comment activer Windows, mais je n'arrive pas à comprendre comment les cacher, à moins de pirater un message Windows à l'application Skype. Est-ce que je manque quelque chose?

Merci pour votre aide, Kenny

Répondre

6

farfouillé un peu nous avons constaté que vous pouvez envoyer Skype commandes 'via

skypeobj.SendCommand (Command cmd); 

Cela fonctionne assez bien pour la plupart de ce que nous avons besoin. Voici un reference on the Skype developer site:

Certains code:

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

J'ai le même problème. La solution est plutôt sympa, mais ... peut-être est-il possible de contrôler les appels, les messages, etc. sans client connecté? Ou mieux caché (sans icône dans le bac)? – Saint

1

Malheureusement, l'interface ne vous contrôlez donne pas vraiment sur les fenêtres réelles, seules les méthodes pour afficher et les modifier (par les enveloppes).

Comme vous l'avez dit, vous devrez obtenir le handle de la fenêtre d'une manière ou d'une autre et ensuite envoyer un message pour le cacher.

0

J'ai même problème, et le

_SendSkypeCommand ("SET silent_mode ON");

a été brisé, comme il est dit sur ce post: http://devforum.skype.com/t5/Desktop-API/How-to-keep-hidden-Skype-UI-using-Skype4COM/td-p/12338

Ma solution est de rendre l'interface utilisateur skype invisible en le déplaçant de fenêtre hors de la zone d'affichage.

par code:

[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); 
Questions connexes