有没有办法检测何时使用 python/pywin32 将不属于我的应用程序的窗口拖动到窗口中?我想设置它,以便当我拖动一个标题与桌面边缘附近的模式匹配的窗口时,它会在松开鼠标时捕捉到边缘。每当释放鼠标时,我可以编写代码以将具有该标题的所有窗口捕捉到桌面,但我只想移动正在拖动的特定窗口。
1481 次
2 回答
2
到目前为止,我看到的唯一可能的解决方案是使用SetWindowsHookEx
. Pywin32 没有这个接口,所以我想我必须做这样的事情:
- 编写一个 C 扩展模块。它有一个函数
setCallback
,当拖动事件发生时需要调用一个 python 函数。 - 编写一个包含实际挂钩到 Windows 的 C DLL。这个 DLL 必须以某种方式调用当前设置的 python 函数。
我不知道如何做这些,或者如果它是正确的,虽然..
于 2010-09-21T16:19:51.923 回答
2
pyHook
似乎已经完成了一些必要的工作,因为它挂钩了键盘和鼠标事件。我可能会做的是不断记录我关心的所有窗户,以及它们的位置。然后,在鼠标抬起时,我会检测是否有任何窗口移动,如果是这样,并且它靠近鼠标松开的位置,在标题栏上,我会假设它被拖到那里并捕捉它。挂钩代码如下。
import pyHook
def mouseUp(event):
if event.Injected: return True
print "Mouse went up"
return True
hookManager = pyHook.HookManager()
hookManager.MouseLeftUp = mouseUp
hookManager.HookMouse()
您还需要一个主循环,因为我已经在使用它gtk
,或者您可以这样做:
import pythoncom
pythoncom.PumpMessages()
于 2010-09-23T19:47:11.653 回答