回 帖 发 新 帖 刷新版面

主题:C#编程中如何调用API函数

各位,我们编程时候 往往要用到WINDOWS API函数,我在C#编程如何调用他们呢??
调用这个和C#的其他函数的调用有没有区别。调用它在C#中有没有特别的要求呢??

回复列表 (共2个回复)

沙发

msdn中P/Invoke的示例:

using System;
using System.Runtime.InteropServices;

class PlatformInvokeTest
{   
    [DllImport("gdi32.dll", CharSet=CharSet.Auto)]
    public static extern IntPtr CreateFontIndirect(
        [In, MarshalAs(UnmanagedType.LPStruct)]
        LOGFONT lplf   // 特征
        );

    [DllImport("gdi32.dll")]
    public static extern bool DeleteObject(
        IntPtr handle
        );

    public static void Main() 
    {
        LOGFONT lf = new LOGFONT();
        lf.lfHeight = 9;
        lf.lfFaceName = "Arial";
        IntPtr handle = CreateFontIndirect(lf);

        if (IntPtr.Zero == handle)
        {
            Console.WriteLine("Can't creates a logical font.");
        }
        else
        {
            
            if (IntPtr.Size == 4)
                Console.WriteLine("{0:X}", handle.ToInt32());
            else
                Console.WriteLine("{0:X}", handle.ToInt64());        

            // 删除所创建的逻辑字体。
            if (!DeleteObject(handle))
                Console.WriteLine("Can't delete the logical font");

        }
        
    }
}

由此可以看出,首先using System.Runtime.InteropServices;
然后通过设置DllImport以及方法的extern版本进行API方法映射
然后就可以像本地函数一样调用这个方法了

板凳

我收藏了两个讲得比较详细的.
http://hi.baidu.com/sageking2/blog/item/9406570f8a5481e8aa64573b.html
http://hi.baidu.com/sageking2/blog/item/136da2da9eca3addb6fd48d5.html

我来回复

您尚未登录,请登录后再回复。点此登录或注册