欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > C# >内容正文

C#

C# win10系统调用不了系统自带的软键盘osk.exe

发布时间:2024/1/23 C# 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C# win10系统调用不了系统自带的软键盘osk.exe 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

  • 有的win10系统可以调用windows自带的软键盘osk,有的win10系统调用不了。
  • 原因是win10系统是64位的,但是osk.exe是32位的软件。。。。
  • 使用下面的代码,就可以实现调用osk…亲测有效。。。。。
public class StartKeyBoard{public static bool isShowNumBoard = false;[DllImport("kernel32.dll", SetLastError = true)]public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);[DllImport("kernel32.dll", SetLastError = true)]public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);public static void StartKeyBoardFun(){//判断软键盘是否进程是否已经存在,如果不存在进行调用Process[] pro = Process.GetProcessesByName("osk");//说明已经存在,不再进行调用if (pro != null && pro.Length > 0)return;IntPtr ptr = new IntPtr();bool isWow64FsRedirectionDisabled = Wow64DisableWow64FsRedirection(ref ptr);if (isWow64FsRedirectionDisabled){Process.Start(@"C:\WINDOWS\system32\osk.exe");bool isWow64FsRedirectionReverted = Wow64RevertWow64FsRedirection(ptr);}}

  • 有的软件既要在win10系统上运行,又要在win7系统上运行
  • 使用上面的调用方法,win7系统调用可能会有问题,因此win7的时候用Tabtip软键盘比较可靠
  • 所以就判断windows系统的版本,使用下面的这段代码
public class StartKeyBoard{public static bool isShowNumBoard = false;[DllImport("kernel32.dll", SetLastError = true)]public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);[DllImport("kernel32.dll", SetLastError = true)]public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);public static void StartKeyBoardFun(){string path = "C:/Program Files/Common Files/microsoft shared/ink/TabTip.exe";if (File.Exists(path)){Process p = Process.Start(path);}else{//判断软键盘是否进程是否已经存在,如果不存在进行调用Process[] pro = Process.GetProcessesByName("osk");//说明已经存在,不再进行调用if (pro != null && pro.Length > 0)return;IntPtr ptr = new IntPtr();bool isWow64FsRedirectionDisabled = Wow64DisableWow64FsRedirection(ref ptr);if (isWow64FsRedirectionDisabled){Process.Start(@"C:\WINDOWS\system32\osk.exe");bool isWow64FsRedirectionReverted = Wow64RevertWow64FsRedirection(ptr);}}}}

总结

以上是生活随笔为你收集整理的C# win10系统调用不了系统自带的软键盘osk.exe的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。