【问题标题】:Process.arguments in createprocess?createprocess中的Process.arguments?
【发布时间】:2013-01-13 22:17:27
【问题描述】:

以下在 process.start 情况下工作得很好。

private string Path()
        {
            RegistryKey Key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Wizet\\");
            RegistryKey Location = Key.OpenSubKey("MapleStory");
            return Location.GetValue("ExecPath").ToString();
        }

public bool Launch()
        {
            maplestory = new ProcessStartInfo();
            maplestory.FileName = Path() + @"\MapleStory.exe";
            maplestory.Arguments = "WebStart";

            MapleStory = Process.Start(maplestory);
}

如果我要使用 CreateProcess,我现在应该在哪里放置“.Arguments”,以及我应该在哪里放置 CREATE_SUSPENDED?

CreateProcess(AppName, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref si, out pi);

【问题讨论】:

    标签: c# createprocess


    【解决方案1】:

    在第二个参数中,您可以放置​​命令行选项。在第六个中,您可以放置​​创建选项,如 CREATE_SUSPENDED。

    CreateProcess(AppName, "WebStart", IntPtr.Zero, IntPtr.Zero, false, CREATE_SUSPENDED, IntPtr.Zero, null, ref si, out pi);

    欲了解更多信息,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx

    【讨论】:

      【解决方案2】:
      public struct PROCESS_INFORMATION
      {
          public IntPtr hProcess;
          public IntPtr hThread;
          public uint dwProcessId;
          public uint dwThreadId;
      }
      
      public struct STARTUPINFO
      {
          public uint cb;
          public string lpReserved;
          public string lpDesktop;
          public string lpTitle;
          public uint dwX;
          public uint dwY;
          public uint dwXSize;
          public uint dwYSize;
          public uint dwXCountChars;
          public uint dwYCountChars;
          public uint dwFillAttribute;
          public uint dwFlags;
          public short wShowWindow;
          public short cbReserved2;
          public IntPtr lpReserved2;
          public IntPtr hStdInput;
          public IntPtr hStdOutput;
          public IntPtr hStdError;
      }
      
      public struct SECURITY_ATTRIBUTES
      {
          public int length;
          public IntPtr lpSecurityDescriptor;
          public bool bInheritHandle;
      }
      
      using System;
      using System.Diagnostics;
      using System.Runtime.InteropServices;
      
      namespace CreateProcess
      {
          public static void Main()
          {
              PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
              STARTUPINFO si = new STARTUPINFO();
      
              CreateProcess("MapleStory.exe", "WebStart", IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref si, out pi);
          }
      
          [DllImport("Kernel32.dll")]
          private static extern bool CreateProcess(string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, ref STARTUPINFO lpStartupInfo,out PROCESS_INFORMATION lpProcessInformation);
      }
      

      【讨论】:

        【解决方案3】:
        CreateProcess(AppName, "WebStart", IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref si, out pi);
        

        【讨论】:

          猜你喜欢
          • 2011-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多