在Wpf使用虚拟键盘有基于osk和tabtip,后者只能在win8和win10之后电脑使用,而且两者在wpf中调用时都必须提升为管理员权限,实际应用中还是不方便。

今天介绍的方法是使用第三方库osklib,可以在win10 中不需要管理员权限使用屏幕键盘,该库支持.net framework4以上版本,.netcore3.1以及.net5以上版本,兼容wpf和winform,使用起来也很方便。

首先使用vs创建一个wpf项目(这里我用的是.net5),为项目添加osklib依赖

打开包管理器,搜索 Osklib.Wpf或者在命令行输入命令安装依赖

dotnet add package Osklib.Wpf
打开MainWindow.xaml,添加一个Textbox控件,同时为Textbox添加GetFocus事件处理方法

MainWindow.xaml

<Window ...>
<Grid>
<TextBox Width="120" Margin="297,125,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text=""
TextWrapping="Wrap" GotFocus="TextBox_GotFocus"/>

</Grid>
</Window>
MainWindow.xaml.cs

using System;
using System.Windows;

namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
try
{
Osklib.OnScreenKeyboard.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
编译运行,点击文本框输入,弹出屏幕键盘效果如下:

官方示例中的OnScreenKeyboardSettings.EnableForTextBoxes = true测试中没有效果,可能是操作系统版本问题,直接调用Osklib.OnScreenKeyboard.Show();是没有问题

这个是触发单个Textbox控件的GotFocus来弹出屏幕按键,如果要全局控制所有Textbox输入来弹框,方法有很多,这里介绍最简单方法,因为GotFocus是路由事件,只要监听MainWindow的GotFocus事件,就可以监听到所有Textbox的GotFocus事件,但需要在事件里加上判断语句如下

private void Window_GotFocus(object sender, RoutedEventArgs e)
{
// 不是Textbox不弹出屏幕键盘
if (!(e.OriginalSource is TextBox))
return;
try
{
Osklib.OnScreenKeyboard.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
如图,只有Textbox1和Textbox2能触发屏幕键盘,而PasswordBox不会触发屏幕键盘

对于非路由事件,不能用这种方法

最后附上osklib库地址:https://github.com/AlexeiScherbakov/osklib

————————————————
版权声明:本文为CSDN博主「沝林」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/duanzilin/article/details/121873637

Wpf虚拟屏幕键盘的更多相关文章

  1. WPF 虚拟键盘

    之前做了一款WPF虚拟键盘,调用Win32的API,可以模拟键盘事件. 现将代码分享如下: 按键布局如下: <Button Name="> <StackPanel Orie ...

  2. WPF开发经验-实现Win10虚拟触摸键盘

    一 引入 项目有个需求,需要实现纯触控操作进行键盘输入.项目部署在Win10系统上,考虑有两种方案来实现. 通过调用Win10自带的触摸键盘来实现: 通过WPF实现一个触摸键盘来实现: 二 调用Win ...

  3. C# 实现屏幕键盘 (ScreenKeyboard)

    原文地址:http://www.cnblogs.com/youzai/archive/2008/05/19/1202732.html 要实现一个屏幕键盘,需要监听所有键盘事件,无论窗体是否被激活.因此 ...

  4. 使用JS启动本地应用程序、屏幕键盘

    问题描述:     现在希望在Web端使用JS调用本地应用程序 问题解决:   (1)使用JS启动本地应用程序 使用上述代码重点是创建了一个ActiveXObject的对象     参考说明:     ...

  5. WIN7 启动屏幕键盘

    点击“开始”或按快捷键“WIN”,输入“osk”后,按“回车键”确定,就可以启动屏幕键盘. 屏幕键盘 另一种方法是进入“控制面板”: 再进入“轻松访问中心”: 选择“启动屏幕键盘”,这样也可以启动屏幕 ...

  6. Lubuntu安装屏幕键盘onboard,使触摸屏可以登录和输入

    Lubuntu18.04 LTS桌面使用 LightDM 显示管理器,默认已经安装了GTK+ 欢迎界面 需要的话可以下列命令安装使用 $ sudo apt-get install lightdm-gt ...

  7. WPF 模拟UI 键盘录入

    原文:WPF 模拟UI 键盘录入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/1835 ...

  8. 【WPF】如何使用wpf实现屏幕最前端的绘图?

    原文:[WPF]如何使用wpf实现屏幕最前端的绘图? 引言 在知乎上面看到如何使用wpf实现屏幕最前端的绘图? 这么一个问题,觉得全屏弹幕很有趣,所以把它实现了. 实现 界面设置很简单,Window界 ...

  9. WPF之路-键盘与鼠标事件 - 简书

    原文:WPF之路-键盘与鼠标事件 - 简书 键盘事件 事件类型分为以下几个类型 生命周期事件:在元素加载与卸载的时候发生 鼠标事件:鼠标动作 键盘事件:键盘动作 手写笔事件:适用于win7以上的系统 ...

  10. Android StatusBarUtil:设置Android系统下方虚拟键键盘透明度

     Android StatusBarUtil:设置Android系统下方虚拟键键盘透明度 Android StatusBarUtil是github上的一个开源项目,主页:https://githu ...

随机推荐

  1. .NET Emit 入门教程:第六部分:IL 指令:8:详解 ILGenerator 指令方法:类型转换指令

    前言: 经过前面几篇的学习,我们了解到指令的大概分类,如: 参数加载指令,该加载指令以 Ld 开头,将参数加载到栈中,以便于后续执行操作命令. 参数存储指令,其指令以 St 开头,将栈中的数据,存储到 ...

  2. sql 语句系列(两个日期之间)[八百章之第十七章]

    前言 进入了日期章了. 年月日加减法 分别对原有的日期进行加减法. sql server select DATEADD(DAY,-5,HIREDATE) as hd_mimus_5D, DATEADD ...

  3. RestfulApi 学习笔记——父子资源(四)

    前言 该系列前文提及到,要体现出资源的一个结构,那么如何体现出结构呢?比如说获取emproyee,应该写/api/companies/1/emproyees,这样可以体现其结构性. 那么这样改如何设置 ...

  4. 关于伺服刹车/急停/前后设备信号对接/PLC输入输出模块的公共端介绍

    一.伺服刹车 关键词:急停,急停中间继电器.刹车中间继电器,刹车使能 正文: 通常情况不用硬件为主导而用程序来主导控制,多场景应用方便修改且安全可靠. 伺服刹车硬件,一般是24v电源给进去,就会释放刹 ...

  5. 通过ORPO技术微调 llama3大模型(Fine-tune Llama 3 with ORPO)

    1f45bd1e8577af66a05f5e3fadb0b29 通过ORPO对llama进行微调 前言 ORPO是一种新颖的微调技术,它将传统的监督微调和偏好对齐阶段整合到一个过程中.这减少了训练所需 ...

  6. 第八課-Channel Study For Caller Custom JAR Lib

    1.下载 apache-maven 推荐3.6.3版本:https://maven.apache.org/download.cgi 设置系统环境变量:PATH 装好后在命令行验证:mvn -v Mav ...

  7. SQL 开发任务超 50% !滴滴实时计算的演进与优化

    摘要:Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算.可部署在各种集群环境,对各种大小的数据规模进行快速计算.滴滴基于 Apache Flink 做了大 ...

  8. Flink 助力美团数仓增量生产

    简介: 本文由美团研究员.实时计算负责人鞠大升分享,主要介绍 Flink 助力美团数仓增量生产的应用实践.内容包括:1.数仓增量生产:2.流式数据集成:3.流式数据处理:4.流式 OLAP 应用:5. ...

  9. 使用率激增 250%,这份报告再次将 Serverless 推向幕前

    简介: 本文是对 Datadog 最新的一份 Serverless 报告的解读,欢迎大家留言讨论. 本文是对 Datadog 最新的一份 Serverless 报告的解读,欢迎大家留言讨论.​ 每项新 ...

  10. 内含干货PPT下载|一站式数据管理DMS及最新解决方案发布

    ​简介: 今天主要给大家介绍一站式数据管理平台DMS以及解决方案的发布.议题包含企业数据管理当前的一些痛,DMS一站式数据管理平台以及其核心技术,实时数仓解决方案以及相应的应用实践. "数聚 ...