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的过程。
在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#中的名称
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的过程。
1,申明名称空间:using System.Runtime.InteropServices;2,加载函数所在的库,如:[DLLImport("user32")]3,申明函数: public extern int MessageBox(int h,string m , string c , int type);
注意:C变量类型的名称要转变为相应C#中的名称