繁体   English   中英

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

[英]Opening a File with different text editors

显然这应该是可能的。 例如,使用NOTEPAD或HxD打开和处理文件。 但是,它们不是全部都是文本文件吗?如何使用WINDOWS API指定哪个文本编辑器来打开文件并对该文件进行操作。 它肯定不在“ CreateFile”中。

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

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

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

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

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

但这完全取决于您的目标是什么。

根据需求进行编辑

因此,就在C ++的同一页面上,您想要:

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

那是对的吗?

如果是这样,您可以:

  1. 使用Boost库来计算文件中当前数据的CRC
  2. 使用我最初描述的方法之一启动编辑器
  3. 陷入一个紧紧的循环并sleep这样您就不会浪费资源,而最初计算的CRC与循环的每次迭代所计算的CRC相匹配

当然,您需要处理各种各样的问题(这只是描述我可能使用的算法的一种非常简单的方法),例如:

  1. 如果用户不更改文件怎么办?
  2. 如果找不到该文件怎么办?

我敢肯定有很多不同的方法可以做到这一点,但这是我目前可以想到的最简单的方法(尽管仍然可以相当确定地进行更改)。

免责声明 :我还没有实现这样的事情,所以我可能完全不合时宜;)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM