微信清除了我的键盘钩子我要怎么避免被清理? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kasusa
V2EX    微信

微信清除了我的键盘钩子我要怎么避免被清理?

  •  
  •   kasusa 2023-12-12 20:11:25 +08:00 2221 次点击
    这是一个创建于 699 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我写了一个全局监听快捷键启动程序的 py 脚本 使用 python 的 keyboard 库 但是发现了一个 bug !

    当我打开 pc 版微信,并点击登录后,我的所有键盘快捷键就都失效了,只有重启 py 脚本才能解决。 有没有办法能不重启 py 脚本就可以使用快捷键? 或者禁止微信清理我的 键盘钩子?

    目前唯一的办法就是 , 先开微信,登录以后,再开脚本。 不方便。。。

    8 条回复    2023-12-15 12:57:09 +08:00
    zhouxiaoyuan
        1
    zhouxiaoyuan  
       2023-12-12 22:07:48 +08:00 via Android
    估计是 keyboard 没检测一些 key up 事件导致。试试这样写是否可行?
    import keyboard

    def callback(x):
    if is_pressed('ctrl+space'):
    # do something

    keyboard.hook(callback)
    keyboard.wait()
    Mithril
        2
    Mithril  
       2023-12-12 23:34:12 +08:00
    普通的 hook 就是这样的。要么你保持检测,掉了就重新做。要么你用驱动级的,不过不知道会不会和微信的冲突。
    FanyFull
        3
    FanyFull  
       2023-12-12 23:44:02 +08:00
    我自己的使用钩子写的输入法没有遇到你这个问题。试一试直接用 Win32 C++ 去处理键盘钩子呢。
    tychok
        4
    tychok  
       2023-12-13 01:43:24 +08:00
    可以尝试使用 AutoHotkey 脚本
    kasusa
        5
    kasusa  
    OP
       2023-12-14 13:51:32 +08:00
    @tychok 我对 ahk 语法很难习惯,这种比较复杂的写不出来。。。
    kasusa
        6
    kasusa  
    OP
       2023-12-14 13:52:11 +08:00
    @FanyFull c++也好难.... 就是很复杂。 有没有调用 Win32 C++的 python 库?
    kasusa
        7
    kasusa  
    OP
       2023-12-15 12:55:55 +08:00
    目前解决办法是
    python 脚本增加了一键重启功能
    在命令行里面按下回车可以重新启动脚本,然后关闭当前脚本。 使用起来比较方便(相比起手工关闭和启动)
    kasusa
        8
    kasusa  
    OP
       2023-12-15 12:57:09 +08:00
    如果在程序内热重载快捷键就没有任何作用。。。
    不理解微信是怎么做到的
    感觉把我整个进程的监听 keyboard 功能给关掉了,只有重开进程才有用。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5223 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 08:18 PVG 16:18 LAX 00:18 JFK 03:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86