我如何告诉Windows不要在平板笔活动上进行无助的预处理?

我正在Python 2.6中编程,定位了运行Windows 7的平板电脑(尽管我希望我的程序在XP上使用智能交互式白板上的XP修改很少,并且在Linux/Mac上使用鼠标用户)。我编写了一个程序,该程序将挂钩的Windows鼠标事件,WM_Mousemove等挂钩,并在画布上写入。

问题在于,鼠标消息在到达我的应用程序之前就被摆弄了。我发现,如果我在笔触之间进行长时间的笔触和暂停,那么鼠标消息将正确发送。但是,如果我做了几次快速的短程,那么有些事情正在做无助的预处理。具体来说,如果我的下跌大约10像素,然后再使下跌大约5个像素,则在第一个像素的右侧进行了大约5个像素,则第二个WM_Mousedown报告说它来自与第一个的位置完全相同的位置。

这看起来像是某种预处理,也许是因为幼稚的应用程序不会对双击。但是对于我的应用,我想要对快速手势的非常忠实的回应,这是无益的。

我找到了对MicrosoftTableTpenServiceProperty Atom和cs_dblclks窗口样式的引用,我将它们都用以下python代码关闭:

hwnd = self.GetHandle()  
tablet_atom = "MicrosoftTabletPenServiceProperty" 
atom_ID = windll.kernel32.GlobalAddAtomA(tablet_atom)  
windll.user32.SetPropA(hwnd,tablet_atom,1)  
currentstyle = windll.user32.GetClassLongA(hwnd, win32con.GCL_STYLE)  
windll.user32.SetClassLongA(hwnd, win32con.GCL_STYLE, currentstyle & ~win32con.CS_DBLCLKS) 

但这没有效果。

我尝试使用SetWindowShookex为鼠标驱动程序编写一个低级钩子,但它不起作用 - 显然,鼠标消息甚至在将它们发送到我的低级Windows挂钩之前就已经预处理了。

我将非常感谢有关如何关闭此预处理的建议。我不想切换到realtimestylus-首先,因为它在Windows XP加上智能互动白板上不起作用,其次,因为我看不到Cpython中的Realtimestylus,所以我需要切换到Ironpython,然后再切换到Ironpython,然后我的代码将不再在Linux/Mac上运行。

达蒙。

有帮助吗?

解决方案

对于原始鼠标消息,您可以使用 WM_INPUT 在XP和后来。七个添加了一些特定的东西: WM_GESTUREWM_TOUCH

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top