zoukankan      html  css  js  c++  java
  • 虚拟机有QQ消息时宿主机自动弹窗提示

    因为是检测窗口实现的,所以要求设置会话窗口自动弹出,而且看完消息就把QQ消息窗口关掉。。。

    虚拟机端

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from win32gui import *
    import time
    import socket
    
    HOST = '192.168.0.126'#宿主机IP地址
    PORT = 8001
    
    def get_QQ_titles(hwnd, mouse):
        if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd):
            if GetClassName(hwnd) == 'TXGuiFoundation':  # TXGuiFoundation 是所有QQ窗口的类名
                text=GetWindowText(hwnd)
                if text:
                    current_QQ_titles.add(text)
    
    def send_message(): # 通知宿主机
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((HOST, PORT))
        s.send('new_msg')
        data = s.recv(10)
        print data
    
    last_QQ_titles = set() # 上一次所有可见QQ窗口的 title 字符串集合
    current_QQ_titles = set() # 当前所有可见QQ窗口的 title 字符串集合
    last_foreground_window_class_name = '' # 上一个 foreground window 的类名
    while True:
        current_QQ_titles = set()
        EnumWindows(get_QQ_titles, 0) # 遍历当前可见的QQ窗口
        try:
            foreground_window = GetForegroundWindow()
            foreground_window_text = GetWindowText(foreground_window)
            foreground_window_class_name = GetClassName(foreground_window)
        except Exception,e:
            print('catch exception')
        if last_QQ_titles != current_QQ_titles 
          and len(last_QQ_titles) < len(current_QQ_titles) 
            and (last_foreground_window_class_name != foreground_window_class_name 
              or (last_foreground_window_class_name == foreground_window_class_name 
                and foreground_window_text != 'QQ')):
            print 'got new message'
            send_message()
        last_QQ_titles = current_QQ_titles
        last_foreground_window_class_name = foreground_window_class_name
        time.sleep(1)

    宿主机端

     1 #encoding=utf-8
     2 import Tkinter as tk
     3 import socket
     4 
     5 def create_message_dialog():
     6     top = tk.Tk()
     7     top.title("QQ Message")
     8     top.geometry('400x400')
     9     labelHello = tk.Label(top, text = "You've got new QQ messages.")
    10     labelHello.pack()
    11     top.mainloop()
    12 
    13 HOST = '192.168.0.126'
    14 PORT = 8001
    15 
    16 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    17 s.bind((HOST, PORT))
    18 s.listen(1)
    19 
    20 print 'Server start at: %s:%s' %(HOST, PORT)
    21 print 'wait for connection...'
    22 
    23 while True:
    24     conn, addr = s.accept()
    25     print 'Connected by ', addr
    26     data = conn.recv(10)
    27     print data
    28     if data=='new_msg':
    29         create_message_dialog()
    30     conn.send("recv")
    31     conn.close()

    END

    2017.8.17 19:58

  • 相关阅读:
    JS eval()小结
    纯JS的ajax实例
    js特效代码-鼠标样式
    JS typeof与instanceof的区别
    linux下网卡绑定
    KVM+VNC 虚拟机远程管理
    smokeping安装
    Python:字符串中引用外部变量的3种方法
    Python:模块学习——os模块
    Python:模块学习——sys模块
  • 原文地址:https://www.cnblogs.com/maxuewei2/p/7384122.html
Copyright © 2011-2022 走看看