c#调用Win32 Api函数

Posted on 2008-05-29 22:18  少林  阅读(...)  评论(...编辑  收藏
在c#中可以通过互操作性服务using System.Runtime.InteropServices来调用window api函数.并且通过属性来指定api函数的位置,以及调用方式,比如,我们要调用User32.dll里的函数MessageBox(HWnd hwnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT type)
首先引入名字空间
using System.Runtime.InteropServices;

其次定义一个静态方法,并且指定调用的方式.其中用关键子[DllImport()]指定调用方式.
如:
 [DllImport("user32.dll", EntryPoint = "MessageBox", ExactSpelling = false)]
 public static extern int MessageBox(int hWnd, string text, string caption, uint type);

然后,该函数就可以象正常函数一样的调用了.

完整代码如下:

/*
 * write by zhanghua
 * date:2008/5/28
 *
 */

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace NetMeeting.API
{
    public class Win32
    {
        [DllImport("user32.dll", EntryPoint = "MessageBox", ExactSpelling = false)]
        public static extern int MessageBox(int hWnd, string text, string caption, uint type);
    }
}

客户调用几乎和c#函数没有什么区别,如下:
using System;
using NetMeeting.API;
class test
{
    public static void Main(string[] agrs)
    {
            Win32.MessageBox(0,"hello ,this is a c# invoke win32 api","test",2);

    }
}
有复杂参数和回调函数的调用方式下次再谈.

posts - 70, comments - 306, trackbacks - 0, articles - 4

Copyright © 2020 少林
Powered by .NET Core 3.1.0 on Linux