#coding=utf-8
#date 2020.12.23
#depand:python3.8,win32
#描述:鼠标悬停窗体2秒输出进程名和PID
from win32 import win32gui,win32process
import time
import sys
def get_PID(point):
try:
p=win32gui.WindowFromPoint(point)
p_name=win32gui.GetWindowText(p)
_,p_id=win32process.GetWindowThreadProcessId(p)
print(p_name,p_id)
except:
print("win32获取窗体信息失败 error")
sys.exit(1)
def main():
while True:
point1 =win32gui.GetCursorPos()#获取鼠标坐标
time.sleep(2)
point2 =win32gui.GetCursorPos()#获取鼠标坐标
if point2 == point1:
get_PID(point2)
if __name__ == "__main__":
main()
首先安装第三方库:pin install pywin32
使用Pyinstaller打包,打包完大概6.7mb,这也是Python无奈的地方,随便几行代码就这么大,最好还是用编译语言实现,几十kb就行了。本例中代码量不多,但是看win32的开发文档过程还是蛮痛苦的,希望能给大家提供一些思考问题的思路。Python版最后执行效果如下:
Input Flyout 6840
Chrome Legacy Window 13060
Chrome Legacy Window 13060
微信 13912
微信 13912
微信 13912
微信 13912