在 Unix 系统上,询问用户编辑某些足够复杂的文本的一种常见方式是打开在
VISUAL
或者 EDITOR
环境变量中指定的编辑器,并将该编辑器指向一个初始化了所需编辑内容的临时文件。那么在 Windows 系统上,是否有类似这种模式的解决方案呢?如果有,它是如何工作的呢?VISUAL
或者 EDITOR
环境变量中指定的编辑器,并将该编辑器指向一个初始化了所需编辑内容的临时文件。那么在 Windows 系统上,是否有类似这种模式的解决方案呢?如果有,它是如何工作的呢?if( (INT_PTR)ShellExecute( NULL, "open", "config.json", NULL, NULL, SW_SHOWDEFAULT) <= 32 )
if( (INT_PTR)ShellExecute( NULL, "open", "notepad.exe", "config.json", NULL, SW_SHOWDEFAULT) <= 32 ){
MessageBox( ourHwnd, "Fail to open editor. Please edit config.json", "Error", MB_ICONERROR );
}
这将首先尝试像Windows一样打开“config.json”,就像用户双击它一样。 我假设如果用户有喜欢的文本编辑器,他/她会将该编辑器与*.json、*.txt和其他文本文件相关联。 如果失败了,那么就用“config.json”作为参数启动记事本。 这不应该失败,但我曾经看到过用户删除记事本以腾出硬盘空间,所以它可能会失败,如果失败了,那么只需显示错误消息。
根据微软文档ShellExecute
可以将“edit”作为第二个参数。因此,似乎存在或计划了这样的功能,但我不知道用户更改Windows中的编辑操作的任何选项。所以我不会使用它。