根据msdn里面说的
若 RasDial 中 RASDIALPARAMS 中 szEntryName 若为“”,则会用第一个modem来拨号
“ ...An empty string ("") specifies a simple modem connection on the first available modem port, in which case a nonempty szPhoneNumber must be provided. ”如果,我现在想从RasEnumDevices 得到的modem里面选择一个来进行拨号,应该如何做?希望在程序里面选择拨号设备,不是建立多个phone-book entry 来选择谢谢!
若 RasDial 中 RASDIALPARAMS 中 szEntryName 若为“”,则会用第一个modem来拨号
“ ...An empty string ("") specifies a simple modem connection on the first available modem port, in which case a nonempty szPhoneNumber must be provided. ”如果,我现在想从RasEnumDevices 得到的modem里面选择一个来进行拨号,应该如何做?希望在程序里面选择拨号设备,不是建立多个phone-book entry 来选择谢谢!
解决方案 »
- CHttpFile中openURL的参数有时候能用有时候不能用onst char * 只能用char*
- Wifiless profile怎么写
- 上一贴没找到答案,接着问!
- 存储方案优化
- 【讨论】请大家谈谈自己维护别人的工程/代码的经验和感受吧,有什么好方法。
- 客户端同时连接上万个服务器
- 讨论一下在Windows底下作系统软件的问题,UP有分
- 句柄到底是个什么东东?
- 各位大虾,有关ADO的问题....
- 为什么就算我没有设置settimer,ontimer依然会运行几次,而我设了settimer,ontimer依然只运行几次
- 在程序中怎么增加一个右键快捷菜单选项?
- 谁有Xtreme Toolkit 2.0 解密版?
CString strModemNameArray[10];
BOOL GetModemName(CString* strModemNameArray)
{
DWORD dwSize = 0;
DWORD dwNumOfDevices = 0;
DWORD dwRV = RasEnumDevices(NULL, &dwSize, &dwNumOfDevices); RASDEVINFO *lpRdi = new RASDEVINFO[dwNumOfDevices];
lpRdi->dwSize = sizeof(*lpRdi);
dwRV = RasEnumDevices(lpRdi, &dwSize, &dwNumOfDevices);
if(dwRV != 0)
{
delete []lpRdi;
return FALSE;
} CString strType;
int j = 0;
for(int i = 0; i < (int)dwNumOfDevices; i++)
{
strType = lpRdi[i].szDeviceType;
if(strType.CompareNoCase("modem") == 0) // = "RASDT_Modem";
{
strModemNameArray[j] = lpRdi[i].szDeviceName;
j++;
}
}
delete []lpRdi;
return TRUE;
}DWORD CreateNewEntry(CString strEntry,
CString strDeviceType,
CString strDeviceName,
DWORD dwfNetProtocols, DWORD dwFrameProtocal,
CString strLocalPhone,
CString strPhoneBook /*=NULL*/)
{
LPTSTR lpszEntry = strEntry.GetBuffer(1);
strEntry.ReleaseBuffer();
LPTSTR lpszPhoneBook = strPhoneBook.GetBuffer(1);
if(strPhoneBook == _T(""))
lpszPhoneBook = NULL;
strPhoneBook.ReleaseBuffer();
if(RasValidateEntryName(lpszPhoneBook, lpszEntry) != ERROR_ALREADY_EXISTS/*ERROR_INVALID_NAME*/)
{
RASENTRY rasEntry;
::ZeroMemory(&rasEntry, sizeof(rasEntry));
rasEntry.dwSize = sizeof(rasEntry);
strcpy(rasEntry.szLocalPhoneNumber, strLocalPhone);
rasEntry.dwfNetProtocols = dwfNetProtocols;
rasEntry.dwFramingProtocol = dwFrameProtocal;
strcpy(rasEntry.szAutodialDll, "");
strcpy(rasEntry.szDeviceType, strDeviceType);
strcpy(rasEntry.szDeviceName, strModemNameArray[0]);
strModemNameArray为你需要使用拨号的MODEM
DWORD dwRV = RasSetEntryProperties(lpszPhoneBook, (char*)lpszEntry, &rasEntry,
sizeof(rasEntry), NULL, 0);
return dwRV;
}
return ERROR_ALREADY_EXISTS;
}
DWORD RasDialSyn(“我的连接”,56321410, User, Password,)
{
LPTSTR lpszPhoneBook = NULL;
if(strPhoneBook != _T(""))
{
lpszPhoneBook = strPhoneBook.GetBuffer(1);
strPhoneBook.ReleaseBuffer();
}
RASDIALPARAMS dialParams;
::ZeroMemory(&dialParams, sizeof(dialParams) );
dialParams.dwSize = sizeof(dialParams);
strcpy(dialParams.szEntryName, strEntry);
strcpy(dialParams.szPhoneNumber, strPhoneNumber);
strcpy(dialParams.szUserName, strUserName);
strcpy(dialParams.szPassword, strPassword);
strcpy(dialParams.szDomain, strDomain); m_ConnectionHandle = NULL;
DWORD dwError = RasDial(NULL, lpszPhoneBook, &dialParams, NULL,
NULL, &m_ConnectionHandle);
return dwError;
}