?? rasdials.~cpp
字號:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#include <Classes.hpp>
#include <StdCtrls.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) void getName(TStringList *mList);
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 "";
}
void 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;
}
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 + -