生活随笔
收集整理的这篇文章主要介绍了
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的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。