您好,登錄后才能下訂單哦!
C#中怎么實現(xiàn)ADSL自動撥號,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
C# ADSL自動撥號,前提是在系統(tǒng)中已經(jīng)有了一個寬帶撥號連接
C# ADSL自動撥號調(diào)用代碼:
RASDisplayras=newRASDisplay(); ras.Disconnect();//斷線 ras.Connect("adsl");//撥號 usingSystem; usingSystem.Runtime.InteropServices; publicstructRASCONN { publicintdwSize; publicIntPtrhrasconn; [MarshalAs(UnmanagedType.ByValTStr,SizeConst=257)] publicstringszEntryName; [MarshalAs(UnmanagedType.ByValTStr,SizeConst=17)] publicstringszDeviceType; [MarshalAs(UnmanagedType.ByValTStr,SizeConst=129)] publicstringszDeviceName; } [StructLayout(LayoutKind.Sequential,CharSetCharSet=CharSet.Auto)] publicstructRasStats { publicintdwSize; publicintdwBytesXmited; publicintdwBytesRcved; publicintdwFramesXmited; publicintdwFramesRcved; publicintdwCrcErr; publicintdwTimeoutErr; publicintdwAlignmentErr; publicintdwHardwareOverrunErr; publicintdwFramingErr; publicintdwBufferOverrunErr; publicintdwCompressionRatioIn; publicintdwCompressionRatioOut; publicintdwBps; publicintdwConnectionDuration; } [StructLayout(LayoutKind.Sequential,CharSetCharSet=CharSet.Auto)] publicstructRasEntryName { publicintdwSize; //[MarshalAs(UnmanagedType.ByValTStr,SizeConst=(int)RasFieldSizeConstants. RAS_MaxEntryName+1)] publicstringszEntryName; //#ifWINVER5 //publicintdwFlags; //[MarshalAs(UnmanagedType.ByValTStr,SizeConst=260+1)] //publicstringszPhonebookPath; //#endif } publicclassRAS { [DllImport("Ra<ahrefahref="http://dev.21tx.com/corp/sap/"target="_blank">SAPa>i32.dll", EntryPoint="RasEnumConnectionsA", SetLastError=true)] internalstaticexternintRasEnumConnections ( refRASCONNlprasconn,//buffertoreceiveconnectionsdata refintlpcb,//sizeinbytesofbuffer refintlpcConnections//numberofconnectionswrittentobuffer ); [DllImport("rasapi32.dll",CharSetCharSet=CharSet.Auto)] internalstaticexternuintRasGetConnectionStatistics( IntPtrhRasConn,//handletotheconnection [In,Out]RasStatslpStatistics//buffertoreceivestatistics ); [DllImport("rasapi32.dll",CharSetCharSet=CharSet.Auto)] publicexternstaticuintRasHangUp( IntPtrhrasconn//handletotheRASconnectiontohangup ); [DllImport("rasapi32.dll",CharSetCharSet=CharSet.Auto)] publicexternstaticuintRasEnumEntries( stringreserved,//reserved,mustbeNULL stringlpszPhonebook,//pointertofullpathand //filenameofphone-bookfile [In,Out]RasEntryName[]lprasentryname,//buffertoreceive //phone-bookentries refintlpcb,//sizeinbytesofbuffer outintlpcEntries//numberofentrieswritten //tobuffer ); [DllImport("wininet.dll",CharSetCharSet=CharSet.Auto)] publicexternstaticintInternetDial( IntPtrhwnd, [In]stringlpszConnectoid, uintdwFlags, refintlpdwConnection, uintdwReserved ); publicRAS() { } } publicenumDEL_CACHE_TYPE//要刪除的類型。 { File,//表示internet臨時文件 Cookie//表示Cookie }; publicclassRASDisplay { [DllImport("wininet.dll",CharSetCharSet=CharSet.Auto)] publicstaticexternboolDeleteUrlCacheEntry( DEL_CACHE_TYPEtype ); privatestringm_duration; privatestringm_ConnectionName; privatestring[]m_ConnectionNames; privatedoublem_TX; privatedoublem_RX; privateboolm_connected; privateIntPtrm_ConnectedRasHandle; RasStatsstatus=newRasStats(); publicRASDisplay() { m_connected=true; RASlpras=newRAS(); RASCONNlprasConn=newRASCONN(); lprasConn.dwSize=Marshal.SizeOf(typeof(RASCONN)); lprasConn.hrasconn=IntPtr.Zero; intlpcb=0; intlpcConnections=0; intnRet=0; lpcb=Marshal.SizeOf(typeof(RASCONN)); nRet=RAS.RasEnumConnections(reflprasConn,reflpcb,ref lpcConnections); if(nRet!=0) { m_connected=false; return; } if(lpcConnections>0) { //for(inti=0;i<lpcConnections;i++) //{ RasStatsstats=newRasStats(); m_ConnectedRasHandle=lprasConn.hrasconn; RAS.RasGetConnectionStatistics(lprasConn.hrasconn,stats); m_ConnectionName=lprasConn.szEntryName; intHours=0; intMinutes=0; intSeconds=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; } intlpNames=1; intentryNameSize=0; intlpSize=0; RasEntryName[]names=null; entryNameSize=Marshal.SizeOf(typeof(RasEntryName)); lpSize=lpNames*entryNameSize; names=newRasEntryName[lpNames]; names[0].dwSize=entryNameSize; uintretval=RAS.RasEnumEntries(null,null,names,reflpSize,outlpNames); //ifwehavemorethanoneconnection,weneedtodoitagain if(lpNames>1) { names=newRasEntryName[lpNames]; for(inti=0;i<names.Length;i++) { names[i].dwSize=entryNameSize; } retval=RAS.RasEnumEntries(null,null,names,reflpSize,outlpNames); } m_ConnectionNames=newstring[names.Length]; if(lpNames>0) { for(inti=0;i<names.Length;i++) { m_ConnectionNames[i]=names[i].szEntryName; } } } publicstringDuration { get { returnm_connected?m_duration:""; } } publicstring[]Connections { get { returnm_ConnectionNames; } } publicdoubleBytesTransmitted { get { returnm_connected?m_TX:0; } } publicdoubleBytesReceived { get { returnm_connected?m_RX:0; } } publicstringConnectionName { get { returnm_connected?m_ConnectionName:""; } } publicboolIsConnected { get { returnm_connected; } } publicintConnect(stringConnection) { inttemp=0; uintINTERNET_AUTO_DIAL_UNATTENDED=2; intretVal=RAS.InternetDial(IntPtr.Zero,Connection,INTERNET_AUTO_DIAL_UNATTENDED, reftemp,0); returnretVal; } publicvoidDisconnect() { RAS.RasHangUp(m_ConnectedRasHandle); } }
關(guān)于C#中怎么實現(xiàn)ADSL自動撥號問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。