c++ - 如何在 vc++ 中执行从安装目录读取数据的应用程序

标签 c++ winapi

如何从 C++ 控制台应用程序执行 .exe。我尝试了以下方法均无效。

我想运行我之前创建的应用程序“Radio.exe”。这个应用程序在启动时读取一个 xml 文件,如果我手动运行这个应用程序它工作正常,但是如果通过控制台应用程序“Radio.exe”运行它找不到 xml 文件?

void execute( char* path)
{
    // cant find xml ?
    ShellExecuteA( NULL, NULL, path, NULL, NULL, SW_SHOW );

    // cant find xml ?
    ShellExecute(NULL, NULL, path, NULL, NULL, SW_SHOWNORMAL);

    // and also cant find xml ?
    SHELLEXECUTEINFO rSEI ={0};
    rSEI.cbSize=sizeof( rSEI );
    rSEI.lpVerb= NULL;
    rSEI.lpFile= "C:\\Users\\me\\Documents\\Radio.exe"; //  = path
    rSEI.lpParameters= 0;
    rSEI.nShow = SW_NORMAL;
    rSEI.fMask = SEE_MASK_NOCLOSEPROCESS;
    ShellExecuteEx( &rSEI );
}

最佳答案

你需要设置你的工作目录,lpDirectory:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx

您可能也应该将其设置为相对路径,这样您就不必提供绝对路径。

例子:

  • C:\projects\电台
  • C:\projects\Radio\radio.exe
  • C:\projects\Radio\radio.xml

假设生成 radio.exe 的程序位于项目目录中。您可以提供 Radio 目录作为相对路径。

关于c++ - 如何在 vc++ 中执行从安装目录读取数据的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11830633/

相关文章:

winapi - 如何只安装mt.exe?

c++ - std::string s1 {"Modern C++", 3} 与 std::string s1 {str, 3}

c++ - 确保内存映射页在内存中

windows - 哪种类型的特定访问权限 (ACCESS_MASK) 对 SE_LMSHARE 有效?

c++ - Box2D:断言失败且未加载 Wntdll.pdb

c++ - 使透明窗口不点击

c++ - 优化 Stack-Walking 性能

c++ - 如何将字符保存到字符数组中

c++ - C++/Qt 项目中的连接函数中不存在插槽? (已经重新运行 make)

用于检查类是否具有运算符/成员的 C++ 类型特征