在Windows资源管理器中显示文件

7

我最喜欢的IDE是Wing IDE,它有一个显示活动文件在资源管理器中的命令。这意味着当你启动该命令时,它会在文件所在的文件夹中打开一个资源管理器窗口,然后选择该文件。

问题在于,如果窗口已经打开,它就无法选择文件。它会激活窗口,但文件不会被选中。这很烦人。我希望文件总是被选中。

我和开发人员之一交谈,他说他们使用'explorer /select,%s' % filename来显示文件,上述问题可能是该命令的一个怪癖。

是否有人知道如何避免这种行为?

(解决方案需要适用于Windows 2000、XP、2003 Server、Vista和Windows 7。)


存在一个相关的问题,其中一个答案指向 API 调用;这可能有所帮助:https://dev59.com/RG865IYBdhLWcg3wTcpY - Larry
您在哪个操作系统上看到这个问题?如果从cmd.exe运行“explorer /select,...”,您是否看到相同的问题? - Werner Henze
  1. 它发生在XP上。
  2. 我测试了,是的,当我直接从终端运行它时,同样的问题会发生。
- Ram Rachum
如果您修改Wing IDE快捷方式以兼容模式运行(例如XP SP3模式),问题是否会消失? - Darth Continent
我已经在Windows XP上运行。兼容选项有95、98和Me、NT4SP5和2000。 - Ram Rachum
2个回答

2

我不想强制创建一个新的窗口,如果已经存在一个窗口,我想要使用它。 - Ram Rachum
啊,我明白了。在这种情况下,我看不到一个编程解决方案来解决你的问题,因为没有命令行开关能够实现你想要的,如果不能使用Shell编码,那就只有这样了。你可以在每台机器上进行一些配置调整,但这是针对superuser.com而非stackoverflow的问题,因为stackoverflow是一个编程问答网站。 - El Zorko

0

我不知道是否已经存在这样的工具,但如果你创建一个实用程序来实现这个解决方案(C++),它将按照你的期望工作:

void OpenFileInExplorer(LPCTSTR filename)
{
    ITEMIDLIST *pidl = ILCreateFromPath(filename);
    if(pidl) 
    {
        SHOpenFolderAndSelectItems(pidl,0,0,0);
        ILFree(pidl);
    }
}

谢谢你提供的代码,但我不会编写C++程序,所以这对我没有帮助。 - Ram Rachum
我在给定的代码中没有看到C ++。顺便提一下,在调用SHOpenFolderAndSelectItems之前不要忘记调用CoInitializeEx! - Werner Henze
@Werner Henze:没错,首先调用CoInitializeEx是必须的...那段代码实际上是用C++编写的, :-) 我只会C++、C#和ABAP。对我来说,上面的代码只能被识别为C++。 - Anton Semenov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接