• vc 打开外部线程并等待结束


    CreateProcess

    lpApplicationName:指向一个以空结尾的串,他指定了要执行的模块 ***此参数为空时命令行参数才能正常传递*** 想运行的可执行文件的名字的字符串(应含扩展名)。如果找不到该文件,CreateProcess运行失败。应该设为NULL。
    
        lpCommandLine:指向一个以空结尾的串,该串定义了要执行的命令行.传递给新进程的命令行字符串,应当为非常量字符串的地址。可以设定一个完整的命令行,如果第一个标记没有扩展名,CreateProcess将其假设为.exe。如果找不到该文件,CreateProcess按环境设置目录搜索运行。
    
        lpProcessAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承.
    
        lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承.
    
        bInheritHandles,:表明新进程是否从调用进程继承句柄.
    
        dwCreationFlags:定义控制优先类和进程创建的附加标志.
    
        lpEnvironment:指向一个新进程的环境块.
    
        lpCurrentDirectory:指向一个以空结尾的串,该串定义了子进程的当前驱动器和当前目录.
    
        lpStartupInfo:指向一个STARTUPINFO结构,该结构定义了新进程的主窗口将如何显示.
    
        lpProcessInformation:指向PROCESS_INFORMATION结构,该结构接受关于新进程的表示信息.
    

    使用

            //WinExec(path.c_str(), SW_SHOW); 
    	//HINSTANCE instance = ShellExecute(NULL, "open", path.c_str(), NULL, NULL, SW_SHOWNORMAL);
    
    	STARTUPINFO si;
    	PROCESS_INFORMATION pi;
    
    	ZeroMemory(&pi, sizeof(pi));
    	ZeroMemory(&si, sizeof(si));
    	si.cb = sizeof(si);
    
    	auto desPath = path + " " + parameter;
    	//WinExec("explorer E:\work\code\AutoUpdate\AutoUpdate\AutoUpdate\Debug\win7sp1.msu", SW_SHOWNA);
    
    	if (CreateProcess(NULL, (LPSTR)desPath.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    		//if (CreateProcess(path.c_str(), (LPSTR)parameter.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    		//if (CreateProcess(path.c_str(), _T("E:\work\code\AutoUpdate\AutoUpdate\AutoUpdate\Debug\win7sp1.msu"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    	{
    
    	}
    	else {
    		//创建失败
    	}
    
    	//等待程序执行结束:
    	WaitForSingleObject(pi.hProcess, INFINITE);
    
    	CloseHandle(pi.hProcess);
    	CloseHandle(pi.hThread);
    
    留待后查,同时方便他人
    联系我:renhanlinbsl@163.com
  • 相关阅读:
    vue-element 时间选择器datepicker 第二次展示change无效,数据刷新页面不刷新
    uniapp
    mysql
    python
    pycharm
    从maven的debug compile到java的编译时注解(与springboot项目整合)
    关于H5+实现APP检查自动更新与 调用 plus.runtime.install 弹出不了安装界面问题
    Linux常用命令
    mybatis中sql语句必须用${}而不能不用#{}的情况
    Mybatis映射文件中的参数传递
  • 原文地址:https://www.cnblogs.com/ives/p/15237173.html
Copyright © 2020-2023  润新知