如何在C#中从Win API调用StrFormatByteSize64函数?我正在尝试以下代码,但未成功:

[DllImport("shlwapi.dll")]
static extern void StrFormatByteSize64(ulong qdw, char[] pszBuf, uint cchBuf);

char[] temp = new char[128];
ulong size = 2000;
StrFormatByteSize64(size, temp, 128);
Console.WriteLine(temp);


该功能的文档可在以下位置找到:http://msdn.microsoft.com/en-us/library/bb759971%28VS.85%29.aspx

谢谢!

最佳答案

尽管可能不是最干净的方法,但这种方法有效:

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

public class Test
{
    [DllImport("shlwapi.dll")]
    static extern void StrFormatByteSize64(ulong qdw, StringBuilder builder,
                                           uint cchBuf);

    static void Main()
    {
        ulong size = 2000;
        StringBuilder builder = new StringBuilder(128);
        StrFormatByteSize64(size, builder, builder.Capacity);
        Console.WriteLine(builder);
    }
}


恐怕我对互操作不了解很多-例如,可能不需要指定StringBuilder的初始容量。我不确定:(无论如何,它应该为您提供进一步研究的起点。

关于c# - 从C#中调用StrFormatByteSize64函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3400699/

10-16 20:43