标题：STARTUPINFO
结构原型
typedef struct _STARTUPINFO { 
DWORD cb; 
LPTSTR lpReserved; 
LPTSTR lpDesktop; 
LPTSTR lpTitle; 
DWORD dwX; 
DWORD dwY; 
DWORD dwXSize; 
DWORD dwYSize;
DWORD dwXCountChars; 
DWORD dwYCountChars; 
DWORD dwFillAttribute; 
DWORD dwFlags; 
WORD wShowWindow; 
WORD cbReserved2; 
LPBYTE lpReserved2; 
HANDLE hStdInput; 
HANDLE hStdOutput; 
HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
参数说明
STARTUPINFO结构　该结构用于指定新进程的主窗口特性　
DWORD cb; //包含STARTUPINFO结构中的字节数.如果Microsoft将来扩展该结构,它可用作版本控制手段.
应用程序必须将cb初始化为sizeof(STARTUPINFO)
PSTR lpReserved; //保留。必须初始化为N U L L
PSTR lpDesktop; //用于标识启动应用程序所在的桌面的名字。如果该桌面存在，新进程便与指定的桌面相关联。
如果桌面不存在，便创建一个带有默认属性的桌面，并使用为新进程指定的名字。
如果lpDesktop是NULL（这是最常见的情况),那么该进程将与当前桌面相关联
PSTR lpTitle; //用于设定控制台窗口的名称。如果l p Ti t l e 是N U L L ，则可执行文件的名字将用作窗口名
DWORD dwX; //用于设定应用程序窗口在屏幕上应该放置的位置的x 和y 坐标（以像素为单位）。
DWORD dwY; 只有当子进程用CW_USEDEFAULT作为CreateWindow的x参数来创建它的第一个重叠窗口时,
才使用这两个坐标。若是创建控制台窗口的应用程序，这些成员用于指明控制台窗口的左上角
DWORD dwXSize; //用于设定应用程序窗口的宽度和长度（以像素为单位）只有dwYsize
DWORD dwYSize; 当子进程将C W _ U S E D E FA U LT 用作C r e a t e Wi n d o w 的
n Wi d t h参数来创建它的第一个重叠窗口时，才使用这些值。
若是创建控制台窗口的应用程序，这些成员将用于指明控制台窗口的宽度
DWORD dwXCountChars; //用于设定子应用程序的控制台窗口的宽度和高度（以字符为单位）
DWORD dwYCountChars;
DWORD dwFillAttribute; //用于设定子应用程序的控制台窗口使用的文本和背景颜色
DWORD dwFlags; //请参见下一段和表4 - 7 的说明
WORD wShowWindow; //用于设定如果子应用程序初次调用的S h o w Wi n d o w 将S W _ S H O W D E FA U LT 作为
n C m d S h o w 参数传递时，该应用程序的第一个重叠窗口应该如何出现。
本成员可以是通常用于Show Wi n d o w 函数的任何一个S W _ *标识符
WORD cbReserved2; //保留。必须被初始化为0
PBYTE lpReserved2; //保留。必须被初始化为N U L L
HANDLE hStdInput; //用于设定供控制台输入和输出用的缓存的句柄。
按照默认设置，h S t d I n p u t 用于标识键盘缓存，
h S t d O u t p u t 和h S t d E r r o r用于标识控制台窗口的缓存
HANDLE hStdOutput;
HANDLE hStdError;
当Wi n d o w s 创建新进程时，它将使用该结构的有关成员。大多数应用程序将要求生成的应用程序仅仅使用默认值。至少应该将该结构中的所有成员初始化为零，然后将c b 成员设置为该结构的大小：
STARTUPINFO si = { sizeof(si) };
CreateProcess(...,&si,...);
表4-7 dwFlags 使用标志及含义
标志 含义
STARTF_USESIZE // 使用d w X S i z e 和d w Y S i z e 成员
STARTF_USESHOWWINDOW //使用w S h o w Wi n d o w 成员
STARTF_USEPOSITION //使用d w X 和d w Y 成员
STARTF_USECOUNTCHARS //使用d w X C o u n t C h a r s 和dwYCount Chars 成员
STARTF_USEFILLATTRIBUTE //使用d w F i l l A t t r i b u t e 成员
STARTF_USESTDHANDLES //使用h S t d I n p u t 、h S t d O u t p u t 和h S t d E r r o r 成员
STARTF_RUN_FULLSCREEN //强制在x 8 6 计算机上运行的控制台应用程序以全屏幕方式启动运行
另外还有两个标志，即STARTF_FORCEONFEEDBACK 和STARTF_+FORCEOFFF -EEDBACK ，当启动一个新进程时，它们可以用来控制鼠标的光标。由于Windows支持真正的多任务抢占式运行方式，因此可以启动一个应用程序，然后在进程初始化时，使用另一个程序。为了向用户提供直观的反馈信息，C r e a t e P r o c e s s 能够临时将系统的箭头光标改为一个新光标，即沙漏箭头光标：
该光标表示可以等待出现某种情况，也可以继续使用系统。当启动另一个进程时，CreateProcess函数使你能够更好地控制光标。当设定STARTF_FORCEONFEEDBACK标志时，C r e a t e P r o c e s s 并不将光标改为沙漏。
STARTF_FORCEONFEEDBACK可使CreateProcess能够监控新进程的初始化，并可根据结果来改变光标。当使用该标志来调用CreateProcess时，光标改为沙漏。过2 s 后，如果新进程没有调用G U I ，CreateProcess 将光标恢复为箭头。
如果该进程在2 s 内调用了GUI ，CreateProcess将等待该应用程序显示一个窗口。这必须在进程调用G U I 后5 s内发生。如果没有显示窗口，CreateProcess就会恢复原来的光标。如果显示了一个窗口，CreateProcess将使沙漏光标继续保留5s 。如果某个时候该应用程序调用了G e t M e s s a g e 函数，指明它完成了初始化，那么C r e a t e P r o ce s s 就会立即恢复原来的光标，并且停止监控新进程。
在结束这一节内容的介绍之前，我想讲一讲S TA RT U P I N F O 的w S h o w Wi n d o w成员。你将该成员初始化为传递给( w ) Wi n M a i n 的最后一个参数n C m d S h o w的值。该成员显示你想要传递给新进程的( w ) Wi n M a i n 函数的最后一个参数n C m d S h o w的值。它是可以传递给S h o w Wi n d o w 函数的标识符之一。通常，n C m d S h o w 的值既可以是S W _ SH O W N O R M A L ，也可以是SW_ SHOWMINNOACTIVE 。但是，它有时可以是S W _ S H O W D EFA U LT 。
当在E x p l o r e r 中启动一个应用程序时，该应用程序的( w ) Wi n M a i n 函数被调用，而S W _ SH O W N O R M A L 则作为n C m d S h o w参数来传递。如果为该应用程序创建了一个快捷方式，可以使用快捷方式的属性页来告诉系统，应用程序的窗口最初应该如何显示。图4 - 3 显示了运行No t e p a d 的快捷方式的属性页。注意，使用R u n 选项的组合框，就能够设定如何显示N o t e p a d 的窗口。
当使用E x p l o r e r 来启动该快捷方式时，E x p l o r e r 会正确地准备S TA RT U P I N FO 结构并调用C r e a t e P r o c e s s 。这时N o t e p a d 开始运行，并且为n C m d S h ow 参数将S W _ S H O W M I N N O A C T I V E传递给它的( w ) Wi n M a i n 函数。
运用这样的方法，用户能够很容易地启动一个应用程序，其主窗口可以用正常状态、最小或最大状态进行显示。
最后，应用程序可以调用下面的函数，以便获取由父进程初始化的S TA RT U P I N F O 结构的拷贝。子进程可以查看该结构，并根据该结构的成员的值来改变它的行为特性。
VOID GetStartupInfo(LPSTARTUPINFO pStartupInfo);
注意虽然Wi n d o w s 文档没有明确地说明，但是在调用G e t S t a r t I n f o 函数之前，必须像下面这样对该结构的c b 成员进行初始化：
STARTUPINFO si = { sizeof(si) };
GetStartupInfo(&si);
其他编程语言声明
易语言
------------------------------
.版本 2
.数据类型 STARTUPINFO, , 启动信息。当Wi n d o w s 创建新进程时，它将使用该结构的有关成员。大多数应用程序将要求生成的应用程序仅仅使用默认值。至少应该将该结构中的所有成员初始化为零，然后将c b 成员设置为该结构的大小：
.成员 cb, 整数型, , , DWORD cb; //包含STARTUPINFO结构中的字节数.如果Microsoft将来扩展该结构,它可用作版本控制手段 应用程序必须将cb初始化为sizeof(STARTUPINFO)
.成员 lpReserved, 整数型, , , PSTR lpReserved; //保留。必须初始化为N U L L
.成员 lpDesktop, 整数型, , , PSTR lpDesktop; //用于标识启动应用程序所在的桌面的名字。如果该桌面存在，新进程便与指定的桌面相关联。 如果桌面不存在，便创建一个带有默认属性的桌面，并使用为新进程指定的名字。如果lpDesktop是NULL（这是最常见的情况),那么该进程将与当前桌面相关联
.成员 lpTitle, 整数型, , , PSTR lpTitle; //用于设定控制台窗口的名称。如果l p Ti t l e 是N U L L ，则可执行文件的名字将用作窗口名
.成员 dwX, 整数型, , , DWORD dwX; //用于设定应用程序窗口在屏幕上应该放置的位置的x 和y 坐标（以像素为单位）
.成员 dwY, 整数型, , , DWORD dwY; 只有当子进程用CW_USEDEFAULT作为CreateWindow的x参数来创建它的第一个重叠窗口时才使用这两个坐标。若是创建控制台窗口的应用程序，这些成员用于指明控制台窗口的左上角
.成员 dwXSize, 整数型, , , DWORD dwXSize; //用于设定应用程序窗口的宽度和长度（以像素为单位）只有dwYsize
.成员 dwYSize, 整数型, , , DWORD dwYSize; 当子进程将C W _ U S E D E FA U LT 用作C r e a t e Wi n d o w 的n Wi d t h参数来创建它的第一个重叠窗口时，才使用这些值。若是创建控制台窗口的应用程序，这些成员将用于指明控制台窗口的宽度
.成员 dwXCountChars, 整数型, , , DWORD dwXCountChars; //用于设定子应用程序的控制台窗口的宽度和高度（以字符为单位）
.成员 dwYCountChars, 整数型
.成员 dwFillAttribute, 整数型, , , DWORD dwFillAttribute; //用于设定子应用程序的控制台窗口使用的文本和背景颜色
.成员 dwFlags, 整数型, , , STARTF_FORCEONFEEDBACK0x00000040；STARTF_FORCEOFFFEEDBACK0x00000080；STARTF_PREVENTPINNING0x00002000；STARTF_RUNFULLSCREEN0x00000020；STARTF_TITLEISAPPID0x00001000；STARTF_TITLEISLINKNAME0x00000800；STARTF_USECOUNTCHARS0x00000008；STARTF_USEFILLATTRIBUTE0x00000010；STARTF_USEHOTKEY0x00000200；STARTF_USEPOSITION0x00000004；STARTF_USESHOWWINDOW0x00000001；STARTF_USESIZE0x00000002；STARTF_USESTDHANDLES0x00000100
.成员 wShowWindow, 短整数型, , , WORD wShowWindow; //用于设定如果子应用程序初次调用的S h o w Wi n d o w 将S W _ S H O W D E FA U LT 作为n C m d S h o w 参数传递时，该应用程序的第一个重叠窗口应该如何出现。本成员可以是通常用于Show Wi n d o w 函数的任何一个S W _ *标识符
.成员 cbReserved2, 短整数型, , , WORD cbReserved2; //保留。必须被初始化为0
.成员 lpReserved2, 整数型, , , PBYTE lpReserved2; //保留。必须被初始化为N U L L
.成员 hStdInput, 整数型, , , HANDLE hStdInput; //用于设定供控制台输入和输出用的缓存的句柄。按照默认设置，h S t d I n p u t 用于标识键盘缓存，h S t d O u t p u t 和h S t d E r r o r用于标识控制台窗口的缓存
.成员 hStdOutput, 整数型
.成员 hStdError, 整数型
------------------------------