C语言编程: windows下启动外部应用程序
【摘要】
一、方式1: system
#include <stdlib.h> system("ping 127.0.0.1");
阻塞等待程序执行完再退出.
二、方式2: WinExec
#include<windows.h>#include<shellapi.h>#includ...
一、方式1: system
-
#include <stdlib.h>
-
-
system("ping 127.0.0.1");
阻塞等待程序执行完再退出.
二、方式2: WinExec
-
#include<windows.h>
-
#include<shellapi.h>
-
#include<stdio.h>
-
#include<string.h>
-
WinExec("ping 127.0.0.1", SW_SHOWNOACTIVATE);
调用完立即返回。
三、方式3: CreateProcess
-
#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);
-
}
功能更加强大,可以隐藏控制台弹窗,可以等待进程执行完毕。
文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。
原文链接:xiaolong.blog.csdn.net/article/details/118964303
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)