最簡單的方法:使用RasDial命令 RasDial是Windows內建的命令,使用非常簡單。實際使用是可將下面代碼儲存為一個批次檔,然後直接運行或在程式裡進行調用。rasdial.exe /disconnect '中斷連線 del "C:\Documents and Settings\hyuqin\Cookies\*.*" /Q '清除Cookie rasdial.exe 串連名 串連賬戶 串連密碼 '重新撥號 c# 代碼 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; using System.Text.RegularExpressions; using System.Diagnostics; using System.Threading; using System.Runtime; using System.Runtime.InteropServices; namespace RefreshIP { public partial class Dailer : Form { public Dailer() { InitializeComponent(); } private static Mutex mutex=new Mutex(); private Process dailer = new Process(); private void Form1_Load(object sender, EventArgs e) { this.Visible = true; } #region Functions int Desc; //Creating the extern function... [DllImport("wininet.dll")] private extern static bool InternetGetConnectedState(out int Description, int ReservedValue); //Creating a function that uses the API function... //if out parameter returns 18 then fail,if 81 then success public void IsConnectedToInternet() { InternetGetConnectedState(out Desc, 0); } private void StopDailer() { //Process dailer = new Process(); //dailer.StartInfo.FileName = "close.bat"; //dailer.Start(); //dailer.Close(); while(Desc == 81) { lock (dailer) { if (!IsAlive("rundll32")) { mutex.WaitOne(); dailer.StartInfo.FileName = "rundll32.exe"; dailer.StartInfo.Arguments = "iedkcs32.dll CloseRASConnections"; dailer.Start(); //Thread.Sleep(1000); mutex.ReleaseMutex(); } //dailer.WaitForExit(1000); //dailer.Close(); } IsConnectedToInternet(); } dailer.Close(); } private void StartDailer() { //Process dailer = new Process(); //dailer.StartInfo.FileName = "connect.bat"; //dailer.Start(); //dailer.Close(); while(Desc != 81) { lock (dailer) { if (!IsAlive("rasdial")) { mutex.WaitOne(); dailer.StartInfo.FileName = "rasdial.exe"; dailer.StartInfo.Arguments = txtDail.Text.Trim()+" "+txtName.Text.Trim()+" "+txtPWD.Text.Trim(); dailer.Start(); mutex.ReleaseMutex(); } //dailer.WaitForExit(1000); //dailer.Close(); //Thread.Sleep(1000); } IsConnectedToInternet(); } dailer.Close(); } private bool IsAlive(string name) { Process[] ps = Process.GetProcessesByName(name); if (ps.Length > 0) { return true; } else { return false; } } private bool ValidateInput() { if (string.IsNullOrEmpty(txtDail.Text.Trim())) { MessageBox.Show("請輸入寬頻撥號名稱!"); return false; } if (string.IsNullOrEmpty(txtName.Text.Trim())) { MessageBox.Show("請輸入寬頻撥號的使用者名稱!"); return false; } if (string.IsNullOrEmpty(txtPWD.Text.Trim())) { MessageBox.Show("請輸入寬頻撥號的密碼!"); return false; } return true; } #endregion private void btnStart_Click(object sender, EventArgs e) { if (ValidateInput()) { this.Visible = false; this.notifyIcon1.Icon = new Icon("open.ico"); IsConnectedToInternet(); this.StartDailer(); } } private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } private void button2_Click(object sender, EventArgs e) { IsConnectedToInternet(); StopDailer(); this.notifyIcon1.Icon = new Icon("close.ico"); MessageBox.Show("程式已經暫停!"); } private void btnMini_Click(object sender, EventArgs e) { this.Visible = false; } private void 設定ToolStripMenuItem_Click(object sender, EventArgs e) { this.Visible = true; } private void notifyIcon1_DoubleClick(object sender, EventArgs e) { this.Visible = !this.Visible; } private void btnOK_Click(object sender, EventArgs e) { if (ValidateInput()) { this.Visible = false; this.notifyIcon1.Icon = new Icon("open.ico"); IsConnectedToInternet(); this.StartDailer(); } } } |