使用不同的文本编辑器打开文件

时间:2011-04-14 04:49:49

标签: c++ editor readfile createfile

显然这应该是可能的。例如,使用NOTEPAD或HxD打开和操作文件。但它们都不是文本文件......如何指定打开文件的文本编辑器以及使用WINDOWS API对文件进行操作。它肯定不在" CreateFile"。

3 个答案:

答案 0 :(得分:0)

希望我理解你的问题......最简单的方法是启动所需的编辑器并将文件名作为参数传递,而不是“调用”该文件(这将启动与之关联的默认程序)文件类型)。

例如,notepad.exe mytextfile.txtgvim.exe mytextfile.txt

如果您的%PATH%上没有编辑器,则需要使用完整路径文件名。

答案 1 :(得分:0)

你到底在想做什么?你可以:

  1. 维护一个您希望安装的编辑器列表,并在系统的路径中输入条目(错误的想法)
  2. 让您想要使用的编辑/编辑,查询Windows注册表以查找编辑器的安装路径(使用RegGetValue),然后使用CreateProcess启动编辑器(稍微好一点)主意)
  3. 查询注册表以获取给定文件类型的默认编辑器,然后使用CreateProcess启动该编辑器。 (最好的主意)
  4. 但这完全取决于你的目标是什么。

    根据要求进行修改

    所以,就这样,我们在C ++的同一页面上,你想:

    1. 将命令行参数带到C ++应用程序(文件名)
    2. 在任意编辑器中打开该文件
    3. 检测用户何时对该文件进行了更改
    4. 操作文件内容
    5. 这是对的吗?

      如果是这样,你可以:

      1. 使用Boost libs to compute a CRC作为文件
      2. 中的当前数据
      3. 使用我最初描述的方法之一启动编辑器
      4. 坚持一个紧密的循环和sleep,这样你就不会咀嚼资源,而最初计算的CRC与循环的每次迭代计算一次
      5. 当然,您必须处理各种问题(这只是描述我可能使用的算法的一种非常简单的方式),例如:

        1. 如果用户未更改文件会怎样?
        2. 如果找不到文件会怎么样?
        3. 我确信有很多不同的方法可以做到这一点,但这是目前我能想到的最简单的方法(虽然仍然能够相当肯定这些变化)。

          免责声明:我没有实现这样的东西,所以我可能完全偏离基础;)

答案 2 :(得分:0)

您是否在Windows上寻找ShellExecute()ShellExecuteEx() API?他们将启动为文件注册的任何程序(通常基于文件名扩展名)。