http://www.yesky.com/20020307/1600638.shtml

解决方案 »

  1.   

    using System;
    using System.Text;
    using System.Runtime.InteropServices;
    /// <summary>
    /// Win32API 的摘要说明。
    /// </summary>
    public class Win32API{
    [StructLayout(LayoutKind.Sequential)]
    public struct OSVersionInfo{
    public int OSVersionInfoSize;
    public int MajorVersion;
    public int minorVersion;
    public int buildNumber;
    public int platformID;
    [MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
    public string versionString;
    }
    [DllImport("User32.Dll")]
    public static extern int MessageBox(int h,string m , string c , int type);
    [DllImport("kernel32.Dll")]
    public static extern bool CreateDirectory(string lpPathName);// 没写完
    [DllImport("kernel32.Dll")]
    public static extern bool GetVersionEx(ref OSVersionInfo osvi);
    }在创建一个form,一个button。填加代码如下:
    private void button1_Click(object sender, System.EventArgs e) {
    try{
    Win32API.OSVersionInfo versionInfo = new Win32API.OSVersionInfo();
    versionInfo.OSVersionInfoSize = Marshal.SizeOf(versionInfo);
    #if DEBUG
    System.Console.WriteLine("开始执行取得系统版本号的API");
    #endif
    Win32API.GetVersionEx(ref versionInfo);
    txtResult.Text = "";
    txtResult.Text = "buildNumber = " + versionInfo.buildNumber.ToString() + "\n";
    txtResult.Text += "Major Version Number is " + versionInfo.MajorVersion.ToString();
    }catch(Exception exc){
    txtResult.Text = exc.ToString();
    }
    }中间就实际了调用API的过程。
      

  2.   

    在C#中用API有三个问题要注意:
    1,申明名称空间:using System.Runtime.InteropServices;2,加载函数所在的库,如:[DLLImport("user32")]3,申明函数:   public extern int MessageBox(int h,string m , string c , int type);
                  注意:C变量类型的名称要转变为相应C#中的名称