【GHS】易语言api CreateProcess 创建进程

【GHS】清风   ·   发表于 9个月前   ·   编程代码

封装进程创建的原因主要是易语言自带的运行和执行命令不能启动游戏,当我们写一键启动,批量启动游戏时,便用到了进程_创建的命令。用到的API CreateProcessWIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件,我们先学习它的函数原型,参数和返回值。
函数原型
BOOL CreateProcess(LPCTSTR lpApplicationName,//
程序路径可以是相对也可以是绝对路径
LPTSTR lpCommandLine,//
启动参数可空
LPSECURITY_ATTRIBUTES lpProcessAttributes。//
为空句柄不被继承
LPSECURITY_ATTRIBUTES lpThreadAttributes,//
参数为空,新进程使用默认的安全描述符
BOOL bInheritHandles,//
TRUE表示允许当前进程中的所有句柄都由新建的子进程继承
DWORD dwCreationFlags,//
指定附加的、用来控制优先类和进程的创建的标志。LPVOID lpEnvironment,//
指向一个新进程的环境块。如果此参数为空,新进程使用调用进程的环境。
LPCTSTR lpCurrentDirectory,//
这个字符串必须是一个包含驱动器名的绝对路径。LPSTARTUPINFO lpStartupInfo,//
指向一个用于决定新进程的主窗体如何显示的STARTUPINFO结构体。LPPROCESS_INFORMATIONlpProcessInformation//指向一个用来接收新进程的识别信息的PROCESS_INFORMATION结构体。);
Copyright © 1999-2020, CSDN.NET, All Rights Reserved创建进程 登录511遇见关注易语言api CreateProcess 创建进程
封装进程创建的原因主要是易语言自带的运行和执行命令不能启动游戏,当我们写一键启动,批量启动游戏时,便用到了进程_创建的命令。
用到的
API CreateProcessWIN32API函数
CreateProcess用来创建一个新的进程和它的主线程
这个新进程运行指定的可执行文件
我们先学习它的函数原型,参数和返回值。
函数原型
BOOL CreateProcess(LPCTSTRlpApplicationName,//
程序路径可以是相对也可以是绝对路径
LPTSTR lpCommandLine,//
启动参数可空
LPSECURITY_ATTRIBUTES lpProcessAttributes。//
为空句柄不被继承
LPSECURITY_ATTRIBUTES lpThreadAttributes,//
参数为空,新进程使用默认的安全描述符
BOOL bInheritHandles,//
TRUE表示允许当前进程中的所有句柄都由新建的子进程继承DWORD dwCreationFlags,//
指定附加的、用来控制优先类和进程的创建的标志。LPVOID lpEnvironment,//
指向一个新进程的环境块。如果此参数为空,新进程使用调用进程的环境。
LPCTSTR lpCurrentDirectory,//
这个字符串必须是一个包含驱动器名的绝对路径。LPSTARTUPINFO lpStartupInfo,// 指向一个用于决定新进程的主窗体如何显示的STARTUPINFO结构体。LPPROCESS_INFORMATIONlpProcessInformation//指向一个用来接收新进程的识别信息的PROCESS_INFORMATION结构体。)
API教程参数:lpApplicationName指向一个NULL结尾的、用来指定可执行模块的字符串。这个字符串可以是可执行模块的绝对路径,也可以是相对路径,在后一种情况下,函数使用当前驱动器和目录建立可执行模块的路径。这个参数可以被设为NULL,在这种情况下,可执行模块的名字必须处于
lpCommandLine 参数最前面并由空格符与后面的字符分开。


――――内容来源于网络如有侵权联系我删除――――
20 Reply   |  Until 8个月前 | 434 View

zgw888666
发表于 9个月前

lpProcessAttributes

指向一个SECURITY_ATTRIBUTES结构体,这个结构体决定是否返回的句柄可以被子进程继承。如果lpProcessAttributes参数为空(NULL),那么句柄不能被继承。

在Windows NT中:SECURITY_ATTRIBUTES结构的lpSecurityDescriptor成员指定了新进程的安全描述符,如果参数为空,新进程使用默认的安全描述符。

评论列表

  • 加载数据中...

编写评论内容

xiaoxiao
发表于 9个月前

lpThreadAttributes

同lpProcessAttribute,不过这个参数决定的是线程是否被继承.通常置为NULL.

评论列表

  • 加载数据中...

编写评论内容

浪漫之初
发表于 9个月前

lpCommandLine

指向一个以NULL结尾的字符串,该字符串指定要执行的命令行。

评论列表

  • 加载数据中...

编写评论内容

出黑q375629371
发表于 9个月前

lpCommandLine

指向一个以NULL结尾的字符串,该字符串指定要执行的命令行。

这个参数可以为空,那么函数将使用lpApplicationName参数指定的字符串当做要运行的程序的命令行。

如果lpApplicationName和lpCommandLine参数都不为空,那么lpApplicationName参数指定将要被运行的模块,lpCommandLine参数指定将被运行的模块的命令行。新运行的进程可以使用GetCommandLine函数获得整个命令行。C语言程序可以使用argc和argv参数。

评论列表

  • 加载数据中...

编写评论内容

13824879591
发表于 9个月前

bInheritHandles

指示新进程是否从调用进程处继承了句柄。

如果参数的值为真,调用进程中的每一个可继承的打开句柄都将被子进程继承。被继承的句柄与原进程拥有完全相同的值和访问权限。

评论列表

  • 加载数据中...

编写评论内容

klmk
发表于 9个月前

⑴值:CREATE_DEFAULT_ERROR_MODE

含义:新的进程不继承调用进程的错误模式。CreateProcess函数赋予新进程当前的默认错误模式作为替代。应用程序可以调用SetErrorMode函数设置当前的默认错误模式。

这个标志对于那些运行在没有硬件错误环境下的多线程外壳程序是十分有用的。

对于CreateProcess函数,默认的行为是为新进程继承调用者的错误模式。设置这个标志以改变默认的处理方式。

评论列表

  • 加载数据中...

编写评论内容

1679644933
发表于 9个月前

⑵值:CREATE_NEW_CONSOLE

含义:新的进程将使用一个新的控制台,而不是继承父进程的控制台。这个标志不能与DETACHED_PROCESS标志一起使用。

评论列表

  • 加载数据中...

编写评论内容

微梦
发表于 9个月前

⑶值:CREATE_NEW_PROCESS_GROUP

含义:新进程将是一个进程树的根进程。进程树中的全部进程都是根进程的子进程。新进程树的用户标识符与这个进程的标识符是相同的,由lpProcessInformation参数返回。进程树经常使用GenerateConsoleCtrlEvent函数允许发送CTRL+C或CTRL+BREAK信号到一组控制台进程。

评论列表

  • 加载数据中...

编写评论内容

1094525
发表于 9个月前

⑷值:CREATE_SEPARATE_WOW_VDM

如果被设置,新进程将会在一个私有的虚拟DOS机(VDM)中运行。另外,默认情况下所有的16位Windows应用程序都会在同一个共享的VDM中以线程的方式运行。单独运行一个16位程序的优点是一个应用程序的崩溃只会结束这一个VDM的运行;其他那些在不同VDM中运行的程序会继续正常的运行。同样的,在不同VDM中运行的16位Windows应用程序拥有不同的输入队列,这意味着如果一个程序暂时失去响应,在独立的VDM中的应用程序能够继续获得输入。

评论列表

  • 加载数据中...

编写评论内容

alpdr
发表于 9个月前

⑸值:CREATE_SHARED_WOW_VDM

如果WIN.INI中的Windows段的DefaultSeparateVDM选项被设置为真,这个标识使得CreateProcess函数越过这个选项并在共享的虚拟DOS机中运行新进程。

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
程序耗时 0.0432秒 内存:1394KB