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

举报
DS小龙哥 发表于 2021/12/09 23:04:37 2021/12/09
【摘要】 一、方式1: system #include <stdlib.h> system("ping 127.0.0.1");   阻塞等待程序执行完再退出. 二、方式2: WinExec #include<windows.h>#include<shellapi.h>#includ...

一、方式1: system


  
  1. #include <stdlib.h>
  2. system("ping 127.0.0.1");

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

二、方式2: WinExec


  
  1. #include<windows.h>
  2. #include<shellapi.h>
  3. #include<stdio.h>
  4. #include<string.h>
  5. WinExec("ping 127.0.0.1", SW_SHOWNOACTIVATE);

调用完立即返回。

三、方式3: CreateProcess 


  
  1. #include<windows.h>
  2. #include<shellapi.h>
  3. #include<stdio.h>
  4. #include<string.h>
  5. STARTUPINFO si;
  6. PROCESS_INFORMATION pi;
  7. LPTSTR szCmdline=_wcsdup(TEXT("ping 127.0.0.1"));
  8. ZeroMemory( &si, sizeof(si) );
  9. si.cb = sizeof(si);
  10. ZeroMemory( &pi, sizeof(pi) );
  11. si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWindow成员有效
  12. si.wShowWindow = TRUE; // FALSE,此成员设为TRUE的话则显示新建进程的主窗口
  13. BOOL bRet = CreateProcess(
  14. NULL, // 不在此指定可执行文件的文件名
  15. szCmdline,// 命令行参数
  16. NULL, // 默认进程安全性
  17. NULL, // 默认进程安全性
  18. FALSE, // 指定当前进程内句柄不可以被子进程继承
  19. CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口
  20. NULL, // 使用本进程的环境变量
  21. NULL, // 使用本进程的驱动器和目录
  22. &si,
  23. &pi);
  24. if (bRet)
  25. {
  26. WaitForSingleObject( pi.hProcess, INFINITE );
  27. // 不使用的句柄最好关掉
  28. CloseHandle(pi.hThread);
  29. CloseHandle(pi.hProcess);
  30. qDebug("新进程的ID号:%d\n", pi.dwProcessId);
  31. qDebug("新进程的主线程ID号:%d\n", pi.dwThreadId);
  32. }

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

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/118964303

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。