您的位置:首页 > 编程语言 > C语言/C++

【vs2015】C++ 程序运行并等待进程结束

2016-09-21 17:45 603 查看


1.VS2015 新建项目->win32 控制台应用程序

以下操作实现跨平台
(1).配置属性-常规-MFC的使用->使用标准Windows库或者在静态库中使用MFC
(2).配置属性-c/c++-代码生成-运行库->多线程(/MT)



2.头文件stdafx.h

// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//

#pragma once
//#define _AFXDLL
#include "targetver.h"

#include <stdio.h>
#include <tchar.h>

// TODO:  在此处引用程序需要的其他头文件

#include <afxwin.h>         // MFC core and standard components
#include <SetupAPI.h>
#pragma comment(lib, "Setupapi.lib")



3.主程序ConsoleApplication5.cpp

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
int main()
{
LPTSTR buffer = _T("demo1,demo2,demo3");
printf("dev_ID=%S \n", buffer);
if (buffer)
{

LPTSTR demo = _T("demo2");

if (_tcsstr(buffer, demo))
{
printf("Detect demo2  !!!!!!\n");

STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
LPTSTR szCmdline = _tcsdup(TEXT("Driver\\demo\\Setup.exe"));
// Start the child process.
if (!CreateProcess(NULL,   // No module name (use command l
4000
ine)
szCmdline,        // Command line
NULL,           // Process handle not inheritable
NULL,           // Thread handle not inheritable
FALSE,          // Set handle inheritance to FALSE
0,              // No creation flags
NULL,           // Use parent's environment block
NULL,           // Use parent's starting directory
&si,            // Pointer to STARTUPINFO structure
&pi)           // Pointer to PROCESS_INFORMATION structure
)
{
printf("CreateProcess failed (%d).\n", GetLastError());
/*return 0;*/
exit(0);
}

// Wait until child process exits.
WaitForSingleObject(pi.hProcess, INFINITE);

// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);

printf(" demo Install Finished  !!!!!!\n");

}
/*-------------demo end-----------------*/
}
return 0;
}

4.效果




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: