zoukankan      html  css  js  c++  java
  • C# 命令行参数分割

    [DllImport("shell32.dll", SetLastError = true)]
    private static extern IntPtr CommandLineToArgvW([MarshalAs(UnmanagedType.LPWStr)] string lpCmdLine, out int pNumArgs);
    public static string[] commandLineToArgs(string commandLine)
            {
                int argc;
                var argv = CommandLineToArgvW(commandLine, out argc);
                if (argv == IntPtr.Zero)
                    throw new System.ComponentModel.Win32Exception();
                try
                {
                    var args = new string[argc];
                    for (var i = 0; i < args.Length; i++)
                    {
                        var p = Marshal.ReadIntPtr(argv, i * IntPtr.Size);
                        args[i] = Marshal.PtrToStringUni(p);
                    }
    
                    return args;
                }
                finally
                {
                    Marshal.FreeHGlobal(argv);
                }
            }
    private static string[] GetCommandLine(this Process process)
            {
                using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + process.Id))
                using (ManagementObjectCollection objects = searcher.Get())
                {
                    var commandLine = objects.Cast<ManagementBaseObject>().SingleOrDefault()?["CommandLine"]?.ToString();
                    if (string.IsNullOrWhiteSpace(commandLine))
                        return new string[] { };
    
                    return commandLineToArgs(commandLine);
                }
            }
  • 相关阅读:
    虚拟化资料
    Windows线程+进程通信
    Linux进程+进程间通信IPC
    COM/DOM/COM+
    C# 2.0新特性与C# 3.5新特性[转]
    [CruiseControl]配置文件config.xml
    C#的Delegate和Event
    [BuildRelease Management]Visual Build
    软件培训机构
    可以自动输入密码的Runas
  • 原文地址:https://www.cnblogs.com/nanfei/p/14005863.html
Copyright © 2011-2022 走看看