I would strongly recommend you refrain from doing it at the level of OS. Your user knows better what language to use at every moment. Moreover, nobody should configure system options like a set of input languages and keyboard shortcut for switching them. It does not have to be Alt+Shift. Only the user or a system administrator trusted by a user should be allowed to do it. Simple security issues and simple common sense dictate it.
However, if you are so stubborn to ignore this advice, you can try P/Invoked Windows API
SendInput
, see
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310%28v=vs.85%29.aspx[
^]. You can do it via WMI as well.
Don't do it!
Instead, you can select the input language just for your application; this is much better, but I would not recommend it, too.
With Forms, you can switch input language, but only for your application, which might be much better for you:
Windows.Forms.InputLanguage.CurrentInputLanguage = someLanguage;
See
http://msdn.microsoft.com/en-us/library/system.windows.forms.inputlanguage.aspx[
^].
With WPF, you can use the class
System.Windows.Input.InputLanguageManager
for the same purpose. See
http://msdn.microsoft.com/en-us/library/system.windows.input.inputlanguagemanager.aspx[
^].
—SA