创建进程
发布日期:2021-11-15 14:57:59 浏览次数:127 分类:技术文章

本文共 1974 字,大约阅读时间需要 6 分钟。

有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。

1.CreateProcess因为使用复杂,比较少用。
2.WinExec主要运行EXE文件。如:WinExec('Notepad.exe Readme.txt', SW_SHOW);
3.ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。

 

 

HINSTANCE ShellExecute(

  _In_opt_ HWND    hwnd,//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL
  _In_opt_ LPCTSTR lpOperation,//操作
  _In_     LPCTSTR lpFile,//要打开的文件名、执行的程序名、浏览的文件夹等。
  _In_opt_ LPCTSTR lpParameters,//可执行程序的参数,否则为 NULL
  _In_opt_ LPCTSTR lpDirectory,//默认目录
  _In_     INT     nShowCmd//显示类型
);
 

 

ShellExecute代码展示:ShellExecute((HWND)GetDesktopWindow(),_T("open"),_T("D:/DD Work/Supcon/CCTV/cctv_vs2008-z-1213/bin/cctv.exe"),_T("-p 100 100 -s 1000 1000"),_T("D:/DD Work/Supcon/CCTV/cctv_vs2008-z-1213/bin"),SW_SHOWNORMAL  );

createprocess调用展示	// TCHAR szCommandLine[] = TEXT("D:/DD Work/Supcon/CCTV/cctv_vs2008-z-1213/bin/cctv.exe -p 500 500 ");//或者WCHAR //   //LPWSTR szCommandLine = TEXT("NOTEPAD");//错误 //   //STARTUPINFO si = { sizeof(si) }; //   STARTUPINFO si; //   PROCESS_INFORMATION pi; //   ZeroMemory(&si, sizeof(si)); //   si.cb = sizeof(si); //   ZeroMemory(&pi, sizeof(pi)); // //   si.dwFlags = STARTF_USESHOWWINDOW;  // 指定wShowWindow成员有效 //   si.wShowWindow = TRUE;          // 此成员设为TRUE的话则显示新建进程的主窗口, //                       // 为FALSE的话则不显示 //   BOOL bRet = ::CreateProcess ( //       NULL,           // 不在此指定可执行文件的文件名 //       szCommandLine,      // 命令行参数 //       NULL,           // 默认进程安全性 //       NULL,           // 默认线程安全性 //       FALSE,          // 指定当前进程内的句柄不可以被子进程继承 //       CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口 //       NULL,           // 使用本进程的环境变量 //       NULL,           // 使用本进程的驱动器和目录 //       &si, //       &pi); // //   if(bRet) //   { //       WaitForSingleObject(pi.hProcess, INFINITE); //       // 既然我们不使用两个句柄,最好是立刻将它们关闭 //       ::CloseHandle (pi.hThread); //       ::CloseHandle (pi.hProcess); // //       printf(" 新进程的进程ID号:%d \n", pi.dwProcessId); //       printf(" 新进程的主线程ID号:%d \n", pi.dwThreadId); //   }	//else	//{	//	printf(" 错误码:%d \n",bRet );	//	//}

C++交流群:585225803

转载地址:https://blog.csdn.net/qq_39742146/article/details/84998719 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:调用外部程序的坑
下一篇:Win32 API SendMessage、PostMessage使用

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年03月27日 04时26分22秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

mysql怎么分组查询所有数据库_Mysql-4 分组查询与子查询 2021-06-24
mysql 多列union_Mysql联合查询UNION和UNION ALL的使用介绍 2021-06-24
mysql导数据出指定数量_mysql导出指定数据或部份数据的方法 2021-06-24
java thread 多线程_java用Thread方式创建多线程 2019-04-21
java 注解与反射_Java注解与反射直接上手 2019-04-21
java按钮退出_java – 如何在此程序中添加退出按钮?怎么样“清楚”? 2019-04-21
python土味情话_Python 将土味情话语录设置为桌面壁纸 2019-04-21
java ip 范围内打卡_定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内 2019-04-21
与java线程有关的,线程多少和什么有关?大神们表示有话要说! 2019-04-21
php正则表达式 匹配数字,正则表达式之匹配数字范围 2019-04-21
php中带?错误,参考-此错误在PHP中意味着什么? 2019-04-21
php生成链接列表,根据URL链接和抛文本生成链接<a>标签的PHP函数 2019-04-21
matlab里inline定义矩阵,Matlab中的inline函数_matlab中inline函数 2019-04-21
php html标签自定义属性,浅谈JS读取DOM对象(标签)的自定义属性 2019-04-21
如何使用matlab的siso,利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF... 2019-04-21
php 实现 model层,Thinkhphp5控制器调用的Model层的方法总结 2019-04-21
matlab6.0序列号,MFC软件获取USB设备的制造商、产品、序列号 2019-04-21
matlab中多边形滤波器,几种常见空间滤波器MATLAB实现 2019-04-21
matlab fminimax 例子,Matlab应用实例(8)—fminimax 2019-04-21
php://filter利用条件,浅谈php://filter技巧 2019-04-21