////////////////////////////////////////////////////////////////////////////////////////////////////////////SpecialSample2 //モデム名をレジストリから取得し、comポート番号をレジストリから取得する ////////////////////////////////////////////////////////////////////////////////////////////////////////////SpecialSample2 void CShareDlg::OnButton27() { CString csModemBase; OSVERSIONINFO osvi; osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO ); //OSバージョン取得 GetVersionEx( &osvi ); // //OSにより取得するレジストリパスが違う // if ( osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS ) //Windows95/98系 { csModemBase = "SYSTEM\\CurrentControlSet\\Services\\Class\\Modem\\"; } else //WindowsNT系 { csModemBase = "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E96D-E325-11CE-BFC1-08002BE10318}\\"; } CString csRegKey; CString csModemName; CString csComPort; for(int i=0;i<100;i++){ //レジストリにインデックス番号を付加してレジストリパスを完成させる csRegKey.Format("%s%04d", csModemBase, i); //モデム名取得 csModemName = GetProfileString( csRegKey, "Model", "", HKEY_LOCAL_MACHINE ); //無ければこれでおわり if(csModemName.IsEmpty()){ continue; } //comポートを取得する csComPort = GetComPort(csRegKey, i); TRACE("csModemName = %s %s\n", csModemName, csComPort); } }