最近在做一个pppoe拔号程序, 要做一个拔号连接,使得可以通过程序来进行拔号,通过Ras系列的api来做的.MSDN里,随便输入一个ras api的函数名,跳到ras function overview,RasCreatePhonebookEntry...
RasCreatePhonebookEntry函数调用RasEntryDlg这个函数的,RasEntryDlg这个函数参数要求传入一个RASENTRYDLG结构,创建连接是用RasSetEntryProperties来创建拔号连接.
#include "stdafx.h" #include <windows.h> #include <ras.h> 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; }