2014-02-19 46 views
0

我在Windows上運行python 2.7,我想打開一個外部程序(可以說notepad.exe)並鍵入內容並保存該文件。我想我必須使用win32api,但我不知道怎麼跟蟒蛇他有什麼NOTEPAD.EXE內做win32api打開外部程序和做東西

win32api.WinExec('notepad.exe') 

此命令打開記事本,但我不知道如何將文本粘貼到它,去「文件」 - >「另存爲...」並保存文件。這甚至有可能嗎?

其實我想用類似於Paint的程序(它不作爲命令行工具提供)來打開數據文件並將它們保存爲.jpg文件。所以我唯一要做的就是告訴python哪裏有「File」按鈕(s ...)並執行它們......這可能與python有關嗎?我唯一的(醜陋的)解決方案是使用座標和模擬鼠標點擊/按鍵,但這真的很難看。

回答

0

記事本沒有(據我所知)提供了一個COM接口。這將打敗你在自動化方面的嘗試。如果您嘗試執行notepad.exe自動化,則需要查看某種Windows自動化系統。我喜歡AutoIT - http://www.autoitscript.com/site/autoit/

0

在非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) 

正如你可以看到某個時候..需要一點點延遲讓事件啓用改變窗口焦點。