Designed for use with “out-of-browser” instances of Silverlight, it uses COM automation to expose features specific to Windows 7. The major feature areas include Message Interception, Sensor API, H.264 video encoding, taskbar extensions, Speech API, and access to portable devices.
- Message Interception: Allow applications to intercept Window messages sent to the containing window
- Sensor API: Provide full access to the Windows 7 Sensor API.
- Local Encoding: Allow applications to capture webcam audio/video input into a local H.264/AAC-LC encoded media file. Also allow capturing of application user interface activity as video with audio.
- Taskbar Access: Allow applications to integrate various Windows 7 taskbar features like taskbar button overlays, jump lists, taskbar button progress notifications etc.
- Speech API: Allow applications to use Windows 7 Speech-to-Text and Text-to-Speech capabilities
- Portable Devices: Allow applications to enumerate content on connected devices like music players, digital cameras etc.
According to Microsoft “a large majority of the Windows platform API’s today cannot be accessed from Silverlight this way. Some do support COM, but do not support automation; while the others are only accessible through a native language like C or C++.” While this will be less of a problem with Silverlight 5, which will get p/invoke capabilities, most .NET developers strongly dislike making unmanaged calls. In the meantime Native Extensions 2.0 for Microsoft Silverlight provides the necessary wrappers.
Native Extensions need to be installed on the client machine. This can be ahead of time or from within the application using Installer.CheckNESLInstalled and Installer.InstallNESL. The downside of the latter is that you have to include the NESLSetup.msi package in your application.