win32process中STARTUPINFO属性的常用参数及解释
在Win32进程编程中,STARTUPINFO结构体是一个重要的参数,用于指定新创建进程的特性。该结构体定义了一些属性,下面是STARTUPINFO结构体的常用参数及其解释和使用例子:
1. cb: 指定STARTUPINFO结构体的大小,以字节为单位。
解释:必须设置该参数的大小,以确保标记此结构体的大小与实际使用的版本相同。
2. lpReserved: 保留字段,必须设置为NULL。
解释:该字段未使用,必须设置为NULL。
3. lpDesktop: 桌面名称或默认桌面。
解释:指定要在子进程中使用的桌面。如果为NULL,则使用父进程的桌面。
4. lpTitle: 进程窗口标题。
解释:指定新进程的窗口标题。
5. dwX, dwY: 进程窗口的初始位置。
解释:指定新进程窗口的初始位置,以屏幕坐标表示。
6. dwXSize, dwYSize: 进程窗口的初始尺寸。
解释:指定新进程窗口的初始尺寸,以像素为单位。
7. dwXCountChars, dwYCountChars: 控制台窗口的列数和行数。
解释:指定新进程的控制台窗口大小。对于GUI应用程序,此参数无效。
8. dwFillAttribute: 控制台窗口字符和属性的初始填充值。
解释:指定新进程的控制台窗口中字符和属性的初始值。
9. dwFlags: 控制如何显示新进程的主窗口。
解释:该参数可以使用一些常量来指定新进程主窗口的显示方式,如CREATE_DEFAULT_ERROR_MODE创建默认错误模式等。
10. wShowWindow: 新进程主窗口的初始显示方式。
解释:用于控制新进程主窗口的初始显示方式,例如SW_HIDE隐藏窗口,SW_NORMAL正常显示窗口等。
以下是一个使用STARTUPINFO结构体的示例代码:
#include <windows.h>
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// 创建进程
if (CreateProcess(NULL, // 模块名
"C:\\Windows\\System32\
otepad.exe", // 命令行
NULL, // 进程的安全性描述符
NULL, // 线程的安全性描述符
FALSE, // 是否继承句柄
0, // 创建标志
NULL, // 用于指定新进程的环境块
NULL, // 当前目录的全路径名
&si, // STARTUPINFO结构体
&pi)) //PROCESS_INFORMATION结构体
{
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
return 0;
}
以上示例代码创建一个新的进程,并以记事本应用程序(notepad.exe)为例。STARTUPINFO结构体使用ZeroMemory函数初始化,并指定进程启动信息。通过创建进程函数CreateProcess创建并运行新的进程,并使用WaitForSingleObject函数等待子进程结束。最后,关闭进程和线程的句柄。
这些是STARTUPINFO结构体的常用参数及其解释,并给出了一个示例代码,用于展示如何使用这些参数来创建一个新的进程。根据实际需求,可以根据这些参数进行适当地调整和定制。
