客户硬件设备:windows触屏+触屏笔+鼠标
问题描述:收到外部客户的反馈,使用软件时会蓝屏。但是没有找到重现的步骤,不清楚是硬件还是软件导致的且这个问题遇到的客户越来越多。
需求一:windows 全局触摸手势,使用指定手势时,软件需要进行一些不同的设置
需求二:如果有多屏的情况,如果在主屏触摸输入需要把触摸点偏移到副屏。抽象点来说就是,主屏的触摸输入点偏移到副屏的对应坐标。(场景:副屏打开一个windows 自带的画图工具,用手在主屏能操作副屏的画图软件)
使用RegisterPointerInputTarget对系统输入的点截取,然后进行判断手势和是否需要偏移左边的操作。然后使用InjectTouchInput模拟一个触摸到指定的坐标点。
经过一周多排查和问题重现,蓝屏的必现场景如下:
1:使用笔先操作一下屏幕(随便点下什么都就行)
2:启动触摸监听程序(这个程序的主要是RegisterPointerInputTarget截取输入的坐标点,然后在使用了InjectTouchInput模拟了一个触摸点。),然后在笔操作后一分钟内,使用手指在电脑的屏幕底部外侧,向上方快速反复滑动。必现蓝屏
* 这里注意:在笔操1分钟后就不会重现这个问题,不确定是不是windows 系统使用笔操作后1分钟内有什么操作,使用InjectTouchInput会导致蓝屏。如果有知道的朋友,给我普及下。
3:用windbg蓝屏日志工具分析了蓝屏日志,确定是模拟触摸出现了问题。
需求一:对全局手势触摸,更换了新的技术方案,不使用RegisterPointerInputTarget和InjectTouchInput。其实想做一个全局手势触摸监听软件,无非就是想得到多点触摸的坐标值。新的技术方案,改用了GetRawInputDeviceInfo+HidP_GetScaledUsageValue来获取触摸设备输入的坐标点。
需求二:只能保持原有方案。未能解决。不过这个功能使用的人数不多,只能忍忍。