创建进程
发布日期: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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

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

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月06日 22时50分55秒

关于作者

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

推荐文章