I'm working with the Skype4COM.dll COM API using C# and it works very well for all of the communication functionality we need. We are trying to put an easier to use interface on top of Skype that is baked into our application.
My trouble lies in controlling or disabling which Skype windows to use and not use. The only Skype window I believe I'll need is the Skype video phone/conference window. I would like to hide and control every other window that Skype can present. I would even like to disable the incoming call dialog window that pops up on incoming calls, since we'll be presenting our own answer prompt. I'm happy with the API except window management.
With the API, I can see how to enable Windows, but I can't seem to figure out how to hide them, short of hacking a windows message to the Skype app. Am I missing something?
Thanks for your assistance, Kenny
Poking around a bit we found that you can send 'Skype Commands' via
skypeobj.SendCommand ( Command cmd );
That works pretty well for most of what we need. Here is a reference on the Skype developer site:
Some 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" );
}
Unfortunately, the interface doesn't actually give you control over the actual windows, only methods to display and modify them (through wrappers).
As you said, you will have to get the handle of the window somehow and then send a message to hide it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With