gpt4 book ai didi

windows - setx 使 Windows 资源管理器滚动到顶部

转载 作者:可可西里 更新时间:2023-11-01 11:24:31 38 4
gpt4 key购买 nike

我有一个包含大量批处理文件的文件夹 -- 超过了 Windows 资源管理器一次在屏幕上显示的数量。其中一些聚集在一起,需要按顺序执行(但不是在相同批处理中,因为在批处理文件可以处理的步骤之外,中间步骤是必需的)。

我的一个文件按预期工作,但当我运行该文件时,它会导致资源管理器窗口滚动到列表顶部。这并不严重——但它是一种轻微的刺激,因为它会分散我对上次运行的文件的注意力。 (另外,这很很奇怪,我想了解发生了什么。)

我已将问题隔离到 setx 调用:如果我注释掉这一行,批处理文件的执行对显示它所在目录的资源管理器窗口没有任何影响。如果我取消注释行并双击该文件,批处理文件将执行并且它的资源管理器窗口滚动到顶部。

为了诊断,我将其简化为一行:我创建了一个名为 Test.bat 的文件,其中只有以下内容行:

setx TestValue abc

我在其中放入了一个文件夹,里面有足够多的文件,所以它们不会同时全部可见 -- 而且,因为它以 T 开头,Test.bat显示在底部附近。当我双击它时,窗口滚动到顶部。

我使用的是 Windows 10。并在另一台计算机上进行了尝试(结果相同),只是为了确定这不是我原来机器的问题。

是否可以通过命令开关或更改 Windows 配置来消除这种行为?

最佳答案

为什么?

setx 命令发送 WM_SETTINGCHANGE向所有顶级窗口发送消息以通知对环境的更改(lParamEnvironment)。

这会导致资源管理器窗口重新处理它们的环境,并在此过程中重新定位文件列表。

如何解决?

setx 中没有任何方法可以禁用消息发送,而且我不知道一种方法(仅使用操作系统)来指示 explorer 窗口不处理接收到的消息(需要处理以便新启动的进程可以看到新变量)。

我看到处理这个“问题”的唯一方法是直接将变量写入注册表,并且只在需要通知其余窗口环境更改时才调用 setx

关于windows - setx 使 Windows 资源管理器滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43619339/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com