zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    晶振故障原因
    国外被疯赞的一篇神文:你该增加人生技能了(转)
    Python学习笔记-Day27-正则表达式
    Python学习笔记-Day25-模块(hashlib、configpaser,logging)
    Python学习笔记-Day24-collections模块
    Python学习笔记-Day23-模块(时间、随机数、sys、os)
    Python学习笔记-Day22-内置方法及序列化模块
    Python学习笔记-Day21-反射、__str__、__repr__
    @classmethod 与 @staticmethod
    @property(setter、deleter)将类中的方法伪装成属性
  • 原文地址:https://www.cnblogs.com/ives/p/15237173.html
Copyright © 2011-2022 走看看