【问题标题】:Select file/folder in namespace extension in windows explorer c#/vb .net在 Windows 资源管理器 c#/vb .net 的命名空间扩展中选择文件/文件夹
【发布时间】:2012-06-07 05:31:41
【问题描述】:

我正在实施一个命名空间扩展,它在“我的电脑”中可见。我想编写自动化测试用例来浏览它们。我能够打开资源管理器窗口直到命名空间扩展。作为 -

Process.Start("explorer.exe", "shell:::{CLSID of my namespace }")

接下来我想在打开的窗口中搜索特定的文件夹名称。例如,如果我输入“temp”,那么我的鼠标应该移动到命名空间资源管理器窗口中的“temp”文件夹。然后我双击鼠标的当前位置并进入该文件夹。接下来我输入“doc1.doc”,然后我的鼠标应该能够定位并移动到“doc1.doc”文件。 getDirectory 或 GetFile 等 API 也不起作用,因为我没有与我的命名空间关联的标准驱动器,也没有相对路径。

请帮忙。

【问题讨论】:

  • 听起来您正在编写测试来锻炼explorer.exe,而不是针对您的代码编写测试。你为什么不(试图)以编程方式练习你的代码?
  • 我的每个文件夹名称都与一个唯一的 id 相关联(在运行时从服务器返回并存储在客户端的哈希映射中)。因此,每当我双击文件夹名称时,都会在内部传递唯一 ID,我不会意识到它可以动态更改。因此我不能在这里直接使用我的代码。

标签: c# namespaces


【解决方案1】:

我能够通过使用 sendkeys 命令实现我的命名空间扩展的浏览部分。我用它首先打开资源管理器窗口(Win + E)。接下来我尝试模拟按键,假设我必须双击一个名为“temp”的文件夹,我将“temp”作为击键发送并按“Enter”。 'Input Simulator' 被证明对实现同样的目标非常有帮助。

从许多帖子中了解到,进行鼠标模拟似乎非常棘手和冒险,所以避免这样做。

我不想直接执行我的代码(因为我已经编写了单元测试),但我想模拟用户的工作方式,这会在内部触发我的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-02
    • 2010-12-13
    • 2010-09-24
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2013-01-12
    相关资源
    最近更新 更多