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

Opening a File with different text editors

本文关键字:编辑器 文件 文本编辑 文本      更新时间:2023-10-16

显然这应该是可能的。例如,使用NOTEPAD或HxD打开和操作文件。但它们不都是文本文件吗?如何使用WINDOWS API指定打开文件和操作文件的文本编辑器。

希望我理解你的问题…要做到这一点,最简单的方法是启动所需的编辑器并将文件名作为参数传递,而不是"调用"文件(这会启动与文件类型相关的默认程序)。

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

如果编辑器不在你的%PATH%上,你需要使用一个完整的路径文件名

你到底想干什么?你可以:

  1. 维护一个您希望安装的编辑器列表,并在系统的PATH中有条目(坏主意)
  2. 有一个你想要使用的编辑器/编辑器,查询Windows注册表以找到编辑器的安装路径(使用RegGetValue),并使用CreateProcess启动编辑器(一个更好的主意)
  3. 查询注册表以获取给定文件类型的默认编辑器,然后使用CreateProcess启动该编辑器。(好主意)

但这一切都取决于你的真正目标是什么。

根据需求编辑

所以,我们在同一页,从c++,你想:

  1. 给你的c++应用程序一个命令行参数(filename)
  2. 在任意编辑器中打开该文件
  3. 当用户对该文件进行更改时检测
  4. 对文件内容进行操作

正确吗?

如果是,你可以:

  1. 使用Boost库为文件
  2. 中的当前数据计算CRC
  3. 使用我最初描述的方法之一启动编辑器
  4. 坚持在一个紧密的循环和sleep,所以你不会咀嚼资源,而最初计算的CRC匹配一个计算的每次循环
当然,还有各种各样的问题需要处理(这只是描述我可能使用的算法的一种超级简单的方式),例如:
  1. 如果用户不更改文件会发生什么?
  2. 如果找不到文件会发生什么?

我确信有许多不同的方法可以做到这一点,但这是我目前能想到的最简单的方法(同时仍然能够相当确定的变化)。

免责声明:我还没有实现过这样的东西,所以我可能完全错了;)

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

相关文章: