2013-10-15 47 views
0

我想從計算器中獲取操作結果,但找不到任何特殊功能。 這裏是我的代碼:從WScript.Shell獲取計算結果

import win32com.client 
import win32api 
shell = win32com.client.Dispatch("WScript.Shell") 
shell.Run("calc") 
win32api.Sleep(100) 
shell.AppActivate("Calculator") 
win32api.Sleep(100) 
shell.SendKeys("1{+}") 
win32api.Sleep(500) 
shell.SendKeys("2") 
win32api.Sleep(500) 

然後,我想從計算的結果,它具有比較if_then的,像

if calc_result== 3: 
    print ("True") 
else: 
    print ("False") 

我工作的Python 3.3.2,這是我的第一個步驟。謝謝。

+0

這只是在使用Win32練習API?因爲否則有可能有更好的方法來做任何你想做的事情;) –

+0

是的,這是一個練習win32api :( – stvieG

回答

0

我不知道你在做什麼,可能會有更好的辦法,但爲1{+}2{=}^C,所以你把它複製到剪貼板,您可以發送=點擊,然後按Ctrl +C,然後閱讀使用Windows剪貼板功能,像:

import win32com.client 
import win32api 
shell = win32com.client.Dispatch("WScript.Shell") 
shell.Run("calc") 
win32api.Sleep(100) 
shell.AppActivate("Calculator") 
shell.SendKeys("1{+}2{=}^C") 
win32api.Sleep(500) 

import win32clipboard 
import win32con 
win32clipboard.OpenClipboard() 
r = win32clipboard.GetClipboardData(win32con.CF_TEXT).rstrip('\x00') 
win32clipboard.CloseClipboard() 
print(r) 

預覽:

>>> import win32com.client 
>>> import win32api 
>>> shell = win32com.client.Dispatch("WScript.Shell") 
>>> shell.Run("calc") 
0 
>>> win32api.Sleep(100) 
0 
>>> shell.AppActivate("Calculator") 
False 
>>> shell.SendKeys("1{+}2{=}^C") 
>>> win32api.Sleep(500) 
0 
>>> 
>>> import win32clipboard 
>>> import win32con 
>>> win32clipboard.OpenClipboard() 
>>> r = win32clipboard.GetClipboardData(win32con.CF_TEXT).rstrip('\x00') 
>>> win32clipboard.CloseClipboard() 
>>> print(r) 
3 
>>> 
+0

謝謝,我認爲這是接近正確的解決方案,但我有一個問題。我正在使用Win7並且r的值是'20 .6 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ ...'。 – stvieG

+0

@stvieG嘗試執行'r.rstrip('\ x00')'到刪除這些空字節,我現在更新了代碼。 – 2013-10-16 11:04:25