用python操作Windows的计算器。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python操作Windows的计算器。相关的知识,希望对你有一定的参考价值。

1,打开Windows的计算器;2,控制计算器完成200+100*2-22的计算;3,取出该计算结果然后打印(print语句)出来。4,关闭窗口。

安装pywin32模块。
注意:乘法的优先级高,在计算器输入时要加括号!

代码:

import win32api,win32gui, win32con
import win32com.client

shell = win32com.client.Dispatch("WScript.Shell")
shell.Run("calc")
win32api.Sleep(1000)
shell.SendKeys("200+")
win32api.Sleep(1000)
shell.SendKeys("(100\x2a2)")
win32api.Sleep(1000)
shell.SendKeys("-22")
win32api.Sleep(1000)
shell.SendKeys("=")

h = win32gui.FindWindow("SciCalc", None)
edit = win32gui.FindWindowEx(h, None, 'Edit', None)
bufLen = 1024
buf = win32gui.PyMakeBuffer(bufLen)
n = win32gui.SendMessage(edit, win32con.WM_GETTEXT, bufLen, buf)
print buf[0:n]

win32api.Sleep(1000)
win32gui.SendMessage(h, win32con.WM_SYSCOMMAND, win32con.SC_CLOSE, 0);

运行结果:

378.
参考技术A pyhook可以抓到键。

不过这里只需要消息就可以了,win32api中的windows的message

使用vc中的消息 工具,抓键盘消息。然后再把这个消息包装一下用pywin32中的API发送过去。

我以前用pyhook加pywin32, 控制过一个游戏,做外挂。

也用pywin32的com接口控制过excel
参考技术B 这个问题很有意思啊:
(1)为什么不直接编写程序完成这个计算呢?用python直接计算这个简单的运算多么方便啊!
(2)难道你的意图是练习用python编写脚本控制windows平台下的应用吗?那没问题,这样,你直接搜 “windows API 编程” 就可以,这个应该是你想要的东东......追问

我现在已经实现了第一步,执行python程序可以打开计算器了,但是我想知道的是怎么用python来在计算器里输入数字和符号进行运算呢?我搜windows API编程,出来的都是第一步的实现。

追答

嗯,你说的这个我还真没弄过,但按理来说,windows api 应该有控制键盘输入的功能,你用脚本启动计算器后,计算器获得焦点,然后看看windows api中有没有message机制,用脚本控制键盘输入,然后用message传给计算器(也就是用python通过windows api操控键盘,这个可以做到),然后就达到你想要的效果啦,你还是再查查windows api吧,主要查 “键盘输入” 那里......

以上是关于用python操作Windows的计算器。的主要内容,如果未能解决你的问题,请参考以下文章

Python Windows开发环境搭建

Python的循环正确的操作使用方法详解

Python ❀ 软件安装与环境部署

Python ❀ 软件安装与环境部署

Python ❀ 软件安装与环境部署

windows用哪个版本的python