首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C语言编程: windows下启动外部应用程序

C语言编程: windows下启动外部应用程序

作者头像
DS小龙哥
发布2022-01-07 15:51:47
发布2022-01-07 15:51:47
1.5K0
举报

一、方式1: system

代码语言:javascript
复制
#include <stdlib.h>

system("ping 127.0.0.1");

阻塞等待程序执行完再退出.

二、方式2: WinExec

代码语言:javascript
复制
#include<windows.h>
#include<shellapi.h>
#include<stdio.h>
#include<string.h>
WinExec("ping 127.0.0.1", SW_SHOWNOACTIVATE);

调用完立即返回。

三、方式3: CreateProcess

代码语言:javascript
复制
#include<windows.h>
#include<shellapi.h>
#include<stdio.h>
#include<string.h>
STARTUPINFO si;
PROCESS_INFORMATION pi;
LPTSTR szCmdline=_wcsdup(TEXT("ping 127.0.0.1"));
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWindow成员有效
si.wShowWindow = TRUE; // FALSE,此成员设为TRUE的话则显示新建进程的主窗口
BOOL bRet = CreateProcess(
			NULL,	// 不在此指定可执行文件的文件名
			szCmdline,// 命令行参数
			NULL,	// 默认进程安全性
			NULL,	// 默认进程安全性
			FALSE,	// 指定当前进程内句柄不可以被子进程继承
			CREATE_NEW_CONSOLE,	// 为新进程创建一个新的控制台窗口
			NULL,	// 使用本进程的环境变量
			NULL,	// 使用本进程的驱动器和目录
			&si,
			&pi);

if (bRet)
{
	WaitForSingleObject( pi.hProcess, INFINITE );
	// 不使用的句柄最好关掉
	CloseHandle(pi.hThread);
	CloseHandle(pi.hProcess);
	qDebug("新进程的ID号:%d\n", pi.dwProcessId);
	qDebug("新进程的主线程ID号:%d\n", pi.dwThreadId);
}

功能更加强大,可以隐藏控制台弹窗,可以等待进程执行完毕。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、方式1: system
  • 二、方式2: WinExec
  • 三、方式3: CreateProcess
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档