吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2201|回复: 7
收起左侧

python里面有哪些方法可以获取光标外观

  [复制链接]
du26548 发表于 2019-9-9 18:34
25吾爱币
以前做过一个按键精灵,现在想拿python重写,有需要获取鼠标外观作判定,但实在找不到什么方法可以在python获取鼠标特征码,特此求助

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

etion 发表于 2019-9-9 18:39
1.#先下载pyautogui库,打开cmd输入pip install pyautogui,回车

2.代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
import os,time
import pyautogui as pag
try:
    while True:
            print("Press Ctrl-C to end")
            x,y = pag.position() #返回鼠标的坐标
            posStr="Position:"+str(x).rjust(4)+','+str(y).rjust(4)
            print (posStr)#打印坐标
            time.sleep(0.2)
            os.system('cls')#清楚屏幕
except  KeyboardInterrupt:
    print ('end....')
 楼主| du26548 发表于 2019-9-9 18:55
etion 发表于 2019-9-9 18:39
1.#先下载pyautogui库,打开cmd输入pip install pyautogui,回车

2.代码如下:

这是获取鼠标坐标 这个我会 我需要的是获取鼠标的外观或者他的外观特征码
 楼主| du26548 发表于 2019-9-11 17:19
 楼主| du26548 发表于 2019-9-11 18:10
又去读了读win32api 发现系统不能判断程序图标跟光标图标的区别他们都是ico  如果我会用句柄查出程序的图标 那光标的图标也应该可以获取了吧
 楼主| du26548 发表于 2019-9-11 21:38
对了 如果一个程序的光标图标发生改变 那他的句柄是否会改变呢? 明天我可以做个测试 。。。
 楼主| du26548 发表于 2019-9-17 11:06
本帖最后由 du26548 于 2019-9-17 11:08 编辑

写好了大概是这样
[Python] 纯文本查看 复制代码
import win32gui,win32con
import time



while True :
    time.sleep(1)
    l = win32gui.GetCursorInfo() #获取光标信息
    e=win32gui.SetCursor(l[1]) #放入新句柄 返回旧句柄对象

    print str(win32gui.GetCursor()) #同样得到光标句柄
    print str(l[1])
    print '光标参数'+str(win32gui.GetIconInfo(e))#得到光标图像信息 
    #光标参数(0, 0, 0, <PyGdiHANDLE:-301654787>, <PyGdiHANDLE:721755479>)
    #(是否为光标,热点坐标X,热点坐标y,黑白位图,彩色位图)


这里有几个小问题
1,win32gui.SetCursor(l[1]) 返回的是个PyHANDLE对象,已知只能用此方法获得光标的句柄对象,不晓得还有无其他方法。
2,GetCursor()与GetCursorInfo() 返回的句柄数值不一样。。 why? 并且GetCursorInfo() 的可用
3,win32gui.GetIconInfo(e) 返回的黑白位图,彩色位图 数值在不停变化,可我的图标外观未改变。。


 楼主| du26548 发表于 2019-9-18 16:32
本帖最后由 du26548 于 2019-9-18 16:36 编辑

[Python] 纯文本查看 复制代码
# -*- coding:utf-8 -*-

import win32gui,win32ui
import time
while True :
    time.sleep(1)
    ci = win32gui.GetCursorInfo()
    if(ci [1]==0):
        print "光标消失"
        continue
    ii=win32gui.GetIconInfo(ci[1])
    bm = win32gui.GetObject(ii[3])

    gdc=win32gui.GetDC(0)
    hdc = win32ui.CreateDCFromHandle(gdc)
    hbmp = win32ui.CreateBitmap()
    hbmp.CreateCompatibleBitmap(hdc,bm.bmWidth,bm.bmHeight )
    hdc = hdc.CreateCompatibleDC()
    hdc.SelectObject(hbmp)
    win32gui.DrawIconEx(hdc.GetHandleOutput(), 0, 0, ci[1], bm.bmWidth, bm.bmHeight, 0, None,3)#图标大小
    hbmp.SaveBitmapFile(hdc, '99t.bmp')

    #资源释放
    win32gui.ReleaseDC(0, gdc)
    hdc.DeleteDC()
    win32gui.DeleteObject(hbmp.GetHandle())


写了3天 搞定了 虽然还有些疑惑 不过也就这样吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-2-27 08:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表