创建进程
发布日期:2021-11-15 14:57:59
浏览次数:130
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月06日 22时50分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
安装多个gcc
2019-04-27
Linux0.01内核根目录Makefile注释
2019-04-27
【CSDN2012年度博客之星】需要您的一票,感谢大家的支持
2019-04-27
PHP对于浮点型的数据需要用不同的方法去解决
2019-04-27
Tokyo Cabinet 安装
2019-04-27
Flink在美团的应用与实践听课笔记
2019-04-27
Java多线程的11种创建方式以及纠正网上流传很久的一个谬误
2019-04-27
JDK源码研究Jstack,JMap,threaddump,dumpheap的原理
2019-04-27
Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现
2019-04-27
javac编译原理和javac命令行的使用
2019-04-27
Unity使用UnityWebRequest实现本地日志上传到web服务器
2019-04-27
Unity使用RenderTexture实现裁切3D模型
2019-04-27
美术和程序吵架,原来是资源序列化格式设置不统一
2019-04-27
Unity iOS接SDK,定制UnityAppController
2019-04-27
Unity iOS接SDK前先要了解的知识(Objective-C)
2019-04-27
记一次iOS闪退问题的定位:NSLog闪退
2019-04-27
Unity打开照相机与打开本地相册然后在Unity中显示照片(Android与iOS)
2019-04-27
无需接入SDK即可在Unity中获取经纬度(Android/iOS),告诉我你的坐标
2019-04-27
Unity获取系统信息SystemInfo(CPU、显卡、操作系统等信息)
2019-04-27