在 Windows 资源管理器中打开一个文件夹并选择一个文件,仅第二次有效

2024-04-18

使用中描述的代码这个答案 https://stackoverflow.com/a/696144/107625SO 发布的“打开文件夹并选择文件” https://stackoverflow.com/questions/334630/open-folder-and-select-the-file,我创建了这个函数:

public static void OpenExplorerAndSelectFile(string filePath)
{
    Process.Start(
        @"explorer.exe",
        string.Format(@"/select, ""{0}""", filePath));
}

该函数运行良好,但有一个小问题:

第一次针对特定文件调用该函数时,Windows 资源管理器会正确显示该文件的文件夹,但它不选择文件.

对同一文件再次调用同一函数,它会切换回 Windows 资源管理器中已打开的文件夹,然后选择该文件。

例如。第一次打电话给OpenExplorerAndSelectFile("C:\MyFolder\MyFile.txt")在新的 Windows 资源管理器窗口中打开文件夹“C:\MyFolder”。第二次致电OpenExplorerAndSelectFile("C:\MyFolder\MyFile.txt")实际上再次激活该窗口并选择MyFile.txt.

做类似的事情,例如Google Chrome(转到下载页面并显示以前下载的文件)实际上在第一次尝试中运行良好。

所以我的结论是谷歌浏览器似乎和我做的有点不同。

我的问题:

有没有办法调试/跟踪 Google Chrome 调用的 Win32/Shell 方法?

然后我会将它们与我所做的进行比较,以发现差异。


Chrome 很可能使用更灵活的而不是资源管理器命令行SHOpenFolderAndSelectItems http://msdn.microsoft.com/en-us/library/bb762232%28VS.85%29.aspx外壳 API。

这个答案 https://stackoverflow.com/a/3578581/246342包含所需的 p/invoke/implementation。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 资源管理器中打开一个文件夹并选择一个文件,仅第二次有效 的相关文章

随机推荐

  • SonarQube 分支机构覆盖范围

    是否可以获取 SonarQube 中非主分支的代码覆盖率详细信息 我看到的其他分支的唯一两个选项卡是Issues and Code 我为每个分支运行相同的 Gradle JaCoCo Sonar 命令 gradlew report sona
  • 按元素数量拆分子列表中的列表

    在 python 中 如果我有元素列表 l a b c d e f 和一个数字列表 n 2 1 3 我如何拆分列表l通过中的数字n 并获取这个列表列表 a b c d e f 你可以使用islice gt gt gt from iterto
  • 语法错误:非默认参数遵循默认参数

    from os import system def a len1 hgt len1 til col 0 system mode con cols len1 lines hgt system title til system color co
  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • 如何在调用子方法时强制调用父方法?

    我想要的是强制当子类从父类继承并且它重写父类方法而不显式调用它时 会引发错误 在错误类的初始化或调用该方法时可能会引发错误 目标是确保 Mother 类的用户执行 mother 方法中存在的一些操作 Example class Mother
  • React 无状态组件 this.refs..value?

    我不知道我这样做是否正确 如果我想从输入中获取值 我使用 this refs whatever value trim 但如果该输入是无状态函数组件 我如何检索 onSubmit 的值 经过研究 我知道现在这是不正确的 但是您应该如何从这些输
  • 未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全性[重复]

    这个问题在这里已经有答案了 我收到错误 未找到源 但无法获取部分或全部事件日志 搜索过 无法访问的日志 安全 当我运行下面的代码来捕获 Win 2K12 R2 服务器 IIS 8 5 上的错误时 EventLog elog new Even
  • 在 iOS 中添加/连接两个文本字段到一个标签中

    我有两个文本字段 在一个视图控制器中显示名称和首字母缩写 我想在另一个视图控制器中将两者显示为一个标签 我怎样才能做到这一点 要将数据从一个页面发送到另一页面 请查看所以在这里回答 https stackoverflow com quest
  • 使用 Sql Server 表中的值的 C# 枚举

    目前我有一个 SQL Server 2005 表 看起来有点像 ID name desc 1 ONE Value One 3 THREE Value Three 5 FIVE Value Five 该表对应于 C 中的枚举 如下所示 enu
  • win32com(python)错误

    我正在尝试在记事本中为我正在处理的程序自动执行操作 但我无法弄清楚我收到的错误消息 import os import win32com object win32com client Dispatch Notepad Application
  • 如何在 Javascript 中创建动态文件+下载链接? [复制]

    这个问题在这里已经有答案了 通常 HTML 页面可以包含可从服务器下载的文档 PDF 等 的链接 假设有一个启用 Javascript 的网页 是否可以从用户浏览器中动态创建一个文本文档 例如 并添加一个链接来下载该文档 而无需往返服务器
  • MAMP MySQL 无法连接:设置无效。

    我在 MAMP 灌输中遇到了问题 我没有改变它刚刚发生的任何事情 我完美地启动了 MAMP 它为 MySQL 服务器启动提供了绿灯 我可以使用 mysql 命令从终端连接到它 但是 当我尝试打开 phpMyAdmin 时 出现此错误 错误
  • 如何消除“最后一个语句应该返回一个值”警告?

    Sun Studio 12 1 打印警告 Warning The last statement should return a value 经常用于这样的功能 int f some code that may return if we en
  • HttpPost 适用于 Java 项目,但不适用于 Android 项目

    我为我的 Android 设备编写了一些代码 用于通过 HTTPS 登录网站并从结果页面中解析一些数据 一个HttpGet首先获取登录所需的一些信息 然后HttpPost执行实际的登录过程 下面的代码在 Eclipse 中的 Java 项目
  • 禁用 LINQ to SQL 中的触发器

    我们创建了一个带有触发器的表 每次有 UPDATE INSERT 时都会更新其中的 ModifiedDate 字段 不过 对于我们应用程序中的特定交易 我们希望暂时禁用此触发器 可以直接从 LINQ 执行此操作吗 直接 不调用存储过程 不使
  • 仅获取 git 远程存储库的标签/引用

    是否可以在不下载对象 文件的情况下获取存储库 例如 GitHub 的标签 引用 我的用例是打包某些软件的最新测试版 这些软件具有悠久的历史 因此很难克隆 理想情况下 在确定我希望使用的标签后 我可以 git clone b tag dept
  • 在 Python 中使用 Rasterbar libtorrent 加载 Magnet LINK

    如何通过 rasterbar libtorrent python 绑定加载 Magnet 链接 import libtorrent as lt import time ses lt session params save path home
  • PHP 中的位掩码设置?

    位和位掩码是我一段时间以来一直难以理解的东西 但我想学习如何在 PHP 中使用它们进行设置和类似的操作 我终于找到了一个声称可以做到这一点的课程 据我所知 它似乎有效 但我不确定这是否是最好的方法 我将在下面发布带有示例代码的类文件 以显示
  • Apache Camel/ActiveMQ 优先级路由

    我有两个具有相同消费者的 AMQ 队列 第一个队列 Q1 处理 97 的消息 另一个队列 Q2 仅处理 3 问题是 Q2 中的消息需要在排队后立即处理 所以我的问题是 当第二季度有消息可用时 我需要以某种方式暂停第一条路线以吸引其消费者 a
  • 在 Windows 资源管理器中打开一个文件夹并选择一个文件,仅第二次有效

    使用中描述的代码这个答案 https stackoverflow com a 696144 107625SO 发布的 打开文件夹并选择文件 https stackoverflow com questions 334630 open fold