Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python win32api打开外部程序并做一些事情_Python - Fatal编程技术网

Python win32api打开外部程序并做一些事情

Python win32api打开外部程序并做一些事情,python,Python,我正在Windows上运行Python2.7,我想打开一个外部程序(比如notepad.exe),键入一些内容并保存该文件。我想我必须使用win32api,但我不知道如何告诉python在notepad.exe中必须做什么 win32api.WinExec('notepad.exe') 这个命令打开记事本,但我不知道如何将文本粘贴到记事本上,然后转到“文件”->“另存为…”并保存文件。这可能吗 实际上,我想用一个类似于Paint的程序(它不是命令行工具)打开数据文件并保存为.jpg文件。所以我

我正在Windows上运行Python2.7,我想打开一个外部程序(比如notepad.exe),键入一些内容并保存该文件。我想我必须使用
win32api
,但我不知道如何告诉python在notepad.exe中必须做什么

win32api.WinExec('notepad.exe')
这个命令打开记事本,但我不知道如何将文本粘贴到记事本上,然后转到“文件”->“另存为…”并保存文件。这可能吗


实际上,我想用一个类似于Paint的程序(它不是命令行工具)打开数据文件并保存为.jpg文件。所以我唯一要做的就是告诉python“文件”按钮在哪里,然后执行它们。。。这在python中是可能的吗?我唯一的(难看的)解决方案是使用坐标和模拟鼠标点击/按键,但这真的很难看。

记事本(据我所知)不提供COM接口。这将挫败你的自动化尝试。如果您试图实现notepad.exe自动化,则需要查看某种Windows自动化系统。我喜欢AutoIT--

在非COM/DCOM应用程序中模拟某些活动的最简单方法之一是通过键盘刺激。 一个简单的例子是从python命令切换到最后运行的应用程序(例如notepad.exe),并执行打开文件菜单的ALT+F:win32api还可以模拟鼠标移动拖放等

import win32api,win32con,time
win32api.keybd_event(win32con.VK_MENU, 0, 0, 0)
win32api.keybd_event(win32con.VK_TAB, 0, 0, 0)
time.sleep(0.1)
win32api.keybd_event(win32con.VK_TAB, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(win32con.VK_MENU, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(0.1)
win32api.keybd_event(win32con.VK_MENU, 0, 0, 0)
win32api.keybd_event(ord('F'), 0, 0, 0)
win21api.keybd_event(ord('F'), 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(win32con.VK_MENU, 0, win32con.KEYEVENTF_KEYUP, 0)
正如你有时所看到的。。需要一点延迟才能让事件启用更改windows焦点