热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Python编写的spy程序运行时总是意外退出

网上下载一段代码pythonspy++,代码不全,运行不稳点,运行总是退出,可能程序结构有问题,高手帮我改改,

网上下载一段代码python spy++,代码不全,运行不稳点,运行总是退出,可能程序结构有问题,高手帮我改改,



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import sys

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QTextEdit, QTextBrowser, QHBoxLayout, QVBoxLayout

from PyQt5 import QtCore, QtWidgets, QtWidgets

import win32gui,win32con,win32api

from win32gui import *

from dlx import *



class SpyLabel(QtWidgets.QLabel):

    def __init__(self, parent = None):

        QtWidgets.QLabel.__init__(self, parent)

        self.parent = parent

        self.spying = False

        self.rectanglePen = win32gui.CreatePen(win32con.PS_SOLID, 3, win32api.RGB(255, 0, 0))

        self.prevWindow = None

        self.setCursor(QtCore.Qt.SizeAllCursor)



    def mouseMoveEvent(self, event):

        if self.spying:

            curX, curY = win32gui.GetCursorPos()

            hwnd = win32gui.WindowFromPoint((curX, curY))

   

            #if self.checkWindowValidity(hwnd):

            if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd):

                if self.prevWindow:

                    self.refreshWindow(self.prevWindow)

                self.prevWindow = hwnd

                self.highlightWindow(hwnd)

                self.displayWindowInformation(hwnd)

   

    def mouseReleaseEvent(self, event):

        if self.spying:

            if self.prevWindow:

                self.refreshWindow(self.prevWindow)

            win32gui.ReleaseCapture()

            self.spying = False

    def mousePressEvent(self,event):

        if event.button() == QtCore.Qt.LeftButton:

            self.spying = True

   

    def highlightWindow(self, hwnd):

        left, top, right, bottom = win32gui.GetWindowRect(hwnd)

        windowDc = win32gui.GetWindowDC(hwnd)

        if windowDc:

            prevPen = win32gui.SelectObject(windowDc, self.rectanglePen)

            prevBrush = win32gui.SelectObject(windowDc, win32gui.GetStockObject(win32con.HOLLOW_BRUSH))

   

            win32gui.Rectangle(windowDc, 0, 0, right - left, bottom - top)

            win32gui.SelectObject(windowDc, prevPen)

            win32gui.SelectObject(windowDc, prevBrush)

            win32gui.ReleaseDC(hwnd, windowDc)

   

    def refreshWindow(self, hwnd):

        win32gui.InvalidateRect(hwnd, None, True)

        win32gui.UpdateWindow(hwnd)

        win32gui.RedrawWindow(hwnd,

            None,

            None,  

            win32con.RDW_FRAME|

                win32con.RDW_INVALIDATE|

                win32con.RDW_UPDATENOW|

                win32con.RDW_ALLCHILDREN)

   

    def displayWindowInformation(self, hwnd):

        className = win32gui.GetClassName(hwnd)

        buf_size = 1 + win32gui.SendMessage(hwnd, win32con.WM_GETTEXTLENGTH, 0, 0)

        buffer = win32gui.PyMakeBuffer(buf_size)

        win32gui.SendMessage(hwnd, win32con.WM_GETTEXT, buf_size, buffer)

       

        windowText = buffer[:buf_size]    

        try:

            windowText = unicode(windowText, 'gbk')

        except:

            pass

        windowText=win32gui.GetWindowText(hwnd)

        message = ['Handle:\t' + str(hwnd),

                   'Class Name:\t' + className,

                   'Window Text:\t' + windowText,

                   ]

        #self.output('\r\n'.join(message))

        print(message)

        self.parent.text_browser.setText('\r\n'.join(message))  # 2



class pyspy(QWidget):

    def __init__(self):

        super(pyspy, self).__init__()

        self.browser_label = SpyLabel(self)

        self.text_browser = QTextBrowser(self)

 

        self.browser_v_layout = QVBoxLayout()

        self.all_h_layout = QHBoxLayout()

 

        self.layout_init()

 

    def layout_init(self):

 

        self.browser_v_layout.addWidget(self.browser_label)

        self.browser_v_layout.addWidget(self.text_browser)

 

        self.all_h_layout.addLayout(self.browser_v_layout)

 

        self.setLayout(self.all_h_layout)

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = pyspy()

    window.setGeometry(1200, 600, 300, 300)

    window.show()

    sys.exit(app.exec_())



   



推荐阅读
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 当我在doWork方法中运行代码时,通过单击button1,进度条按预期工作.但是,当我从其他方法(即btn2,btn3)将列表传递给doWork方法时,进度条在启动后会跳转到10 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • python3 logging
    python3logginghttps:docs.python.org3.5librarylogging.html,先3.5是因为我当前的python版本是3.5之所 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • [翻译]PyCairo指南裁剪和masking
    裁剪和masking在PyCairo指南的这个部分,我么将讨论裁剪和masking操作。裁剪裁剪就是将图形的绘制限定在一定的区域内。这样做有一些效率的因素࿰ ... [详细]
  • 使用Flutternewintegration_test进行示例集成测试?回答首先在dev下的p ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了如何使用elementui分页组件进行分页功能的改写,只需一行代码即可调用。通过封装分页组件,避免在每个页面都写跳转请求的重复代码。详细的代码示例和使用方法在正文中给出。 ... [详细]
  • android:EditText属性去边框EditText继承关系:View--TextView--EditTextEditText的属性很多,这里介绍几个:android:h ... [详细]
author-avatar
傲慢的寒风呼啸_539
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有