1. 程式人生 > >【vs2015】C++ 程式執行並等待程序結束

【vs2015】C++ 程式執行並等待程序結束

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 line)
				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.效果


相關推薦

vs2015C++ 程式執行等待程序結束

1.VS2015 新建專案->win32 控制檯應用程式 以下操作實現跨平臺 (1).配置屬性-常規-MFC的使用->使用標準Windows庫或者在靜態庫中使用MFC (2).配置屬性-c/c++-程式碼生成-執行庫->多執行緒(/MT) 2.標頭檔案

LinuxC++程式開發與除錯

gcc的基本用法 g++ 與 gcc的關係: Linux的gcc和g++的區別 用gcc編譯C++檔案 anyway,還是用g++吧 假設有一個原始檔為main.cc #include <iostream> int main(int args, char** argv

opencv獲取程式執行時間

double t = (double)getTickCount(); // do something ...返回該處程式碼執行所耗的時間,單位為秒 t = ((double)getTickCount(

VS2015c++實現windows系統版本、型別、語言識別

 一、VS2015 新建專案->win32 控制檯應用程式 1.以下操作實現跨平臺 (1).配置屬性-常規-MFC的使用->使用標準Windows庫或者在靜態庫中使用MFC (2).配置屬性-c/c++-程式碼生成-執行庫->多執行緒(/MT) 二.

VS2010C++多執行緒同步與互斥簡單運用

繼以往的想法,寫這點文字,貼上點程式碼,是為了增加自己的記憶,也希望能幫助到需要幫助的人。 1.  互斥量,Mutex #include <Windows.h> #include <iostream> usingnamespace

gettimeofday測試程式執行時間

轉自:https://blog.csdn.net/u013806583/article/details/58127067普通的C程式已經驗證,核心模組的暫時還沒有驗證在測試程式時,往往需要了解程式執行所需的時間,在C語言中可以使用函式gettimeofday來得到時間。來不及

AndroidAndroid程式退出徹底關閉程序的方法

 因為發現光呼叫finish()方法後 程式中所啟動的執行緒依舊在後臺執行——Android的特點之一——否則也不會出現諸多用於關閉程序的工具。搜尋了相關資料,大致有以下幾種方法可以用於完全關閉程序的方式。其中第一種方法作者已經用過,的確是可行的。     第一

C#獲取當前程式執行路徑的方法集合

//獲取當前程序的完整路徑,包含檔名(程序名)。 string str = this.GetType().Assembly.Location; result: X:\xxx\xxx\xxx.exe (.exe檔案所在的目錄+.exe檔名) //獲取新的 Process 元件並將其與當前活動的程序關聯的主模組的

C# Linq 交集、集、差集、去重

log .cn pre tin nio clas int except post 轉自: https://www.cnblogs.com/wdw31210/p/4167306.html using System.Linq; List<string&

Linux C 程式執行 shell 命令獲取返回結果的方法

據說有統計資料表明,程式碼的缺陷率是一定的,與所使用的語言無關。Linux提供了很多的實用工具和指令碼,在程式中呼叫工具和指令碼,無疑可以簡化程式,從而降低程式碼的缺陷數目。Linux shell 指令碼也是一個強大的工具,我們可以根據需要編制指

Programa.Net 並行執行程式的使用心得

一、摘要 官方介紹:提供對並行迴圈和區域的支援。 名稱空間:using System.Threading.Tasks 三個靜態方法:Parallel.Invoke,Parallel.For,Parallel.ForEach 常用到的引數型別:ParallelLoopResult,ParallelOpt

NOI2015BZOJ4195程式自動分析(查集+離散化)

演算法:離散化+並查集 難度:NOIP 首先,易證(資料範圍:10^9那麼大,如果開一個10^9的fa陣列的話,空間肯定超限),此題需要離散化----->方法 all in all,離散化有

面試每個程式設計師都會遇到的面試問題:談談程序執行緒的區別

當你剛入職場時,無論你是用C++還是Java甚至只是應聘運維崗位,相信你都會遇到這個問題。 這是一個很基礎的問題,但又是一個很考驗人水平的問題。 說基礎是因為每個學計算機的人都應該懂,程序執行緒是計算機的基礎概念,是每個程式設計師時時刻刻都要接觸的東西。 但這又是一個充

vscode除錯執行c#詳細操作過程

 【轉】vscode除錯執行c#詳細操作過程 主要命令: //路徑跳轉cd  //新建專案dotnet new console -o 路徑    //執行dotnet run    //用於釋出exe<RuntimeIdentifie

JAVA基礎:執行緒、IO流、如何打包成可安裝 exe 程式

1.執行緒 程序是一個可以獨立執行的程式單位,執行緒就是一個輕量級的程序。 自定義執行緒的方法: 1.繼承Thread類,重寫Thread類中的run方法,建立繼承類物件,呼叫執行緒的start()方法。 2.實現Runnable介面,重寫run方法,建立實現類物件,建立執行緒類物

收藏C#中的多執行緒——執行緒同步基礎

第二部分:執行緒同步基礎 同步要領 下面的表格列展了.NET對協調或同步執行緒動作的可用的工具: 簡易阻止方法 構成 目的 Sleep 阻止給定的時間週期 Join 等待另一個執行緒完成 鎖系統 構成 目的 跨程序?

Java四個執行緒訪問同一陣列作出相應修改

需求是開四個執行緒訪問一個Vector(因為Vector是執行緒安全的),取得Vector的資訊,這個資訊是要一段時間進行處理,就是說,取得資訊訪問之後,可能這個資訊還沒有處理完,所以要先等一等,先取得取得Vector下一個元素再訪問。 現在我遇上的問題是

JavaJava程式打包成jar包在Linux上執行

 當需要把在Windows上開發的Java程式用在Linux上執行時,就需要吧該Java程式打包成jar包上傳到Linux上去執行。 1.Java程式用MyEclipse打包成可執行的jar包 (1)

轉載pyqt5程式使用py2exe打包後執行時報找不到Qt platform plugin ‘windows’錯誤

pyqt5程式使用py2exe打包後執行時報找不到Qt platform plugin ‘windows’錯誤 現象描述: 64位windows系統下直接將pyqt5的plugins下的platforms資料夾複製到exe相同目錄即可,但在32位系統下一直報找不到Qt

C#自定義控制元件:WinForm將其它應用程式窗體嵌入自己內部

PS:文末的附件已更新,這次我放到部落格園裡面了,不會彈出廣告,放心下載,O(∩_∩)O謝謝! 這是最近在做的一個專案中提到的需求,把一個現有的窗體應用程式介面嵌入到自己開發的窗體中來,看起來就像自己開發的一樣(實際上……跟自己開發的還是有一點點區別的,就是內嵌程式和宿