admin管理员组文章数量:1432335
Windows下系统软键盘的程序名是osk.exe
,系统软键盘在有键盘的时候一点用都没有,但是没有键盘的时候想要输入点东西,系统软键盘就至关重要了。
osk.exe
为微软系统自带的虚拟键盘程序,功能与真的键盘差不多.只需要在运行中输入"osk"即可启动虚拟键盘。
Window8开始,Windows开始采用扁平化设计,还有一个系统软键盘叫TabTip.exe
,这个待会再说。先来看看这两个软键盘在Window7和Windows10下显示的差异。上面是osk.exe
,下面是TabTip.exe
Windows7:
Windows10:
osk.exe
osk.exe
位于%SYSTEMROOT%\System32\
下,无论是32位或64位的系统都是位于这个路径下。
64位的系统下的系统命令为什么会在System32
中呢,这个请参考64位windows为什么不把system32改成system64 ?。
那么如何在你的C++程序中调用系统软键盘osk.exe
呢?这里就要提到两个Windows系统API了,ShellExcute
和WinExec
,关于这两个函数的用法可以参考MSDN。
这里说一下使用方法。
WinExec
WinExec("osk.exe", SW_SHOWNORMAL);
就这么简单,这里只给出了程序名,那么WinExec
是如何找到这个程序的呢,下面是这个函数查找路径的顺序(摘自MSDN):
- The directory from which the application loaded.
- The current directory.
- The Windows system directory. The
GetSystemDirectory
function retrieves the path of this directory.- The Windows directory. The
GetWindowsDirectory
function retrieves the path of this directory.- The directories listed in the
PATH
environment variable.
ShellExcute
在VS中,ShellExcute
是ShellExcuteW
的宏定义,因此,使用的时候,字符串需要用宽字符。
ShellExecute(NULL, L"open", L"osk.exe", NULL, NULL, SW_SHOWNORMAL);
需要注意的点
从64位windows为什么不把system32改成system64 ?这个链接中,你应该知道了有SysWOW64这个文件夹,这个文件夹的作用如下:
WoW64 (Windows On Windows64)是一个Windows操作系统的子系统,被设计用来处理许多在32-bit Windows和64-bit Windows之间的不同的问题,使得可以在64-bit Windows中运行32-bit程序。
也就是说32位程序在64位操作系统下运行System32
下的程序,会被自动重定向到%SYSTEMROOT%\SysWOW64
下,在这个目录下搜寻程序,而SysWOW
下没有osk.exe
,于是就会导致失败。
因此,在执行ShellExcute
或WinExec
的时候需要取消这个重定向,在运行完后又恢复这个重定向。
这两个操作,Windows也有对应的API可以使用,Wow64DisableWow64FsRedirection
和Wow64RevertWow64FsRedirection
。具体使用如下:
PVOID OldValue = NULL;
BOOL f = Wow64DisableWow64FsRedirection(&OldValue);
WinExec("osk.exe", SW_SHOWNORMAL);
if (f)
Wow64RevertWow64FsRedirection(OldValue);
TabTip.exe
刚没说TabTip.exe
位于哪个路径下,TabTip.exe
位于C:\Program Files\Common Files\microsoft shared\ink\
,因此可以调用ShellExcute
或WinExec
加上绝对路径名就好了。
版权声明:本文标题:Windows下C++调用系统软键盘及其需要注意的点 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1739669398a2183146.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论