Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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 如何使用PyWinAuto将项目添加到列表框?_Python_Automation_Ui Automation_Pywinauto - Fatal编程技术网

Python 如何使用PyWinAuto将项目添加到列表框?

Python 如何使用PyWinAuto将项目添加到列表框?,python,automation,ui-automation,pywinauto,Python,Automation,Ui Automation,Pywinauto,我使用的是Python版本3.8.2(64位) 我使用的是PyWinAuto版本0.6.8 我正在尝试自动化windows桌面应用程序。我需要将项目添加到列表框中 到目前为止,我可以打印列表框中的项目数。没问题 app = Application() app.connect(path=r"C:\Program Files (x86)\Example\WindowsFormsApp.exe") #Get a dialog... dlg = app.top_window() dlg.pri

我使用的是Python版本3.8.2(64位) 我使用的是PyWinAuto版本0.6.8

我正在尝试自动化windows桌面应用程序。我需要将项目添加到列表框中

到目前为止,我可以打印列表框中的项目数。没问题

    app = Application()
app.connect(path=r"C:\Program Files (x86)\Example\WindowsFormsApp.exe")

#Get a dialog...
dlg = app.top_window()
dlg.print_control_identifiers()

#Click the 'Generate File' buton'
windowHandle = app.window(best_match='Example Windows Forms App')
listBox = windowHandle.ListBox
print("**********************************") 
print(listBox.item_count())
print("**********************************")
有人知道我将如何向列表框中添加项目吗?

默认后端是“win32”。但幸运的是,尝试向列表框添加元素是正确的。您可以尝试
。发送消息(LB\u ADDSTRING,wParam,0)
<此消息的代码>wParam可在Microsoft文档中找到:

您需要
ctypes。创建\u unicode\u缓冲区(…)
ctypes。为wParam创建\u字符串\u缓冲区(…)
,具体取决于应用程序是否为unicode

类似调用
send_message
的示例可在pywinauto源代码中的
win32_controls.py
中的
def set_edit_text
实现中找到。没那么复杂


希望有帮助。

不确定技术上是否可行。这是编辑任务,不是自动化任务。您使用哪个后端创建
应用程序
对象?老实说,我不确定|我没有专门设置后端,所以猜测PyWinAuto mst是否使用默认后端?我将更新我的源代码列表。发布,以便您可以看到我试图访问的控件类型为WindowsForms10.LISTBOX时使用的代码。我们在列表框上手动拖放一个文件,该文件的路径显示在所述列表框中。我想通过编程将代表文件路径的字符串添加到列表框中。。就像你说的,这可能无法做到——但我至少想尝试一下……可能会遇到另一个技术问题:字符串的内存应该在远程(应用程序)进程中。然后需要
RemoteMemoryBlock
在目标进程中分配字符串内存。如果没有它,您可能会面临应用程序崩溃或发送消息失败。脚本退出后可能会发生崩溃,因为分配了内存的Python进程已经死亡。我已经向GitHub repo添加了功能请求:但由于其他优先级的原因,在等待了1-2年之后,我们可能会找到时间。