在某些计算机上忽略CB_SELECTSTRING

本文关键字:CB SELECTSTRING 计算机 | 更新日期: 2023-09-27 18:34:54

我正在使用user32库来自动执行Windows,IE上的一些浏览器外点击 - 特别是"另存为"对话框。我的解决方案在我的盒子上工作正常,但在其他计算机上并非如此。

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

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

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

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

我尝试了不同的技术将目标路径放入组合框,但结果相同。仅适用于我的盒子,我可以看到发送消息返回预期结果,但使用默认值代替。

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

任何帮助表示赞赏!

在某些计算机上忽略CB_SELECTSTRING

根据用于

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

疯狂猜测:您定位的应用程序是更高权限的应用程序,Windows 正在阻止您的消息。

尝试以管理员身份运行您的进程,看看这是否会影响结果。