当前位置:编程学习 > wap >>

wince 自动拨号的问题 c#实现

using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace GSWW.MobileOA.Common
{
        public class RasManager
        {
            public const int RAS_MaxEntryName = 256;
            public const int RAS_MaxPhoneNumber = 128;
            public const int UNLEN = 256;
            public const int PWLEN = 256;
            public const int DNLEN = 15;
            public const int MAX_PATH = 260;
            public const int RAS_MaxDeviceType = 16;
            public const int RAS_MaxCallbackNumber = RAS_MaxPhoneNumber;

            public delegate void Callback(uint unMsg, int rasconnstate, int dwError);

            //[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Auto)]
            [StructLayout(LayoutKind.Sequential,CharSet = CharSet.Auto)]
            public struct RASDIALPARAMS
            {
                public int dwSize;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MaxEntryName + 1)]
                public string szEntryName;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MaxPhoneNumber + 1)]
                public string szPhoneNumber;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MaxCallbackNumber + 1)]
                public string szCallbackNumber;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = UNLEN + 1)]
                public string szUserName;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = PWLEN + 1)]
                public string szPassword;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = DNLEN + 1)]
                public string szDomain;
                public int dwSubEntry;
                public int dwCallbackId;
            }

          //  [DllImport("coredll.dll", CharSet = CharSet.Auto)]
        //    public static extern int RasDial(int lpRasDialExtensions, string
        //lpszPhonebook,
        //      ref   RASDIALPARAMS lprasdialparams, int dwNotifierType,
        //      Callback lpvNotifier, ref   int lphRasConn);

            //建立RAS连接
          //  [DllImport("coredll.dll", CharSet = CharSet.Auto)]
         //   private static extern int RasDial(IntPtr pDialExtensions, string pPhonebook, byte[] pRasDialParam, uint pNotifierType, IntPtr pHwnd, ref int pRasConn);
            [DllImport("coredll.dll", CharSet = CharSet.Auto)]
            public static extern int RasDial(int lpRasDialExtensions, string
             lpszPhonebook,
              ref   RASDIALPARAMS lprasdialparams, int dwNotifierType,
              Callback lpvNotifier, ref int lphRasConn);
       


            private RASDIALPARAMS RasDialParams;
            private int Connection;

            public RasManager()
            {
                Connection = 0;
                RasDialParams = new RASDIALPARAMS();
                RasDialParams.dwSize = Marshal.SizeOf(RasDialParams);
            }

            #region   Properties
            public string UserName
            {
                get
                {
                    return RasDialParams.szUserName;
                }
                set
                {
                    RasDialParams.szUserName = value;
                }
            }

            public string Password
            {
                get
                {
                    return RasDialParams.szPassword;
                }
                set
                {
                    RasDialParams.szPassword = value;
                }
            }

            public string EntryName
            {
                get
                {
                    return RasDialParams.szEntryName;
                }
                set
                {
                    RasDialParams.szEntryName = value;
                }
            }
            #endregion

            public void Connect()
            {
                Callback rasDialFunc = new Callback(RasManager.RasDialFunc);
                RasDialParams.szEntryName += "\0";
                RasDialParams.szUserName += "\0";
                RasDialParams.szPassword += "\0";
                int result = RasDial(0, null, ref   RasDialParams, 0, rasDialFunc, ref  Connection);
                if (result != 0)
                {
                    MessageBox.Show(result.ToString());
                    MessageBox.Show("拨号连接失败!"); 
                }
               
            }

            public static void RasDialFunc(uint unMsg, int rasconnstate, int dwError)
            {
            }
        }
}



                    RasManager myRas = new RasManager();
                    myRas.EntryName = "CTNET";

                    myRas.UserName = "ctnet@mycdma.cn";
                    myRas.Password = "vnet.mobi";
                    myRas.Connect();   --------------------编程问答-------------------- 返回的87 --------------------编程问答-------------------- 楼主贴了一大段代码,就说返回87,具体是哪处的问题,请描述清楚啊。 --------------------编程问答-------------------- 我改为:
 public void Connect()
            {
                Callback rasDialFunc = new Callback(RasManager.RasDialFunc);
                //RasDialParams.szEntryName += "\0";
                //RasDialParams.szUserName += "\0";
                //RasDialParams.szPassword += "\0";
                int result = RasDial(0, null, ref  RasDialParams, 0xFFFFFFFF, rasDialFunc, ref Connection);
                if (result != 0)
                {
                    MessageBox.Show(result.ToString());
                    MessageBox.Show("拨号连接失败!"); 
返回是0,但在手机测试,任然不能像UCWEB那样自动拨号 ,谢谢楼上人的关注! --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 想数字天堂和烽火的移动办公CE版,就能自动打开CTNET,查了很多资料都是说CE用RAS,但是没成功,恳请高手出手啊!
补充:移动开发 ,  Windows Phone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,