zoukankan      html  css  js  c++  java
  • windows进程的创建方法

    1.WinExec(LPCSTR lpCmdLine,UINT uCmdShow)

    >>参数:
    lpCmdLine:指定程序的相对路径或绝对路径,命令行参数
    uCmdShow:指定窗口的显示方式

    >>窗口的显示方式:
    SW_SHOW:显示窗口
    SW_MAXIMIZE:最大化窗口
    SW_MINIMIZE:最小化窗口
    SW_NORMAL:正常显示窗口
    SW_HIDE:隐藏窗口

    >>例子
    UINT result = WinExec("notepad",SW_SHOW); //打开记事本程序
    if(result < 32){ printf("执行失败,错误代码%d",result); }


    2.ShellExecute()、ShellExecuteEx()

    >>ShellExecute函数原形:
    HINSTANCE ShellExecute(HWND hwnd , LPCTSTR lpOperation , LPCTSTR lpFile , LPCTSTR lpParameters , LPCTSTR lpDirectory , INT nShowCmd );

    >>参数:
    hwnd:指定父窗口句柄
    lpOperation:指定操作方式,"open","pr.int","explore"分别表示打开,打印,搜索,如果为NULL则默认是打开方式
    lpFile:指定文件或程序名
    lpParameters:传递的参数
    lpDirectory:默认目录
    nShowCmd:显示方式
    函数返回值如果大于32则表示执行成功,否则失败

    >>例子:
    wchar_t* operation = L"open"; 
    wchar_t* file = L"notepad"; 
    wchar_t* para = L"C:\a.txt"; 
    wchar_t* dirc = L""; 
    HINSTANCE result = ShellExecute(NULL , operation , file , para , dirc , SW_SHOW);

    >>ShellExecuteEx函数原形:
    BOOL WINAPI ShellExecuteEx( LPSHELLEXECUTEINFO lpExecInfo );

    >>参数:
    lpExecInfo:这个参数是SHELLEXECUTEINFO结构体的地址,SHELLEXECUTEINFO结构体定义了启动程序所需要的所有信息
    结构体的定义:
    typedef struct _SHELLEXECUTEINFO
    {
        DWORD cdSize;                             //结构体大小
        ULONG fMask;                               //控制其他结构体哪些生效
        HWND hwnd;                                //所有者窗口句柄
        LPCTSTR lpVerb;                           //相当于ShellExecute函数的lpOperation参数
        LPCTSTR lpFile;                             //同ShellExecute函数的lpFile参数
        LPCTSTR lpParameters;                //同ShellExecute函数的lpParameters参数
        LPCTSTR lpDirectory;                   //同ShellExecute函数的lpDirectory参数
        int nShow;                                    //同ShellExecute的nShowCmd参数
        HINSTANCE hInstApp;                 //同ShellExcute函数的返回值
        LPVOID lpIDList;                          //存储成员的特别标识符
        LPCTSTR lpClass;                          //用以指明文件类别的名字或GUID
        HKEY hkeyClass;                           //获得已在系统注册的文件类型的Handle
        DWORD dwHotKey;                     //程序的热键关联
        union
        {
            HANDLE hIcon;                        //获得对应文件类型的图标的Handle
            HANDLE hMonitor;                 //将文档显示在显示器上的Handle
        } DUMMYUNIONNAME;
        HANDLE hProcess;                        //用于进行return操作的成员
    }SHELLEXECUTEINFO , *LPSHELLEXECUTEINFO;

    该函数返回值为布尔值,当返回true表示执行成功,返回false表示执行失败;

    >>例子
    SHELLEXECUTEINFO ShExecInfo = {0}; 
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO ); 
    ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; 
    ShExecInfo.hwnd = NULL; 
    ShExecInfo.lpVerb = L"open"; 
    ShExecInfo.lpFile = L"notepad"; 
    ShExecInfo.lpParameters = L" "; 
    ShExecInfo.lpDirectory = NULL; 
    ShExecInfo.nShow = SW_SHOW; 
    ShExecInfo.hInstApp = NULL; 
    BOOL bResult =ShellExecuteEx( &ShExecInfo ); 
    if(!bResult) 

    printf("执行失败!错误代码:%d",&ShExecInfo.hInstApp); 

    WaitForSingleObject(ShExecInfo.hProcess,INFINITE);                    //等待新启动的记事本进程退出


    3.CreateProcess()
    使用CreateProcess()函数是最正规、最强大的进程创建方法

    >>函数原形:
    BOOL CreateProcess( LPCTSTR lpApplicationName , LPCTSTR lpCommandLine , LPSECURITY_ATTRIBUTES lpProcessAttributes , 
    LPSECURITY_ATTRIBUTES lpThreadAttributes , BOOL bInheritHandles , DWORD dwCreationFlags , LPVOID lpEnvironment , 
    LPCTSTR lpCurrentDirectory , LPSTARTUPINFO lpStartuoInfo , LPPROCESS_INFOMATION lpProcessInfomation );

    >>参数:
    lpApplicationName            / /可执行程序文件名
    lpCommandLine                //要传递给可执行程序的参数
    lpProcessAttributes            //进程安全性,默认为NULL
    lpThreadAttributes             //线程安全性,默认为NULL
    bInheritHandles                 //句柄是否可以被新进程继承
    dwCreationFlags                 //新进程的优先级以及其他创建标志
    lpEnvironment                     //新进程使用的环境变量
    lpCurrentDirectory                //新进程使用的当前目录
    lpStartuoInfo                       //指定新进程窗口位置,大小等信息
    lpProcessInfomation            //传出参数,返回进程信息

    >>例子:
    STARTUPINFO si = {0}; 
    si.cb = sizeof(si); 
    si.dwFlags = STARTF_USESHOWWINDOW; 
    si.wShowWindow = SW_SHOW; 
    PROCESS_INFORMATION pi ; 
    bool flag = CreateProcess(L"C:\Windows\notepad.exe" , NULL , NULL , NULL , FALSE , CREATE_NEW_CONSOLE , NULL , NULL , &si , &pi);

    4.system()
    system函数用于在C语言环境下执行各种控制台命令,也可以用它创建一个进程
    >>函数原形:
    int system( const char* command );
    其中只有一个参数,就是要执行的控制台命令字符串,返回值是控制台执行后的返回值。使用它需要包含process.h头文件
    >>例子:
    int result = system("start notepad");




  • 相关阅读:
    【百度搜索研发部】以求医为例谈搜索引擎排序算法的基础原理(转)
    TF-IDF与余弦相似性的应用(三):自动摘要
    TF-IDF与余弦相似性的应用(一):自动提取关键词
    TF-IDF与余弦相似性的应用(二):找出相似文章
    技术向:一文读懂卷积神经网络CNN(转)
    [透析] 卷积神经网络CNN究竟是怎样一步一步工作的?(转)
    像素间的基本关系-距离(转)
    Swift学习笔记-字符串和字符(Strings and Characters)-比较字符串 (Comparing Strings)
    Swift学习笔记-基本运算符(Basic Operators)-空合运算符(Nil Coalescing Operator)
    Swift学习笔记-基本运算符(Basic Operators)-求余运算符
  • 原文地址:https://www.cnblogs.com/hisheng/p/6134980.html
Copyright © 2011-2022 走看看