我正在使用user32库来自动执行Windows,IE-尤其是“另存为”对话框上的浏览器单击。我的解决方案可以在盒子上正常工作,但在其他计算机上却不能。

问题是当我在组合框中设置下载路径时,我传入的文件名将被忽略,并使用原始值。在这两种环境下,都可以接受其他消息,包括单击按钮,获取窗口的句柄,迭代窗口等。

我知道这是一个广泛的问题,但是有什么想法会影响这种行为吗?我相信我的代码是正确的,因此我正在其他地方搜索原因,例如权限,不同的user32版本,... ??

以下将在组合框中显示文本,选择字符串将成功,但是一旦单击保存按钮,将使用原始值。

 User32.SendMessage(combobox, User32Constants.CB_ADDSTRING, 0, DownloadAsFileName);
 var selected = User32.SendMessage(pointerToParent, User32Constants.CB_SELECTSTRING, -1, DownloadAsFileName);


我尝试了将目标路径放入组合框的不同技术,但是结果相同。仅在我的盒子上可用,我可以看到sendmessages返回期望的结果,但是使用了默认值。

User32.SendMessage(editPartOfCB, User32Constants.WM_SETTEXT, DownloadAsFileName.Length, DownloadAsFileName);
User32.SendMessage(combobox, User32Constants.CB_SETCURSEL, 0, IntPtr.Zero);


任何帮助表示赞赏!

最佳答案

根据用于更改文件名的方法,向ComboBox的父级发送适当的WM_COMMAND通知(CBN_SELCHANGE或CBN_EDITCHANGE)

09-25 20:37