One of the strong features of Windows 8 is the integration of apps with the Windows 8 OS and also the ability for applications to integrate with other applications. A scenario that can be useful for many applications is to call someone directly using skype from within your application. By using Protocol extensions this is really easy on Windows 8.
Unfortunately there is no documentation from Skype on this subject yet so that’s why I’m writing this blogpost to explain how you can launch Skype from your application. The code is actually really simple. Skype has registered several protocol extensions (can be found in the AppxManifest.xml file of the skype app) and the only thing you’ll have to know is what parameters to add to this protocol to launch a specific task.
What i did to see which protocol extensions Skype has i opened up the directory of the Skype Windows Store app (program files\WindowsApps) and looked for the AppxManifest.xml file. when you open the file look for Extensions element and in there should be the protocols that the application is bound to.
1: <Extensions>
2: <Extension Category="windows.protocol">
3: <Protocol Name="skype"/>
4: </Extension>
5: <Extension Category="windows.protocol">
6: <Protocol Name="tel"/>
7: </Extension>
8: <Extension Category="windows.protocol">
9: <Protocol Name="sms"/>
10: </Extension>
11: <Extension Category="windows.protocol">
12: <Protocol Name="message-skype-com"/>
13: </Extension>
14: <Extension Category="windows.protocol">
15: <Protocol Name="message-messenger"/>
16: </Extension>
17: <Extension Category="windows.protocol">
18: <Protocol Name="audiocall-messenger"/>
19: </Extension>
20: <Extension Category="windows.protocol">
21: <Protocol Name="videocall-messenger"/>
22: </Extension>
23: <Extension Category="windows.protocol">
24: <Protocol Name="audiocall-skype-com"/>
25: </Extension>
26: <Extension Category="windows.protocol">
27: <Protocol Name="videocall-skype-com"/>
28: </Extension>
As you can see Skype has many protocols to launch the application, all for specific tasks. you can use tel or sms as generic protocols so people can choose what kind of app they use for calling or texting or use the more specific protocols especially made for skype: skype, message-skype-com, audiocall-skype-com etc.
Launching Skype and starting with a specific task is really easy. On he URL just add the phone number or skype id after the protocol name to launch the app and directly start a voice call or chat message.
In C# you can just create a new URI containing the protocol + username for example: message-skype-com:UserName. This will launch skype and will automatically start a chat session with the user “UserName”
1: var chatTo = new Uri("message-skype-com:" + UserNameTextBox.Text);
2: await Windows.System.Launcher.LaunchUriAsync(chatTo);
When you’ve created the URL just call Windows.System.Launcher.LaunchUriAsync and pass in the URL and you’re done. it doesn’t get easier than this.
For your convenience I’ve created a sample project that can be downloaded from my SkyDrive here: http://sdrv.ms/ZRcwSQ
The sample projects launches Skype on different ways, starting Audio calls, video calls etc.
As you could see the code itself is peanuts, just knowing what to call is the trick. i found out which parameters to pass to Skype by trial and error. Luckily passing in the skype username or phone number was one of the first things i tried.
I wish that there would be some kind of list of all applications that can be launched by using app to app communications but unfortunately
Happy coding!
Geert van der Cruijsen








