zoukankan      html  css  js  c++  java
  • 给.NET的string类添加一个命令行参数分解的扩展

    把一个把字符串分解成命令行参数是很常见的操作,一直很纳闷为什么.net没有提供相关的功能,自己写一个又觉得麻烦。幸好windows提供了一个API来干这个事情。不过这个API调用起来颇为麻烦,google了一下才找到方法。代码贴上来,方便后来人使用。

    代码如下:

    using System;
    using System.Runtime.InteropServices;
    using System.Text;

    ///
     <summary>
    /// string extension for split command line to string[]
    /// </summary>
    public static class CmdLineExtension
    {

        
    public static string[] SplitArgs(this string cmd)
        {
            
    int count;
            var ret 
    = CommandLineToArgvW(cmd, out count);

            
    if(ret == IntPtr.Zero)
                
    throw new ArgumentException("Unable to split argument.");
            
    try
            {
                var results 
    = new string[count];

                
    for(int i = 0; i < count; i++)
                    results[i] 
    = Marshal.PtrToStringUni(Marshal.ReadIntPtr(ret, i * IntPtr.Size));
                
    return results;
            }
            
    finally
            {
                LocalFree(ret);
            }
        }

        [DllImport(
    "shell32.dll", SetLastError = true)]
        
    static extern IntPtr CommandLineToArgvW([MarshalAs(UnmanagedType.LPWStr)]string cmd, out int count);

        [DllImport(
    "kernel32.dll")]
        
    static extern IntPtr LocalFree(IntPtr mem);
    }
  • 相关阅读:
    oraclesqlloader
    Dosinternal command and external command
    unixexpr
    Powerbuilder 6.5完全图解教程
    character set
    pbdatawindow function
    java decompile tool(recommended)
    php验证码背景色设置无效
    使用jquery validation engine判断为空的时候要根据input的type
    有些站点不能被iframe
  • 原文地址:https://www.cnblogs.com/Hybird3D/p/1933768.html
Copyright © 2011-2022 走看看