gpt4 book ai didi

c++ - 打开文件以在 C++ 中显示内容

转载 作者:可可西里 更新时间:2023-11-01 14:52:09 30 4
gpt4 key购买 nike

关于使用 C++ 打开文件(任何类型的文件),我有 2 个问题要问。我目前正在开发一个 GUI 程序,我想添加一个 txt 格式的更新日志。我还希望我的程序中有一个菜单,可以使用每个用户都安装的默认文本编辑器打开那个 changelog.txt,或者简单地把它打开那个文本文件。请记住,我想在输入/输出程序中打开文件进行显示 NOT。我知道我可以使用

system("notepad.exe filepath.txt");

或使用预设程序打开它们:

system("filepath.txt");

问题是这两个都在记事本后面打开命令行。我知道还有另一个命令可以使用名为 CreateProccess() 的 Win32 API 打开文件,但我的编译器无法识别该命令 (OpenWatcom W32)。所以这是我的问题:

1) 在使用 system 命令时,是否有任何其他命令可以打开文件,或者有什么方法可以阻止命令行打开?

2) 在 Windows 中如何定义文本文件在当前程序文件夹中?我的意思是,与其提供会因用户而异的整个文件路径,还有什么方法可以“告诉”程序该文件始终位于程序所在的当前文件夹中?

对于任何错误,我深表歉意,如果您需要任何澄清,请告诉我。

最佳答案

CreateProcess 是在这里使用的错误函数。这将需要您决定运行哪个进程。用户可能更喜欢使用记事本以外的文本编辑器,我知道我喜欢!在 Windows 上执行此操作的正确方法是要求 shell 使用用户与文件相关联的任何程序打开文件。 ShellExecute函数执行此操作。

这样调用它:

ShellExecute(
MainWindowHandle,
"open",
FullyQualifiedTextFileName,
NULL,
NULL,
SW_SHOWNORMAL
);

您需要包含 Shellapi.h 头文件并链接到 Shell32.lib 库。如果您的编译器不包含这些文件,如果是这种情况我会感到惊讶,那么您可以从 Platform SDK 中获取它们。也就是说,如果您认真对待在 Windows 上进行编程,您应该获得一个可以让您访问 Windows API 的工具。

我确实建议您使用完全限定的路径来完成这样的任务。由于您的文本文件位于与可执行文件相同的目录中,因此您只需将该目录连接到您的文本文件名即可。通过调用 GetModuleFileName 获取可执行文件的完整路径为 hModule 参数传递 NULL

关于c++ - 打开文件以在 C++ 中显示内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243897/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com