需要安装win32
import win32com.client
sp=win32com.client.Dispatch("SAPI.SPVOICE") #打开语音播放的接口
for i in range(3):
sp.Speak("我是凤姐,我爱王毅,wangyi is lovely") #声音组建
else:
sp.Speak("老娘喊了那么久,还不从了老娘")
安装完win32直接运行会报错,需要再打一个文件(百度一下那个报错,我忘掉了~),我们把需要的内容写入mytext中
from win32com.client import constants
import os
import win32com.client
import pythoncom
class SpeechRecognition:
def __init__(self, wordsToAdd):
self.listener = win32com.client.Dispatch("SAPI.SpSharedRecognizer")
self.context = self.listener.CreateRecoContext()
self.grammar = self.context.CreateGrammar()
self.grammar.DictationSetState(0)
self.wordsRule = self.grammar.Rules.Add("wordsRule", constants.SRATopLevel + constants.SRADynamic, 0)
self.wordsRule.Clear()
[self.wordsRule.InitialState.AddWordTransition(None, word) for word in wordsToAdd]
self.grammar.Rules.Commit()
self.grammar.CmdSetRuleState("wordsRule", 1)
self.grammar.Rules.Commit()
self.eventHandler = ContextEvents(self.context)
class ContextEvents(win32com.client.getevents("SAPI.SpSharedRecoContext")):
def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
newResult = win32com.client.Dispatch(Result)
print("他妈的你在说 ", newResult.PhraseInfo.GetText())
mytext=newResult.PhraseInfo.GetText()#识别的词语
if mytext=="关机":
os.system("shutdown -s -t 300")
elif mytext=="取消关机":
os.system("shutdown -a")
elif mytext=="记事本":
os.system("notepad")
elif mytext=="画图板":
os.system("mspaint")
elif mytext=="写字板":
os.system("write")
elif mytext=="百度":
os.system("chrome http://www.baidu.com")
if __name__ == '__main__':
os.system("chrome http://www.baidu.com")
wordsToAdd = ["关机", "取消关机", "记事本", "画图板","写字板","百度" ]
speechReco = SpeechRecognition(wordsToAdd)
while True:
pythoncom.PumpWaitingMessages()
from win32com.client import constants
import os
import win32com.client
import pythoncom
class SpeechRecognition:
def __init__(self, wordsToAdd):
self.listener = win32com.client.Dispatch("SAPI.SpSharedRecognizer")
self.context = self.listener.CreateRecoContext()
self.grammar = self.context.CreateGrammar()
self.grammar.DictationSetState(0)
self.wordsRule = self.grammar.Rules.Add("wordsRule", constants.SRATopLevel + constants.SRADynamic, 0)
self.wordsRule.Clear()
[self.wordsRule.InitialState.AddWordTransition(None, word) for word in wordsToAdd]
self.grammar.Rules.Commit()
self.grammar.CmdSetRuleState("wordsRule", 1)
self.grammar.Rules.Commit()
self.eventHandler = ContextEvents(self.context)
class ContextEvents(win32com.client.getevents("SAPI.SpSharedRecoContext")):
def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
newResult = win32com.client.Dispatch(Result)
print("他妈的你在说 ", newResult.PhraseInfo.GetText())
mytext=newResult.PhraseInfo.GetText()#识别的词语
sp = win32com.client.Dispatch("SAPI.SPVOICE") # 打开语音播放的接口
if mytext=="你是谁":
sp.Speak("老娘是凤姐")
elif mytext=="你好":
sp.Speak("好你妹")
elif mytext=="干哈":
sp.Speak("干你")
elif mytext=="你的老公":
sp.Speak("我们家亲爱的小好好")
elif mytext=="国庆快乐":
sp.Speak("国庆快乐,就是辛苦了我们家小好好")
elif mytext=="郝仁":
sp.Speak("帅的惊动了党中央")
else:
sp.Speak("你说啥?")
if __name__ == '__main__':
os.system("chrome http://www.baidu.com")
wordsToAdd = ["你是谁", "你好", "干哈", "你的老公","国庆快乐","王毅" ]
speechReco = SpeechRecognition(wordsToAdd)
while True:
pythoncom.PumpWaitingMessages()
其实什么都能将控制,只要知道键盘的需要一个按下,一个松开,就可以完成一次按键。
from win32com.client import constants
import os
import win32com.client
import pythoncom
import win32con #定义
import win32api
class SpeechRecognition:
def __init__(self, wordsToAdd):
self.listener = win32com.client.Dispatch("SAPI.SpSharedRecognizer")
self.context = self.listener.CreateRecoContext()
self.grammar = self.context.CreateGrammar()
self.grammar.DictationSetState(0)
self.wordsRule = self.grammar.Rules.Add("wordsRule", constants.SRATopLevel + constants.SRADynamic, 0)
self.wordsRule.Clear()
[self.wordsRule.InitialState.AddWordTransition(None, word) for word in wordsToAdd]
self.grammar.Rules.Commit()
self.grammar.CmdSetRuleState("wordsRule", 1)
self.grammar.Rules.Commit()
self.eventHandler = ContextEvents(self.context)
class ContextEvents(win32com.client.getevents("SAPI.SpSharedRecoContext")):
def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
newResult = win32com.client.Dispatch(Result)
print("他妈的你在说 ", newResult.PhraseInfo.GetText())
mytext=newResult.PhraseInfo.GetText()#识别的词语
if mytext=="趴下" or mytext=="装死" :
win32api.keybd_event(89, 0, 0, 0) # 按下
win32api.keybd_event(89, 0, win32con.KEYEVENTF_KEYUP, 0) # 松开
elif mytext=="起飞" or mytext=="跳跃" or mytext=="起来" :
win32api.keybd_event(32, 0, 0, 0) # 按下
win32api.keybd_event(32, 0, win32con.KEYEVENTF_KEYUP, 0)# 松开
elif mytext == "狂风吹": #adw ml
win32api.keybd_event(65, 0, 0, 0) # 按下
win32api.keybd_event(65, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(68, 0, 0, 0) # 按下
win32api.keybd_event(68, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(87, 0, 0, 0) # 按下
win32api.keybd_event(87, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
elif mytext == "旋风刀": # ads ml
win32api.keybd_event(65, 0, 0, 0) # 按下
win32api.keybd_event(65, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(68, 0, 0, 0) # 按下
win32api.keybd_event(68, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(83, 0, 0, 0) # 按下
win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
elif mytext == "前进": # ads ml
win32api.keybd_event(65, 0, 0, 0) # 按下
win32api.keybd_event(65, 0, win32con.KEYEVENTF_KEYUP, 0)
elif mytext == "后退": # ads ml
win32api.keybd_event(83, 0, 0, 0) # 按下
win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)
if __name__ == '__main__':
#os.system("chrome http://www.baidu.com")
wordsToAdd = ["跳跃","起飞","装死","趴下","起来","狂风吹" ,"旋风刀","前进","后退"]
speechReco = SpeechRecognition(wordsToAdd)
while True:
pythoncom.PumpWaitingMessages()
我们可以明显知道这是2次按键,91是win键。
import win32con #定义
import win32api
win32api.keybd_event(91,0,0,0) #按下
win32api.keybd_event(69,0,0,0) #按下
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)#松开
win32api.keybd_event(91,0,win32con.KEYEVENTF_KEYUP,0)#松开
#修改91,按下win键盘
附一个表:
键盘键与虚拟键码对照表
字母和数字键 数字小键盘的键 功能键 其它键
键 键码 键 键码 键 键码 键 键码
A 65 0 96 F1 112 Backspace 8
B 66 1 97 F2 113 Tab 9
C 67 2 98 F3 114 Clear 12
D 68 3 99 F4 115 Enter 13
E 69 4 100 F5 116 Shift 16
F 70 5 101 F6 117 Control 17
G 71 6 102 F7 118 Alt 18
H 72 7 103 F8 119 Caps Lock 20
I 73 8 104 F9 120 Esc 27
J 74 9 105 F10 121 Spacebar 32
K 75 * 106 F11 122 Page Up 33
L 76 + 107 F12 123 Page Down 34
M 77 Enter 108 – – End 35
N 78 - 109 – – Home 36
O 79 . 110 – – Left Arrow 37
P 80 / 111 – – Up Arrow 38
Q 81 – – – – Right Arrow 39
R 82 – – – – Down Arrow 40
S 83 – – – – Insert 45
T 84 – – – – Delete 46
U 85 – – – – Help 47
V 86 – – – – Num Lock 144
W 87
X 88
Y 89
Z 90
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
‘’’
鼠标先设定位置,一次按下鼠标一次松开鼠标算一次完成。代码中需要修改的部分是rightdown跟leftdown。
import win32con #定义
import win32api
import time
time.sleep(1)
win32api.SetCursorPos([30,30]) #设定鼠标位置
time.sleep(10)
#鼠标右键按下
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN,0,0,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP,0,0,0,0)
#双击
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0,0)