CreateProcess的用法

本文详细介绍了Windows API函数CreateProcess的使用方法,包括如何通过该函数启动外部进程,并设置进程属性,如显示窗口等。此外,还提供了两个示例代码,演示了不同参数配置下启动IE浏览器并加载特定网址的方法。

CreateProcess的用法

标签: null编译器iec
  42521人阅读  评论(0)  收藏  举报
  分类:
 
   

使用编译器vs2008。

 

第一、第二个参数的用法:

 

例子:

使用ie打开指定的网页。

注意第二个参数是 可执行文件+命令行参数

 

[cpp]  view plain  copy
  1. #include "stdafx.h"  
  2. #include <windows.h>   
  3. #include <stdio.h>   
  4.   
  5. int main(int argc, char* argv[])   
  6. {   
  7.     STARTUPINFO si = { sizeof(si) };   
  8.     PROCESS_INFORMATION pi;   
  9.   
  10.     si.dwFlags = STARTF_USESHOWWINDOW;   
  11.     si.wShowWindow = TRUE; //TRUE表示显示创建的进程的窗口  
  12.     TCHAR cmdline[] =TEXT("c://program files//internet explorer//iexplore.exe http://community.youkuaiyun.com/");  
  13.     BOOL bRet = ::CreateProcess (   
  14.         NULL,  
  15.         cmdline, //在Unicode版本中此参数不能为常量字符串,因为此参数会被修改    
  16.         NULL,   
  17.         NULL,   
  18.         FALSE,   
  19.         CREATE_NEW_CONSOLE,   
  20.         NULL,   
  21.         NULL,   
  22.         &si,   
  23.         &pi);   
  24.   
  25.     int error = GetLastError();  
  26.     if(bRet)   
  27.     {   
  28.         ::CloseHandle (pi.hThread);   
  29.         ::CloseHandle (pi.hProcess);   
  30.   
  31.         printf(" 新进程的进程ID号:%d /n", pi.dwProcessId);   
  32.         printf(" 新进程的主线程ID号:%d /n", pi.dwThreadId);   
  33.     }   
  34.     else  
  35.     {  
  36.         printf("error code:%d/n",error );  
  37.     }  
  38.     return 0;   
  39. }   

 

也可如此:

第一个参数是 可执行文件;第二个参数是 命令行参数

 

 

[cpp]  view plain  copy
  1. #include "stdafx.h"  
  2. #include <windows.h>   
  3. #include <stdio.h>   
  4.   
  5. int main(int argc, char* argv[])   
  6. {   
  7.     STARTUPINFO si = { sizeof(si) };   
  8.     PROCESS_INFORMATION pi;   
  9.   
  10.     si.dwFlags = STARTF_USESHOWWINDOW;   
  11.     si.wShowWindow = TRUE; //TRUE表示显示创建的进程的窗口  
  12.     TCHAR cmdline[] =TEXT(" http://community.youkuaiyun.com/"); //注意前面有空格,否则打开的是主页。  
  13.     BOOL bRet = ::CreateProcess (   
  14.         TEXT("c://program files//internet explorer//iexplore.exe"),  
  15.         cmdline, //在Unicode版本中此参数不能为常量字符串,因为此参数会被修改    
  16.         NULL,   
  17.         NULL,   
  18.         FALSE,   
  19.         CREATE_NEW_CONSOLE,   
  20.         NULL,   
  21.         NULL,   
  22.         &si,   
  23.         &pi);   
  24.   
  25.     int error = GetLastError();  
  26.     if(bRet)   
  27.     {   
  28.         ::CloseHandle (pi.hThread);   
  29.         ::CloseHandle (pi.hProcess);   
  30.   
  31.         printf(" 新进程的进程ID号:%d /n", pi.dwProcessId);   
  32.         printf(" 新进程的主线程ID号:%d /n", pi.dwThreadId);   
  33.     }   
  34.     else  
  35.     {  
  36.         printf("error code:%d/n",error );  
  37.     }  
  38.   
  39.   
  40.     return 0;   
  41. }   

0
0
CreateProcess函数是在Windows API中用于创建新进程的标准方法。它允许您启动一个新的应用程序实例,并可以传递命令行参数、指定运行环境、设置优先级等。以下是CreateProcess的基本语法: ```c++ BOOL CreateProcess( LPCSTR lpApplicationName, // 父进程要打开的程序名 LPSTR lpCommandLine, // 包含命令行参数的字符串 LPSECURITY_ATTRIBUTES lpProcessAttributes, // 进程安全属性 LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程安全属性 BOOL bInheritHandles, // 子进程是否继承句柄 DWORD dwCreationFlags, // 创建标志 LPVOID lpEnvironment, // 环境变量块 LPCSTR lpCurrentDirectory, // 当前工作目录 STARTUPINFO* lpStartupInfo, // 启动信息结构体 LPPROCESS_INFORMATION lpProcessInformation // 进程信息指针 ); ``` - `lpApplicationName`:应用程序的完整路径名称。 - `lpCommandLine`:包含应用程序和参数的字符串,如 "C:\Program Files\Notepad.exe" "Hello World.txt"。 - `lpProcessAttributes` 和 `lpThreadAttributes`:指向security attributes结构的指针,可选,用于指定权限。 - `bInheritHandles`:如果为真,则新进程和线程将继承父进程的一些句柄。 - `dwCreationFlags`:可选标志,控制新进程的特性。 - `lpEnvironment`:若不为NULL,包含环境变量的字典。 - `lpCurrentDirectory`:新进程的工作目录。 - `lpStartupInfo`:启动信息结构,用于初始化进程的详细信息。 - `lpProcessInformation`:返回进程和子进程的信息。 使用CreateProcess时需要注意错误处理,通常会检查`CreateProcess`的返回值,如果失败,需要通过`GetLastError`获取错误码。此外,为了方便管理,你可能会使用`STARTUPINFO`和`PROCESS_INFORMATION`结构来传递额外的启动选项和接收关于新进程的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值