我有以下Python代碼寫入ctypes的標準輸入蟒蛇
import ctypes
import sys
dll = ctypes.CDLL('./file.so')
if __name__ == "__main__":
dll.myFunction()
的標準輸入輸入功能myFunction的等待,所以我的問題是:我怎麼能模擬使用python這個輸入?
我有以下Python代碼寫入ctypes的標準輸入蟒蛇
import ctypes
import sys
dll = ctypes.CDLL('./file.so')
if __name__ == "__main__":
dll.myFunction()
的標準輸入輸入功能myFunction的等待,所以我的問題是:我怎麼能模擬使用python這個輸入?
,也許你可以使用xautomation http://xautomation.sourceforge.net/keyboard.html
這可能會更好地回答具體通過顯示如何鏈接會有所幫助。並編寫一些代碼。 –
我認爲這可能需要爲應用程序的自動化任務,所以我可以推薦PyUserInput包輸入模擬:
from pykeyboard import PyKeyboard
kbd = PyKeyboard()
kbd.tap_key('h')
kbd.tap_key('i')
示例對於Windows用戶(althogh PyUserInput是corssplatform對於Windows,它被構建在pywin32之上):
import time
import win32com.client as comclt
wsh = comclt.Dispatch("WScript.Shell")
wsh.Run("calc")
time.sleep(1)
wsh.AppActivate("Calculator")
from pykeyboard import PyKeyboard
kbd = PyKeyboard()
kbd.type_string(["1"]+["0"]*6,interval=1)
這可能有所幫助:http:// stackoverflow.com/questions/510357/python-read-a-single-character-from-the-user –
你會發現許多變化的解決方案是暫時用管道替換當前的stdin。首先保存當前stdin的副本,例如'old_stdin = os.dup(sys.stdin.fileno())'。然後創建一個管道,例如'fd_read,fd_write = os.pipe()',並將讀取結束設置爲新的標準輸入,例如, 'os.dup2(fd_read,sys.stdin.fileno())'。在調用'myFunction'之前,通過'os.write'寫入'fd_write'。調用該函數後,使用'os.dup2(old_stdin,sys.stdin.fileno())'恢復原始標準輸入,並通過'os.close'關閉'old_stdin'和管道文件描述符。 – eryksun