代码运行后,可以实时监视用户计算机桌面上拥有焦点的窗口,如果焦点有切换就会给出提示。

from ctypes import *

from time import sleep

from datetime import datetime

#方便调用Windows底层API函数

user32 = windll.user32

kernel32 = windll.kernel32

psapi = windll.psapi

#实时查看当前窗口

def getProcessInfo():

global windows

#获取当前位于桌面最顶端的窗口句柄

hwnd = user32.GetForegroundWindow()

pid = c_ulong(0)

#获取进程ID

user32.GetWindowThreadProcessId(hwnd, byref(pid))

processId = str(pid.value)

#获取可执行文件名称

executable = create_string_buffer(512)

h_process = kernel32.OpenProcess(0x400|0x10, False, pid)

psapi.GetModuleBaseNameA(h_process, None, byref(executable), 512)

#获取窗口标题

windowTitle = create_string_buffer(512)

user32.GetWindowTextA(hwnd, byref(windowTitle), 512)

#关闭句柄

kernel32.CloseHandle(hwnd)

kernel32.CloseHandle(h_process)

#更新最近两个窗口的信息

windows.pop(0)

windows.append([executable.value.decode('gbk'),windowTitle.value.decode('gbk')])

def main():

global windows

windows = [None, None]

while True:

getProcessInfo()

#如果用户切换窗口则进行提示

if windows[0] != windows[1]:

print('='*30)

print(str(datetime.now())[:19],windows[0],'==>',windows[1])

sleep(0.2)

if __name__ == '__main__':

main()

部分运行结果如下:

2016-08-14 09:12:52 ['Explorer.EXE', ''] ==> ['pythonw.exe', 'focusSwitch.py - C:/Python35/focusSwitch.py (3.5.1)']

==============================

2016-08-14 09:12:56 ['pythonw.exe', 'focusSwitch.py - C:/Python35/focusSwitch.py (3.5.1)'] ==> ['QQBrowser.exe', '微信公众平台']

==============================

2016-08-14 09:13:11 ['QQBrowser.exe', '微信公众平台'] ==> ['Explorer.EXE', '']

==============================

2016-08-14 09:13:12 ['Explorer.EXE', ''] ==> ['pythonw.exe', '*Python 3.5.1 Shell*']

==============================

2016-08-14 09:13:22 ['pythonw.exe', '*Python 3.5.1 Shell*'] ==> ['Explorer.EXE', '']

==============================

2016-08-14 09:13:32 ['Explorer.EXE', ''] ==> ['pythonw.exe', '*Python 3.5.1 Shell*']

温馨提示:单击文章顶部作者名字旁边浅蓝色的“Python小屋”进入公众号,关注后可以查看更多内容!

欢迎转发给您的朋友,或许这正是Ta需要的知识!

Python监视用户计算机桌面窗口焦点的变化情况相关推荐

  1. 组策略方式统一域用户计算机桌面壁纸

    方法步骤:1.首先在域控服务器上建立一个文件夹,共享,并设置everyone 都具有访问权限,(需要排除来宾账户是否开启,是否有权限访问题),确保域内其他计算机能够访问该共享文件夹. (也可以将图片放 ...

  2. 域控制器组策略:统一修改用户计算机桌面壁纸

    方法步骤 1.首先在域控服务器上建立一个文件夹,共享,并设置everyone 都具有访问权限,(需要排除来宾账户是否开启,是否有权限访问题),确保域内其他计算机能够访问该共享文件夹. (也可以将图片放 ...

  3. 如何隐藏计算机桌面窗口,电脑桌面窗口被隐藏,如何取消隐藏? 打开网页,各种软件,桌面下边的窗口都被隐藏了,很不方便。...

    电脑桌面窗口被隐藏,如何取消隐藏? 打开网页,各种软件,桌面下边的窗口都被隐藏了,很不方便.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶 ...

  4. 计算机桌面窗口移动有虚影,win7系统桌面出现残影影响心情?一招帮你解决问题...

    win7桌面出现残影怎么办? 如下图所示: 系统桌面出现残影算是一种比较常见的问题了,在桌面单击右键或者右键点击任务栏选择菜单后会在屏幕上留下某些选项的虚影,而且多数的情况下虚影在层叠窗口中是完全置顶 ...

  5. linux切换桌面环境bug,LinuxMint 17.1 Cinnamon桌面窗口焦点bug

    [转]EntityFramework状态变化AutoDetectChangesEnabled与SaveChanged参数说明 一.约定OnModelCreating 有一些限制需要注意,例如:1.表名 ...

  6. Windows运行程序时桌面窗口卡死

    一.问题描述 我们在使用windows 系统过程中,经常会遇到执行某些程序的时候,程序窗口显示"未想一个响应",桌面窗口整个卡死的情况,但是过一段时间会自动恢复,查看任务管理器,并 ...

  7. C#代码像QQ的右下角消息框一样,无论现在用户的焦点在哪个窗口,消息框弹出后都不影响焦点的变化,那么有两种方法...

    你QQ的右下角消息框一样,无论现在用户的焦点在哪个窗口,消息框弹出后都不影响焦点的变化,那么有两种方法: 要么重写需要弹出的窗体的事件: protected override CreateParams ...

  8. 禁用计算机账户控制,win8系统禁止弹出用户账户控制窗口的方法

    有不少win8系统用户在运行一些软件程序的时候,发现Windows总是会自动弹出用户账户控制窗口,虽然可以有效防止有害程序更改计算机设置,但是对于一些可信任的程序来说就多余了,那么要win8系统如何禁 ...

  9. win8 必须重新启动计算机才能关闭用户账户控制,win8系统禁止弹出用户账户控制窗口的方法...

    有不少用户在运行一些软件程序的时候,发现Windows总是会自动弹出用户账户控制窗口,虽然可以有效防止有害程序更改计算机设置,但是对于一些可信任的程序来说就多余了,那么要 1.在运行程序时,当弹出&q ...

最新文章

  1. 两步实现spark集群
  2. C++学习-环境配置
  3. mysql1215_MySQL全面瓦解15:视图
  4. python 使用c模块_您可能没有使用(但应该使用)的很棒的Python模块
  5. 判断是否为两位数(信息学奥赛一本通-T1044)
  6. 我的GitHub Blog开通了
  7. 体验ASP.NET 2.0客户端回调功能(CallBack)
  8. 推荐算法架构1:召回
  9. 工具系列之邮件--浅谈工具如何改变你的工作效率
  10. ab plc软件_回收拆厂拆机设备废旧设备PLC触摸屏自动化设备回收【cpu吧】
  11. localStorage数据丢失
  12. ds oracle connector 连接组件,DataStage 错误集(持续更新)
  13. VM 将宿主机文件夹 映射至 虚拟机以及vm tools【共享文件夹、复制粘贴、拖动上传下载】
  14. 阿里云 验证四要素 服务
  15. 政务数据里的基础库、主题库、专题库
  16. 新手怎么写电影解说文案?
  17. linux 日志空间,情景linux--如何解决服务器日志过多导致的磁盘空间不足?
  18. 手工做迷宫_纸盒子废物利用手工自制小迷宫教玩具给幼儿玩(步骤图解)
  19. 图片如何批量重命名?一步一步教会你
  20. 活体检测——专利调研

热门文章

  1. c防止随机数重复_铝及铝模板等焊接常见缺陷、和防止措施12招
  2. oracle日期相减工作日_oracle 日期相减 转载
  3. java显示毫秒改成分钟_【转】java获取当前年、月、日 、小时 、分钟、 秒、 毫秒...
  4. mysql防注入插件_mybatis-plus插件使用的一些问题
  5. html把图片定位在盒子中心,html – CSS在图像的右上角定位一个图标
  6. linux 超大文件编辑,Linux 修改打开最大文件数
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的教材管理系统
  8. 探索未知种族之osg类生物---器官初始化一
  9. 洛谷 P1067 多项式输出
  10. jQuery点击图片弹出大图遮罩层