欢迎访问 生活随笔!

尊龙游戏旗舰厅官网

当前位置: 尊龙游戏旗舰厅官网 > 编程语言 > c# >内容正文

c#

c# 实现adsl自动断网和拨号(适用于拨号用户) -尊龙游戏旗舰厅官网

发布时间:2025/1/21 c# 27 豆豆
尊龙游戏旗舰厅官网 收集整理的这篇文章主要介绍了 c# 实现adsl自动断网和拨号(适用于拨号用户) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

封装类:

using system; using system.runtime.interopservices;public struct rasconn {public int dwsize;public intptr hrasconn;[marshalas(unmanagedtype.byvaltstr, sizeconst = 257)]public string szentryname;[marshalas(unmanagedtype.byvaltstr, sizeconst = 17)]public string szdevicetype;[marshalas(unmanagedtype.byvaltstr, sizeconst = 129)]public string szdevicename; }[structlayout(layoutkind.sequential, charset = charset.auto)] public struct rasstats {public int dwsize;public int dwbytesxmited;public int dwbytesrcved;public int dwframesxmited;public int dwframesrcved;public int dwcrcerr;public int dwtimeouterr;public int dwalignmenterr;public int dwhardwareoverrunerr;public int dwframingerr;public int dwbufferoverrunerr;public int dwcompressionratioin;public int dwcompressionratioout;public int dwbps;public int dwconnectionduration; }[structlayout(layoutkind.sequential, charset = charset.auto)] public struct rasentryname {public int dwsize;//[marshalas(unmanagedtype.byvaltstr,sizeconst=(int)rasfieldsizeconstants.ras_maxentryname 1)]public string szentryname;//#if winver5// public int dwflags;// [marshalas(unmanagedtype.byvaltstr,sizeconst=260 1)]// public string szphonebookpath;//#endif } public class ras {[dllimport("rasapi32.dll", entrypoint = "rasenumconnectionsa",setlasterror = true)]internal static extern int rasenumconnections(ref rasconn lprasconn, // buffer to receive connections dataref int lpcb, // size in bytes of bufferref int lpcconnections // number of connections written to buffer );[dllimport("rasapi32.dll", charset = charset.auto)]internal static extern uint rasgetconnectionstatistics(intptr hrasconn, // handle to the connection[in, out]rasstats lpstatistics // buffer to receive statistics );[dllimport("rasapi32.dll", charset = charset.auto)]public extern static uint rashangup(intptr hrasconn // handle to the ras connection to hang up );[dllimport("rasapi32.dll", charset = charset.auto)]public extern static uint rasenumentries(string reserved, // reserved, must be nullstring lpszphonebook, // pointer to full path and// file name of phone-book file[in, out]rasentryname[] lprasentryname, // buffer to receive// phone-book entriesref int lpcb, // size in bytes of bufferout int lpcentries // number of entries written// to buffer );[dllimport("wininet.dll", charset = charset.auto)]public extern static int internetdial(intptr hwnd,[in]string lpszconnectoid,uint dwflags,ref int lpdwconnection,uint dwreserved);public ras(){} } public enum del_cache_type //要删除的类型。 {file,//表示internet临时文件cookie //表示cookie }public class rasdisplay {[dllimport("wininet.dll", charset = charset.auto)]public static extern bool deleteurlcacheentry(del_cache_type type);private string m_duration;private string m_connectionname;private string[] m_connectionnames;private double m_tx;private double m_rx;private bool m_connected;private intptr m_connectedrashandle;rasstats status = new rasstats();public rasdisplay(){m_connected = true;ras lpras = new ras();rasconn lprasconn = new rasconn();lprasconn.dwsize = marshal.sizeof(typeof(rasconn));lprasconn.hrasconn = intptr.zero;int lpcb = 0;int lpcconnections = 0;int nret = 0;lpcb = marshal.sizeof(typeof(rasconn));nret = ras.rasenumconnections(ref lprasconn, ref lpcb, reflpcconnections);if (nret != 0){m_connected = false;return;}if (lpcconnections > 0){//for (int i = 0; i < lpcconnections; i )//{rasstats stats = new rasstats();m_connectedrashandle = lprasconn.hrasconn;ras.rasgetconnectionstatistics(lprasconn.hrasconn, stats);m_connectionname = lprasconn.szentryname;int hours = 0;int minutes = 0;int seconds = 0;hours = ((stats.dwconnectionduration / 1000) / 3600);minutes = ((stats.dwconnectionduration / 1000) / 60) - (hours * 60);seconds = ((stats.dwconnectionduration / 1000)) - (minutes * 60) - (hours * 3600);m_duration = hours " hours " minutes " minutes " seconds " secs";m_tx = stats.dwbytesxmited;m_rx = stats.dwbytesrcved;//} }else{m_connected = false;}int lpnames = 1;int entrynamesize = 0;int lpsize = 0;rasentryname[] names = null;entrynamesize = marshal.sizeof(typeof(rasentryname));lpsize = lpnames * entrynamesize;names = new rasentryname[lpnames];names[0].dwsize = entrynamesize;uint retval = ras.rasenumentries(null, null, names, ref lpsize, out lpnames);//if we have more than one connection, we need to do it againif (lpnames > 1){names = new rasentryname[lpnames];for (int i = 0; i < names.length; i ){names[i].dwsize = entrynamesize;}retval = ras.rasenumentries(null, null, names, ref lpsize, out lpnames);}m_connectionnames = new string[names.length];if (lpnames > 0){for (int i = 0; i < names.length; i ){m_connectionnames[i] = names[i].szentryname;}}}public string duration{get{return m_connected ? m_duration : "";}}public string[] connections{get{return m_connectionnames;}}public double bytestransmitted{get{return m_connected ? m_tx : 0;}}public double bytesreceived{get{return m_connected ? m_rx : 0;}}public string connectionname{get{return m_connected ? m_connectionname : "";}}public bool isconnected{get{return m_connected;}}public int connect(string connection){int temp = 0;uint internet_auto_dial_unattended = 2;int retval = ras.internetdial(intptr.zero, connection, internet_auto_dial_unattended, ref temp, 0);return retval;}public void disconnect(){ras.rashangup(m_connectedrashandle);} }

 


调用方法:

rasdisplay ras = new rasdisplay(); ras.disconnect();//断开连接 ras.connect("adsl");//重新拨号

 

注意:断开后连接时,如果不想出现确认对话框,请按下面的步骤进行设置:

1、右击“网上邻居”--属性;
2、在随后出现的“宽带连接”窗口中,右击宽带连接,单击“属性”;
3、在随后出现的属性对话框中,单击“选项”;
4、把随后出现的“提示名称、密码和证书等”前面的对号去掉,点“确定”退出;

转载于:https://www.cnblogs.com/qigege/p/4740279.html

总结

以上是尊龙游戏旗舰厅官网为你收集整理的c# 实现adsl自动断网和拨号(适用于拨号用户)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得尊龙游戏旗舰厅官网网站内容还不错,欢迎将尊龙游戏旗舰厅官网推荐给好友。

网站地图