qq_41747698 2021-10-28 17:32 采纳率: 75%
浏览 44
已结题

C++shellexecute 路径切换后运行exe无反应

想用c++启动一个python的exe,但该exe依赖一个exe所在路径下的一个文件夹,
现用shellexecute并setcurrentdirectoryA切换路径后发现这个exe还是只能在绝对路径下运行,一旦切换到相对路径D:/ocrdll/,即exe_path(exe所在的文件夹路径)程序直接退出,请问原因是什么,路径不正确吗,应该如何正确设置

bool ocr::data_gen(LPCWSTR exe_path){//LPCSTR exe_path) {
    
    TCHAR chCurDir[MAX_PATH] = { 0 };
    GetCurrentDirectory(MAX_PATH, chCurDir);
    SetCurrentDirectoryA(exe_path);
    //check path;check file name
    DWORD dwAttributes = ::GetFileAttributesA(exe_path);
    //strcat(StrPath, "\\StorServer.exe");
    printf("current working directory: %s\n", _getcwd(NULL, NULL));
    if (INVALID_FILE_ATTRIBUTES == dwAttributes)
    {
        cout << "no file found" << "\n";
        return false;
    }
    
    ShellExecute(NULL, L"open", L"./data_gen_10.exe", NULL, NULL//此处改exe_path无效, SW_SHOW);
    //SetCurrentDirectory(chCurDir);
    return true;
}

void main(int argc, char** argv) {
    ocr read;
    read.train_exe("D:/ocr_dll");
    //read.data_gen("D:/ocr_dll");
    system("pause");
}

  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月4日
  • 已采纳回答 11月1日
  • 修改了问题 10月28日
  • 创建了问题 10月28日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分