Friday, August 24, 2018

Open On Screen Keyboard In C

Open On Screen Keyboard In C



There are some of the ways to on-screen keyboard:

1 - Process.Start("C:WindowsSystem32OSK.EXE")

2 - System.Diagnostics.Process.Start("osk");

3 -Process[] pArr = Process.GetProcesses();

   foreach (Process p in pArr)

   {

            if (p.ProcessName == "osk" || p.ProcessName == "msswchx")

              p.Kill();

   }

ProcessStartInfo pInfo = new ProcessStartInfo(((Environment.GetFolderPath(Environment.SpecialFolder.System) + @"osk.exe")));              

                Process pr = Process.Start(pInfo);

               System.Threading.Thread.Sleep(100);

                pr.WaitForInputIdle();
4-   string windir = Environment.GetEnvironmentVariable("WINDIR");
            string osk = null;
            if (osk == null)
            {
                osk = Path.Combine(Path.Combine(windir, "system32"), "osk.exe");
                if (!File.Exists(osk))
                {
                    osk = null;
                }
            }
            if (osk == null)
                osk = "osk.exe";

            Process.Start(osk);

but when you have 32-bit built application and you want to open osk on 64-bit Windows 7. It will give error "Could not start On-Screen keyboard".  Simply you have to build your applications every module with Any CPU Setting, then this issue will be resolved immediately.

Windows wont allow you to call a 64-bit OSK.exe from your program. Anyone can start osk.exe from Run, but call it from within a 32-bit application wont work in 64-bit Windows.

Ideally Microsoft should include a 32-bit version of OSK.exe in the system folder and allow us to use it, if being called from a 32-bit application.
Another work around is to get your hands on 32-bit Windows XP and pull osk.exe from it, bundle this with you app. When you call the on-screen keyboard, check if OS is 64-bit, if it is call the Windows XP osk.exe, works OK. Although not ideal.


visit link download