如何用c ++打开文件(记事本除外)

时间:2012-11-04 19:05:29

标签: c++ system

我想知道如何打开记事本以外的文件...我们的教授给了我们一个例子:

s = "notepad.exe test.txt";
system(s.c_str());  

这将打开文件类型“notepad.exe”,文件名为“test.txt”

主要问题:

现在,我想知道是否有办法打开其他类型的文件,例如Microsoft Excel,Microsoft Word,Visual Studio或7zip。

我的尝试在新的cmd.exe中打开了一些内容(因为START关键字):

fileNeededtoBeOpened = "START \"New Microsoft Office Excel Worksheet.xlsx\"";
system(fileNeededtoBeOpened.c_str());   

(这段代码与我的原始代码略有不同,我试图从矢量中打开一个文件......)但我真正需要知道的是“notepad.exe”或“START”在那里用于打开不是.txt

的不同文件类型的其他命令

另外,旁注,我在互联网上读到使用system()打开文件是不安全的,这是正确的吗?

我自己找到答案......对于那些好奇的人,这里有一个答案:

  • 打开文本文件:system(notepad)
  • 打开excel文件:system(start excel)
  • 打开word doc文件:system(start winword)
  • 打开7z文件:system(start 7zFM)
  • 打开visual studio文件:system(start devenv)

4 个答案:

答案 0 :(得分:5)

我觉得你很困惑。

系统像在命令行上一样执行命令(在开始菜单下键入cmd进入运行提示符以获取该命令)。

因此,当您输入notepad.exe test.txt时,它会说:

  

打开系统路径上的程序notepad.exe(所以   命令行可以找到它执行该程序),并传递   参数test.txt到它。

记事本本身决定如何处理test.txt,在这种情况下,它会打开它。

因此,您可以告诉它运行任何命令(程序/可执行文件)并将任何参数传递给它。如果你的系统路径上有excel,你可以输入excel.exe从系统命令打开它。否则,找到安装了excel的位置,并使用excel.exe的完整路径引用它,它将正常工作。

例如,在我的计算机上,执行“C:\ Program Files \ Microsoft Office \ Office12 \ EXCEL.EXE”将从命令行打开excel。我可以通过在Excel.exe“部分之后获得更多信息(如文件名)来传递更多参数,就像在记事本示例中所做的那样。在执行该行时,使用系统命令应该具有等效行为。

答案 1 :(得分:2)

如果您只针对Windows系统,则可以使用ShellExecuteEx函数(Win32 API的一部分)。您只需将文件名传递给它,它就会启动注册程序以处理该文件类型(就像您从Windows资源管理器中打开文件一样)。 MSDN上提供了文档: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762154(v=vs.85).aspx

Launching Applications (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO) MSDN文章中有一些例子,互联网上还有很多其他例子。

答案 2 :(得分:1)

正如其他人提到的,系统函数只执行一个cmd命令,默认情况下,notepad.exe在系统的路径中,所以它直接工作 但是对我来说,如果我想在桌面上打开一个zip文件,我会输入类似

的内容
"C:\Program Files\7-Zip\7zFM.exe" Desktop\zipfile.zip

当我目前在我的用户目录[默认]或

"C:\Program Files\7-Zip\7zFM.exe" C:\Users\JiMMaR\Desktop\zipfile.zip

[其中JiMMaR是我在Windows 7上的用户名] 请注意,此特定命令仅适用于Windows,如果您使用的是另一个操作系统,则无法正常工作

尝试做一个

fileNeededtoBeOpened = "\"C:\Program Files\7-Zip\7zFM.exe\" C:\Users\YOUR_USER_NAME\Desktop\zipfile.zip";

并查看是否执行

编辑: 如果你无法逃避这个空间,那么试试这个

fileNeededtoBeOpened = "C:\Program~1\7-Zip\7zFM.exe C:\Users\YOUR_USER_NAME\Desktop\zipfile.zip";

答案 3 :(得分:0)

好的,首先 - system - 是一个为您的程序启动单独进程的函数。与键入命令时的命令窗口大致相同。您提供的命令行将取决于您要启动的应用程序。

  

现在,我想知道是否有办法打开其他类型的文件,   例如Microsoft Excel,Microsoft Word,Visual Studio或7zip。

是的,如果您没有指定在启动时在这些应用程序中加载文档的命令行参数,我会非常震惊。 (好吧没有震惊,但它很标准)

这与c ++有什么关系 - 不是真的 - 你需要查看你提到的应用程序的引用,看看命令行的参数是什么。然后制作一个字符串system(...)到你心中。