从我的Python应用程序可以检测/识别另一个应用程序的窗口?

时间:2018-02-23 09:39:53

标签: python-3.x mouse

我希望能够在屏幕上拖动我的半透明应用程序窗口,并且" drop"当我放手时,它到指针下面的任何一个窗口。此时,我希望我的GUI窗口重新配置自身以与目标窗口一致。使目标窗口从除了我的所有窗口后面出来也是很好的。

好吧,最后,我有一些代码要分享。它主要起作用,但它并不总是抓住整个目标窗口。有时它只抓取一部分。如果您有任何想法,请将它们放在我身上。要激活抓取,我将窗口拖到目标上方的某个位置,将鼠标指针移动到它们重叠的区域中的任何位置,然后键入" w。"输入" w"再次将我的窗口恢复到以前的状态。我花了很长时间来弄明白这一点,因为我是一名初学者。我认为,最终决议变得非常简单明了。但是,我希望能够帮助简化代码。它有一种kludgy的感觉。提前谢谢。

    if (e.key() == Qt.Key_W):
        if (self.makeBaby):
            self.makeBaby = False
            self.setGeometry(self.previousGeometry)
            self.updateStuff()      #> Redraw everything after getting    <#
                                    #> off her. How do you know it's a    <#
                                    #> girl? Her mouth is open.           <#
        else:
            self.makeBaby = True
            Joe = self.geometry()
            self.previousGeometry = Joe
            self.windowHandle = win32gui.WindowFromPoint((QCursor.pos().x(), QCursor.pos().y()))
                                    #> Get my window's handle.            <#
            self.move(self.ws, self.hs)
                                    #> Get out of the way.                <#
            windowHandle = win32gui.WindowFromPoint((QCursor.pos().x(), QCursor.pos().y()))
                                    #> Get the target window's handle.    <#
            windowRect = win32gui.GetWindowRect(windowHandle)
                                    #> Get its geometry.                  <#

            x = windowRect[0]
            y = windowRect[1]
            w = windowRect[2] - x
            h = windowRect[3] - y
            self.move(Joe.x(), Joe.y())
                                    #> Return to the playing field.       <#
            win32gui.SetWindowPos (windowHandle, self.windowHandle, x, y, w, h, win32con.SWP_NOSIZE|win32con.SWP_NOMOVE)
                                    #> Position the target window under   <#
                                    #> my window.                         <#
            self.raise_()           #> This and the next line are         <#
                                    #> necessary. I don't understand why. <#
            self.activateWindow()
            self.setGeometry(x, y, w, h)
                                    #> Match my window's geometry to the  <#
                                    #> target's.                          <#
            self.updateStuff()      #> Give her a new coat of paint.      <#

0 个答案:

没有答案