声明:[DllImport("user32.dll",EntryPoint="MessageBox",SetLastError=true,CharSet=CharSet.Auto)]
public static extern int MessageBox(int hWnd, string strMessage,string strCaption,uint uiType);调用:
MessageBox(0,"Hello, THis is a P/Invoke in operation",".NET Class",0);
这个能用。说明:我试着将参数在声明和调用的时候去掉几个,运行的时候就是编译通过,但是没有效果。看来编译器对外部调用只是在形式上检查一下,是否真正成功,得由程序员自己把握了。所以我判断你的程序中一定是声明的时候出了错,查查原型吧,是不是搞错了。

解决方案 »

  1.   

    http://www.chinaithr.com/bbs/bbs24/6.xml刚在这里看到一篇关于c# platform invoke 的文章。"
    另外如果安装了Visual Studio .net的话,在C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\Technologies\Interop\PlatformInvoke\WinAPIs\CS目录下有大量的调用API的例子。"
    大量不确切,因为我的机子里只有12个例子,可是其中也有MsBox.cs 你看看吧。
    祝好运
    ~
      

  2.   

    using System;
    using System.Runtime.InteropServices;public class API { [DllImport("user32.dll", EntryPoint="MessageBox")]
    public static extern int MessageBox(int hwnd,string  lpText,string  lpCaption,int  wType);}调用:int i = API.MessageBox(0,"hello","test",0);奇怪的是C# 的MessageBox.Show 就是API MessageBox,你为什么非要用API?
      

  3.   

    多谢ArLi2003补充了using System.Runtime.InteropServices;估计搂主也是拿MessageBox练练手吧。玩玩p/invoke的。