我有以下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