⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rasdials.cpp

📁 CBC7寫的撥號上網DLL 可獲取IP,檢測連接狀態,挂斷 不足之處請見諒
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#include <Classes.hpp>

#include <ras.h>
#pragma hdrstop
#pragma argsused
HRASCONN hRasConn;
String EntryName;
String UserName;
String Password;
RASDIALPARAMS rdParams;
//---------------------------------------------------------------------------
extern "C" __declspec(dllexport)  String GetIp();
extern "C" __declspec(dllexport)  TStringList *getName();
extern "C" __declspec(dllexport)  bool GetOnlineStatus();
extern "C" __declspec(dllexport)  bool Hangup();
extern "C" __declspec(dllexport)  int Dial(String _EntryName, String _UserName, String _Password);
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved){
   return 1;
}
//---------------------------------------------------------------------------
String GetIp(){//获取IP地址
   RASCONN rasconn;
   DWORD dsize,dwcount;
   RASPPPIP raspppip;
   rasconn.dwSize=sizeof(RASCONN);
   raspppip.dwSize=sizeof(RASPPPIP);
   dsize=rasconn.dwSize;
   if(RasEnumConnections(&rasconn,&dsize,&dwcount)==0){
      dsize=sizeof(RASPPPIP);
      raspppip.dwSize=dsize;
      if(RasGetProjectionInfoA(rasconn.hrasconn,RASP_PppIp,&raspppip,&dsize)==0)
         return StrPas(raspppip.szIpAddress);
   }
   return "";
}
TStringList *getName(){//枚举网络连接
   TStringList *mList;
   mList = new TStringList();
   RASENTRYNAMEA rasname[20];
   memset(rasname,0,sizeof(rasname));
   for(int i=0;i<20;i++)
   rasname[i].dwSize=sizeof(RASENTRYNAMEA);
   DWORD ncb,dsize=0;
   ncb=sizeof(rasname);
   char buf[127];
   DWORD ii;
   ii=RasEnumEntries(NULL,NULL,rasname,&ncb,&dsize);
   if(ii==0){
      for(int i=0;i<dsize;i++)
         mList->Add(rasname[i].szEntryName);
   }
   hRasConn=0;
   return mList;
}
bool GetOnlineStatus(){//获取网络连接状态
   RASCONN rasconn;
   DWORD dwsize;
   DWORD intAvailabelConnections;
   dwsize=sizeof(RASCONN);
   rasconn.dwSize=dwsize;
   RasEnumConnectionsA(&rasconn,&dwsize,&intAvailabelConnections);
   return intAvailabelConnections > 0;
}
int Dial(String _EntryName, String _UserName, String _Password){
   memset(&rdParams,0,sizeof(RASDIALPARAMS));
   rdParams.dwSize=sizeof(RASDIALPARAMS);
   strcpy(rdParams.szEntryName,_EntryName.c_str());
   strcpy(rdParams.szUserName,_UserName.c_str());
   strcpy(rdParams.szPassword,_Password.c_str());
   memset(rdParams.szDomain,0,16);
   memset(rdParams.szPhoneNumber,0,129);
   memset(rdParams.szCallbackNumber,0,129);
   DWORD dwRet=RasDialA(NULL,NULL,&rdParams,NULL,NULL,&hRasConn);
   if(dwRet!=0){
      char buf[128];
      memset(buf,0,128);
      RasGetErrorStringA(dwRet, buf, sizeof(buf));
      return 1;//无法连接
   }
   return 0;//连接成功
}
bool Hangup(){//挂断
   if(hRasConn!=0){
      RasHangUpA(hRasConn);
      hRasConn=0;
      return true;
   }
   return false;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -