实现的功能
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