收录日期:2020/10/23 11:02:25 时间:2016/07/04 16:42:50 标签:C++ 语言
BOOL CreateProcess(
  LPCTSTR lpApplicationName,
  LPTSTR lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL bInheritHandles,
  DWORD dwCreationFlags,
  LPVOID lpEnvironment,
  LPCTSTR lpCurrentDirectory,
  LPSTARTUPINFO lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);
lpApplicationName和lpCurrentDirectory到底怎么合用?
lpCurrentDirectory这个的具体意思
顶一下
lpApplicationName 你要调用应用程序啊;
lpCurrentDirectory 应用程序的目录;
你没有MSDN吗?
你能举个例子 吗?
我看了好多遍也试了好多。都没法啊
建议你看看《Windows核心编程》吧。
DWORD ExecuteProcess(std::string &exeString, std::string &outFile)
    {
      int  iReturnVal = 0;
      DWORD dwExitCode;
      STARTUPINFO siStartupInfo = {0};
      PROCESS_INFORMATION piProcessInfo = {0};
      siStartupInfo.cb = sizeof(siStartupInfo);
      exeString.append(" >> ");
      exeString.append(outFile.c_str());

//  siStartupInfo.dwFlags   =   STARTF_USESHOWWINDOW;     //????????   
//  siStartupInfo.wShowWindow   =   SW_HIDE;   


  /* Execute */
      if( !CreateProcess( NULL,   // No module name (use command line)
        LPSTR(exeString.c_str()),     // Command line
        NULL,           // Process handle not inheritable
        NULL,           // Thread handle not inheritable
        FALSE,          // Set handle inheritance to FALSE
        IDLE_PRIORITY_CLASS,              // Set low priority for process
        NULL,           // Use parent's environment block
        NULL,           // Use parent's starting directory 
        &siStartupInfo, // Pointer to STARTUPINFO structure
        &piProcessInfo )  // Pointer to PROCESS_INFORMATION structure
        ) 
      {
        dwExitCode = GetLastError();
        printf( "CreateProcess failed (%d)\n", dwExitCode );
        return dwExitCode;
      }
      // Wait until child process exits.
      WaitForSingleObject( piProcessInfo.hProcess, INFINITE );
      /* Release handles */
      CloseHandle(piProcessInfo.hProcess);
      CloseHandle(piProcessInfo.hThread);

      return iReturnVal;
    };
不是 ,大家看看我的代码:


string strJDPath = iter->strPath+"\\"+iter->strName+".exe";
//使用绝对路径
//BOOL bRet = CreateProcess(strJDPath.c_str(), NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi);

//使用相对路径
BOOL bRet = CreateProcess( (iter->strName+".exe").c_str(), NULL, NULL, NULL, FALSE, NULL, NULL, iter->strPath.c_str(), &si, &pi);


我的代码有两种路径,第一种是绝对路径,第二种是相对路径。
绝对路劲对于进程不牵涉别的路径时可以正常运行,可一旦此进程里面包含了别的需要读路径的时候就出问题了。

而相对路径可以解决这个问题。单同时相对路径又出现一个问题,就是一会正常一会又不正常。真时不明白为什么了?
顶一下。望大虾
在别的地方是不是改变了当前的工作目录,导致出现不一致的情况?
我前几天的一个程序就是因为在别的线程中改变了当前工作目录,导致文件读取错误。
不会啊。我都是保存好了的。怎么可能改变呢?
在用相对路径前,试试GetCurrentDirectory,检查路径是否正确
这个函数不是很简单嘛?没啥困难啊

C/C++交流群10764613欢迎大侠加入 急!!!kingzai看到进来 关于文件下载 看一下这个问题。。。 求最短路径的常用算法有哪些 花了大约两个月做了这个咚咚,请大家帮忙测试一下 花了大约两个月做了这个咚咚,请大家帮忙测试一下 一问 在LINUX中哪个文件和WINDOWS中的HOTS一样的? 多线程与绑定CPU 调查:asp,jsp,php,asp.net希望大家支持 上海浦东网络公司-招募网络应用开发人才 关于男人的每天早上起床以后......[走过路过必看] 有个题请大家帮忙看看! 我用javabean写的javamail总是出错(有分) 请问如何在模拟器中设置串口,就是模拟使用计算机的串口 求助电子教鞭的实现 VB+access数据录入问题,人民币500元酬谢!(广州地区) 求助一个.sql文件,是关于两表更新的。 请问深入学习C++看哪本书比较好啊? 我知道进程ID后怎样获得进程的路径 爱情发展历程以及时间进度表(欢迎gg和mm来灌水) 窗体显示的问题,大家来强分 applet中如何载入.jar格式的包? 这种报表怎样做? 关于StringGrid的一点点小问题 刚完成的一个.NET项目,请大家来测试,找到BUG送分 :D Fw: 要星星吗....... RegisterHotKey和UnregisterHotKey非常占用CPU该怎么解决 菜鸟请教,帮我看看是什么错误???