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