我正在使用 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);
任何帮助表示赞赏!