0

在使用 winapi 在 ac 程序中完成操作后,我试图向用户显示一个文本文件,但我希望使用记事本(或默认文本处理器应用程序)打开该文件。如何使用 winapi 执行此操作(使用窗口的默认应用程序打开文本文件)?

4

2 回答 2

7

ShellExecute()是您正在寻找的,例如:

#include <shellapi.h>

ShellExecute(NULL, NULL, "C:\\path\\to\\myfile.txt", NULL, NULL, SW_SHOWNORMAL);
于 2013-07-02T05:41:07.287 回答
2

给定一个文件test.txt,你可以notepad在 Windows 上显示它:

#include <stdlib.h>  

int main () {
    system ("notepad test.txt");
    return 0;
}

如果您可以确定您的程序将默认使用cmdshell,您可以说system ("test.txt"),文件将在任何设置为默认值的文本编辑器中打开,但指定编辑器更安全,因为它处理诸如在下编译的程序之类的情况Cygwin,默认的 shell 将是sh,当您在命令提示符处提供文件名时,默认情况下它不会打开文本文件。

如果您不能确定您的程序将始终在 Windows 上编译,那么我会支持ShellExecute()@Remy Lebeau 概述的解决方案。包含#include <shellapi.h>和调用的程序ShellExecute()将无法在非 Windows 系统上编译(从而预先排除错误),而我的解决方案在非 Windows 系统上编译,但在运行时system()调用时会失败。

于 2013-07-02T05:17:20.480 回答