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);
                }
            }
  • 相关阅读:
    安卓性能优化总结
    Splash广告界面
    安卓实现版本升级
    Kotlint集合简单总结
    Kotlin在处理GET和POST请求的数据问题
    udp 局域网群聊
    java 网络编程
    关于软件工程的课程建议
    结对编程--四则运算
    简单的结对代码练习
  • 原文地址:https://www.cnblogs.com/nanfei/p/14005863.html
Copyright © 2011-2022 走看看