最近在做一个pppoe拔号程序, 要做一个拔号连接,使得可以通过程序来进行拔号,通过Ras系列的api来做的.MSDN里,随便输入一个ras api的函数名,跳到ras function overview,RasCreatePhonebookEntry...
RasCreatePhonebookEntry函数调用RasEntryDlg这个函数的,RasEntryDlg这个函数参数要求传入一个RASENTRYDLG结构,创建连接是用RasSetEntryProperties来创建拔号连接.
int _tmain(int argc, _TCHAR* argv[])
{
LPRASENTRY lpRasEntry = NULL;
DWORD cb = sizeof(RASENTRY);
DWORD dwBufferSize = 0;
DWORD dwRet = 0;
// 取得entry的大小,这句也不知道是不是必须的,因为sizeof(RASENTRY)和这里取到的dwBufferSize是一样的,不过还是Get一下安全点
RasGetEntryProperties(NULL, L"", NULL, &dwBufferSize, NULL, NULL);
if (dwBufferSize == 0)
return -1;
lpRasEntry = (LPRASENTRY)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwBufferSize);
if (lpRasEntry == NULL)
return -2;
ZeroMemory(lpRasEntry, sizeof(RASENTRY));
lpRasEntry->dwSize = dwBufferSize;
lpRasEntry->dwfOptions = RASEO_PreviewUserPw|RASEO_RemoteDefaultGateway; // RASEO_PreviewUserPw需要显示ui
lpRasEntry->dwType = RASET_Broadband;
lstrcpy(lpRasEntry->szDeviceType, RASDT_PPPoE);
lstrcpy(lpRasEntry->szDeviceName, L"zzc");
lpRasEntry->dwfNetProtocols = RASNP_Ip;
lpRasEntry->dwFramingProtocol = RASFP_Ppp;
dwRet = RasSetEntryProperties(NULL, L"my con", lpRasEntry, dwBufferSize, NULL, 0); // 创建连接
HeapFree(GetProcessHeap(), 0, (LPVOID)lpRasEntry);
if (dwRet != 0)
return 3;
return 0;
}