如何解决用不同的文本编辑器打开文件
| 显然这应该是可能的。例如,使用NOTEPAD或HxD打开和处理文件。但是,它们不是所有的文本文件吗?如何使用WINDOWS API来指定哪个文本编辑器打开文件并对该文件进行操作。它肯定不在\“ CreateFile \”中。解决方法
希望我能理解您的问题...最简单的方法是启动所需的编辑器并将文件名作为参数传递,而不是“调用”文件(它将启动与程序关联的默认程序)文件类型)。
例如,
notepad.exe mytextfile.txt
或gvim.exe mytextfile.txt
。
如果编辑器不在您的ѭ2上,则需要使用完整的路径文件名。
,您到底想做什么?你可以:
维护一个您希望安装的编辑器列表,并在系统的PATH中包含条目(不好的主意)
有一个要使用的编辑器,查询Windows注册表以找到编辑器的安装路径(使用RegGetValue
),并使用CreateProcess
启动编辑器(更好的主意)
查询注册表以获取给定文件类型的默认编辑器,然后使用CreateProcess
启动该编辑器。 (最好的主意)
但这完全取决于您的目标是什么。
根据需求进行编辑
因此,就在C ++的同一页面上,您想要:
在C ++应用程序中使用命令行参数(文件名)
在任意编辑器中打开该文件
检测用户何时对该文件进行了更改
操作文件内容
那是对的吗?
如果是这样,您可以:
使用Boost库来计算文件中当前数据的CRC
使用我最初描述的方法之一启动编辑器
坚持紧紧的循环和sleep
,这样您就不会浪费资源,而最初计算的CRC与循环的每次迭代计算的CRC匹配
当然,您需要处理各种问题(这只是描述我可能使用的算法的一种非常简单的方法),例如:
如果用户不更改文件怎么办?
如果找不到该文件怎么办?
我敢肯定有很多不同的方法可以做到这一点,但这是我目前可以想到的最简单的方法(尽管仍然可以相当确定地进行更改)。
免责声明:我还没有实现这样的事情,所以我可能完全不合时宜了;)
,您是否正在Windows上寻找ShellExecute()
或ShellExecuteEx()
API?他们将启动为文件注册的任何程序(通常基于文件名扩展名)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。