Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用不同的文本编辑器打开文件_C++_Editor_Readfile_Createfile - Fatal编程技术网

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

C++ 使用不同的文本编辑器打开文件,c++,editor,readfile,createfile,C++,Editor,Readfile,Createfile,显然这应该是可能的。例如,使用记事本或HxD打开和操作文件。但是,它们不都是文本文件吗?如何指定使用WINDOWS API打开文件并对文件进行操作的文本编辑器。它当然不在“CreateFile”中。希望我能理解你的问题。。。最简单的方法是启动所需的编辑器并将文件名作为参数传递,而不是“调用”文件(这将启动与文件类型关联的默认程序) 例如,notepad.exe mytextfile.txt或gvim.exe mytextfile.txt 如果编辑器不在您的%PATH%上,则需要使用完整路径文件名

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

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

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


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

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

  • 维护一个您希望安装的编辑器列表,并在系统路径中为其设置条目(坏主意)
  • 拥有一个或多个要使用的编辑器,查询Windows注册表以查找编辑器的安装路径(使用
    RegGetValue
    ),然后使用
    CreateProcess
    )启动编辑器(这是一个更好的主意)
  • 查询注册表以获取给定文件类型的默认编辑器,然后使用
    CreateProcess
    启动该编辑器。(好主意)
  • 但这完全取决于你的目标到底是什么

    根据要求进行编辑

    <>所以,我们在同一个页面,从C++,你想:

  • 将命令行参数取给C++应用程序(文件名)
  • 在任意编辑器中打开该文件
  • 检测用户何时对该文件进行了更改
  • 对文件内容进行操作
  • 对吗

    如果是,你可以:

  • 用于文件中的当前数据
  • 使用我最初描述的方法之一启动编辑器
  • 坚持紧循环和
    睡眠
    ,这样当最初计算的CRC与循环每次迭代计算的CRC匹配时,就不会占用资源
  • 当然,您必须处理各种各样的问题(这只是描述我可能使用的算法的一种非常简单的方式),例如:

  • 如果用户不更改文件,会发生什么情况
  • 如果找不到该文件,会发生什么情况
  • 我确信有很多不同的方法可以做到这一点,但这是目前我能想到的最简单的方法(同时仍然能够相当肯定这些变化)


    免责声明:我还没有实现类似的东西,所以我可能完全不正确;)

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

    文件本身不能嵌入在第一次/下一次编辑时应使用哪个编辑器的规范,除非可以为其提供与特定编辑器相关联的文件扩展名。