2009-03-09 2 views
6

私はSkype4COM.dll COM APIとC#を使用しています。これは、必要なすべての通信機能に対して非常にうまく機能します。私たちは、アプリケーションに焼き付けられたSkypeの上に、より使いやすいインターフェースを置こうとしています。Skype4COM.dll COM APIを使用してSkypeを制御する

私の問題は、使用するSkypeウィンドウを制御したり無効にしたりすることにあります。私が必要と思うSkypeの唯一のウィンドウは、Skypeビデオの電話/会議ウィンドウです。 Skypeが提示できる他のすべてのウィンドウを非表示にして制御したいと思います。着信時にポップアップする着信コールダイアログウィンドウを無効にしたいと思っています。これは、私たち自身の回答プロンプトを表示するからです。私はウィンドウ管理以外のAPIに満足しています。

APIを使用すると、Windowsを有効にする方法がわかりますが、WindowsのメッセージをSkypeアプリにハッキングしないように、どのように非表示にするかわかりません。何か不足していますか?あなたの援助のための

おかげで、ケニー

答えて

6

我々はあなたが私たちが必要なもののほとんどのためにかなりうまく機能

skypeobj.SendCommand (Command cmd); 

「を介してスカイプコマンド」を送ることができることを見出したビットチャンスをうかがっ。ここでreference on the Skype developer site次のとおりです。

いくつかのコードは:

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

私は同様の問題を抱えています。解決策はかなり良いですが、...ログされたクライアントなしで呼び出し、メッセージなどを制御することは可能でしょうか?または(トレイのアイコンなしで)「より隠れた」? – Saint

1

残念ながら、インタフェースは実際に、あなたが実際の窓を制御(ラッパー経由)それらを表示および変更するための唯一の方法を与えるものではありません。

あなたが言ったように、何らかの形でウィンドウのハンドルを取得し、それを隠すためのメッセージを送信する必要があります。

0

私は同じ問題、および

_SendSkypeCommand( "SET SILENT_MODE ON")を有します。それがこのポストに言われているよう

は、破損している:http://devforum.skype.com/t5/Desktop-API/How-to-keep-hidden-Skype-UI-using-Skype4COM/td-p/12338

私のソリューションは、表示領域の外にそれのウィンドウを移動することにより、Skypeの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); 
関連する問題