python 桌面级快捷键

实现的功能

ctrl + alt + 任意键 打开可执行文件
alt + 任意键 将对应的程序从后台调出

需要安装的包

运行前需要pip install 三个包
安不上或报错可以在python路径\Lib\site-packages路径下替换为我的package
我的python版本为3.7.6
下载site-packages
解压 进入文件夹内 全选
粘贴提示是否替换同名文件选 否

个人文件只能用迅雷云盘下载,,感觉还快点

site-packages
链接:https://pan.xunlei.com/s/VN7zf-beNmr8_BIteayLKehkA1
提取码:u34m

python 3.7.4
链接:https://pan.xunlei.com/s/VN7zeo1H7W9on19WM09axIOSA1
提取码:exgp

pip install pywin32
pip install pyWinhook
pip install pyqt5-tools

win32 hook 后台键盘监听

文件名 hook.py

import pyWinhook
import pythoncom
import tester as rnnr #引入tester.py管理文件 下文将以rnnr使用 

kjj = ["", "", ""] #屎山 不要碰 万一起飞了呢


class KeyBoardManager():
    keyIsPressed = False

    def __init__(self):
        self.ki = 0
        self.lk = ""

    def onKeyDown(self, event):
        k = str(event.Key)
        if self.keyIsPressed and k == self.lk:
            return True
        print(k + ' is pressed')
        self.ki = self.ki + 1
        try:
            if self.lk == "Lmenu" and self.ki == 2:
                rnnr.showwindows(k)#同时按下两个键 前一个是alt 将后一个键传入tester.showwindows
            if self.lk == "Lmenu" and self.ki >= 3:
                rnnr.runon(k)#同时按下大于等于三个键 前一个是alt 将后一个键传入tester.runon
                self.ki = 0
        except Exception as e:
            print(str(e))
        self.lk = k
        self.keyIsPressed = True
        return True

    def onKeyUp(self, event):
        self.ki = self.ki - 1
        if self.ki <= 0:
            self.keyIsPressed = False
            self.ki = 0
        print(str(event.Key) + ' is released')
        return True

    # def mouseup(self, event):
    #     print("mouse up", event)
    #     return True
    #
    # def mousedown(self, event):
    #     print("mouse down", event)
    #     return True


try:
    if __name__ == '__main__':
        mykbmanager = KeyBoardManager()
        hookmanager = pyWinhook.HookManager()
        hookmanager.KeyDown = mykbmanager.onKeyDown
        hookmanager.KeyUp = mykbmanager.onKeyUp
        # hookmanager.MouseLeftUp = mykbmanager.mouseup
        # hookmanager.MouseLeftDown = mykbmanager.mousedown

        hookmanager.HookKeyboard()
        # hookmanager.HookMouse()
        pythoncom.PumpMessages()
except:
    print("ohhhhhh")

须修改文件-tester.py-程序路径与快捷键管理

import os

import pythoncom
import win32api
import PyQt5.QtWidgets as Qt
import win32com.client as wcent
import win32con
import win32gui
import win32process
import psutil

chrome = fr"C:\Users\Administrator\AppData\Local\MyChrome\Chrome\Application\chrone.exe"
qq = fr"E:\Program Files\Tencent\QQ\Bin\QQScLauncher.exe"
xunlei = fr"F:\program\Thunder\Program\ThunderStart.exe"
bdwp = fr"D:\迅雷下载\BaiduNetdisk\BaiduNetdisk.exe"
PyCharm = fr"D:\program\PyCharm Community Edition 2021.3.2\bin\pycharm64.exe"
processing = fr"D:\迅雷下载\processing-3.5.4-windows64\processing-3.5.4\processing.exe"
Steam = fr"F:\program\steam\steam.exe"
EPO = fr"D:\program\EveryonePiano\EveryonePiano.exe"
IDEA = fr"E:\Program Files\IntelliJ IDEA Community Edition 2021.3.3\bin\idea64.exe"
WPF = fr"G:\Users\Administrator\AppData\Local\Kingsoft\WPS Office\ksolaunch.exe"
help = fr"D:\great\python\oneForAll\hook\read.txt"
cmd = fr"cd \."
gvim = fr"G:\Program Files\Vim\vim90\gvim.exe"
button = {"G": chrome, "Q": qq, "X": xunlei, "B": bdwp, "C": PyCharm, "P": processing,
          "S": Steam, "E": EPO, "Space": cmd, "I": IDEA, "W": WPF, "H": help, "V": gvim }

# showwin的可执行文件名称在.cmd运行后按下alt + 任意键 显示,前提是这些文件已经在后台运行
showwin = {"E": "explorer.exe", "C": "pycharm64.exe", "G": "chrone.exe",
           "T": "notepad.exe", "M": "cmd.exe", "W": "wps.exe", "Q": "QQ.exe", "B": "baidunetdisk.exe", "V": "gvim.exe"}

def runon(name):
    cmd = button[name]
    cmd = cmd.replace(" ", "\" \"")
    cmd = "start " + cmd
    global lstwin
    if name == "Space":
        cmd = "start cd \."
    try:
        os.system(cmd)
    except:
        print("ohhhhhhh")


# 列出所有程序运行的PID
hwnd_title = dict()
def get_all_hwnd(hwnd, mouse):
    if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
        hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})




lstwin = "null"


def showwindows(name):
    try:
        win32gui.EnumWindows(get_all_hwnd, 0)
    except Exception as e:
        print(str(e))
    for h, t in hwnd_title.items():
        if t != "":
            # print(h, t)
            tid, pid = win32process.GetWindowThreadProcessId(h)
            try:
                process = psutil.Process(pid)
                pname = process.name()
            except:
                print("no such pid")
            print(pname, pid)
        if t:
            if showwin[name] in pname:
                try:
                    # try:
                    #     win32gui.SetForegroundWindow(h)
                    # except Exception as e:
                    #     print(str(e))
                    # win32gui.BringWindowToTop(h)
                    win32gui.ShowWindow(h, win32con.SHOW_FULLSCREEN)
                    win32gui.ShowWindow(h, win32con.SW_MAXIMIZE)
                    global lstwin
                    global lname
                    print(lstwin, h, pname)
                    if lstwin != "null" and lname != name:
                        win32gui.ShowWindow(lstwin, win32con.SW_MINIMIZE)
                    lname = name
                    lstwin = h
                except Exception as e:
                    print(str(e))

双击可执行文件.cmd

文件名 cmd.cmd
点前的cmd名字是随便取的可以随便改
点后的cmd可以换为bat

python hook.py
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值