各位大侠 无法调用api 关机函数,请帮帮我.提示这个错误.
对 PInvoke 函数“WindowsApplication3!WindowsApplication3.Form1::ExitWindowsEx”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
源代码如下.如何解决这个问题呢.谢谢.       [DllImport("user32")]
        public static extern long ExitWindowsEx(long uFlags, long dwReserved);
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            ExitWindowsEx(1, 0); 
        }

解决方案 »

  1.   

    外部DLL调用我倒是用过
    1、我在C下写个关机的程序(可以只包含关机函数),然后生成该文件的dll文件
    2、在C#下DllImport导入,并且调用该函数
      我是通过这样的方式来实现的,不知道可不可以帮住你有问题可以通过[email protected]交流                                      桂林电子科技大学计算机系
                                             信息管理与信息系统
                                               2006.4.26
      

  2.   

    数据类型错了,Win32的Long并不对应.NET下的Long。
    还有,需要获得权限才可以调用这个函数关机。//正确的打法
    public static extern long ExitWindowsEx(Int32 uFlags, Int32 dwReserved);