[DllImport("kernel32.dll",   EntryPoint="GetDiskFreeSpaceExA")]   
  public   static   extern   int   GetDiskFreeSpaceEx   (   
  string   lpRootPathName,   
  out   long   lpFreeBytesAvailable,   
  out   long   lpTotalNumberOfBytes,   
  out   long   lpTotalNumberOfFreeBytes   
  );   
    
  Usage:   
  long   a,b,c;   
  GetDiskFreeSpaceEx(@"D:\",out   a,out   b,out   c);   

解决方案 »

  1.   

    可以不用API,而用WMI来获得磁盘空间信息。
    MessageBox()API可以用System.Windows.Form.MessageBox.Show()来完成。
    using System;
    using System.Windows.Form;                 // 要添加System.Windows.Form引用
    using System.Management;                   // 要添加System.Management引用
    //...        public void Test()
            {
                ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
                disk.Get();
                Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes");
                Console.WriteLine("Logical Disk FreeSpace = " + disk["FreeSpace"] + "bytes");             System.Windows.Form.MessageBox.Show( "hello" );
            }
    至于GetDiskFreeSpace()API,第一个参数有错误,用string就可以了,而不要用ref string。
      

  2.   

    string myString = "磁盘可用空间为:" + GetDiskFreeSpace(path,i,j,k,l );