?? form1.cs
字號:
/// Copyright(c) Emtronix Inc.
///
/// 程序作者:李林 leeleen@emtronix.com
/// leeleen@sjtu.org
/// leeleen@263.net
///
/// 最后修改時間:2008-05-23 汶川8級地震余震期間
/// +86-28-86180660
/// 成都英創信息技術有限公司
/// Emtronix是英創公司的注冊商標
/// 本程序免費提供給購買英創公司EM9000產品的客戶使用
/// 未購買英創公司產品的客戶或未獲得英創授權的客戶不得使用
///
/// 本程序注意事項:
/// (1)由于調用WIN32 API RASDial需要用到不安全代碼,需要在『項目』—『屬性』—『生成』里面選擇“允許不安全代碼”;
/// (2)上電過程需要調用EM9000_ISA_DLL.dll動態鏈接庫,所以請將該動態鏈接庫下載到目標平臺的相關目錄里;
/// (3)GPRS模塊上電過程在Program.cs里面實現(調用ISA動態鏈接庫),撥號過程在Form1.cs里面實現;
/// (4)本程序上電過程適用于華為GTM9000 GPRS模塊。
using System;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace EM9000_GPRS_Dial
{
public partial class GPRS_FORM : Form
{
#region Win32 API RASDial函數聲明
[DllImport("coredll.dll")]
public static extern uint RasDial(IntPtr dialExtensions, IntPtr phoneBookPath, IntPtr rasDialParam, uint NotifierType, IntPtr notifier, ref IntPtr pRasConn);
[DllImport("coredll.dll")]
public static extern uint RasHangUp(IntPtr pRasConn);
#endregion
//再次提醒:GPRS模塊上電過程在Program.cs里實現,請在Program.cs里參見相關代碼
IntPtr Connect = IntPtr.Zero;
public GPRS_FORM()
{
InitializeComponent();
}
private void Exit_button_Click(object sender, EventArgs e)
{
this.Close();
}
private void Dial_button_Click(object sender, EventArgs e)
{
Connect = IntPtr.Zero;
uint result = myRasDial("GPRS", "", "", out Connect);
if (result != 0)
{
MessageBox.Show("連接失敗!");
RasHangUp(Connect);
}
else
MessageBox.Show("連接成功!");
}
private void Hang_button_Click(object sender, EventArgs e)
{
if (RasHangUp(Connect) == 0)
{
MessageBox.Show("掛斷成功!");
}
else
MessageBox.Show("掛斷失敗!");
}
unsafe public static uint myRasDial(string EntryName, string UserName, string Password, out IntPtr RasConn)
{
/*EntryName ,UserName,Password - same as in RASDIALPARAMS structure (see MSDN)*/
uint r = 0;
RasConn = IntPtr.Zero;
byte[] bRASDIALPARAMS = new byte[1464];
fixed (byte* pAddr = bRASDIALPARAMS)
{
byte* pCurrent = pAddr;
Marshal.WriteInt32((IntPtr)pCurrent, bRASDIALPARAMS.Length);
pCurrent += 4;
foreach (byte b in Encoding.Unicode.GetBytes(EntryName))
{
Marshal.WriteByte((IntPtr)pCurrent, b);
pCurrent++;
}
pCurrent = pAddr + 0x192;//0x192 - offset for RASDIALPARAMS.UserName
foreach (byte b in Encoding.Unicode.GetBytes(UserName))
{
Marshal.WriteByte((IntPtr)pCurrent, b);
pCurrent++;
}
pCurrent = pAddr + 0x394;//0x394 - offset for RASDIALPARAMS.Password
foreach (byte b in Encoding.Unicode.GetBytes(Password))
{
Marshal.WriteByte((IntPtr)pCurrent, b);
pCurrent++;
}
r = RasDial(IntPtr.Zero, IntPtr.Zero, (IntPtr)pAddr, 0, IntPtr.Zero, ref RasConn);
}
return r;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -