将多个进程创建标志传递给CreateProcess

时间:2014-03-16 15:01:02

标签: c# pinvoke

我正在使用CreateProcess,我想将CREATE_SUSPENDEDCREATE_NO_WINDOW作为Process Creation Flags传递。

这是我的pinvoke签名:

[DllImport("kernel32.dll", SetLastError = true)]
private static extern Boolean CreateProcess(String lpApplicationName, String lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes,
            Boolean bInheritHandles, UInt32 dwCreationFlags, IntPtr lpEnvironment, String lpCurrentDirectory, Byte[] lpStartupInfo,
            out PROCESS_INFORMATION lpProcessInfo);

问题是:如何传递多个标志?

1 个答案:

答案 0 :(得分:1)

由于所有标志在单个二进制位置都有一个1,您可以通过OR-ing或将它们加在一起将它们组合在一起:

CREATE_SUSPENDED | CREATE_NO_WINDOW

以下是它的工作原理:

CREATE_NO_WINDOW  is 0x08000000
CREATE_SUSPENDED  is 0x00000004

将它们进行OR运算的结果是0x08000004