COMポートの一覧取得ソース(MFC版 VC++)
/////////////////////////////////////////////////////////////////////////
// COMポート番号一覧取得
// Win32版(一部MFC利用)
/////////////////////////////////////////////////////////////////////////
HKEY hKey = NULL;
DWORD dwCount = 0;
TCHAR cNameBuff[256];
BYTE byValueBuff[256];
DWORD dwNameBuffSize = 0;
DWORD dwValueBuffSize = 0;
DWORD dwType = 0;
// COMポート番号一覧取得
// Win32版(一部MFC利用)
/////////////////////////////////////////////////////////////////////////
HKEY hKey = NULL;
DWORD dwCount = 0;
TCHAR cNameBuff[256];
BYTE byValueBuff[256];
DWORD dwNameBuffSize = 0;
DWORD dwValueBuffSize = 0;
DWORD dwType = 0;
CStringArray strArray;
int i;
int i;
/////////////////////////////////////////////////////////////////////////
// COMポートの情報が存在するキーを得る
/////////////////////////////////////////////////////////////////////////
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DEVICEMAP\\SERIALCOMM" ), 0, KEY_READ, &hKey) != ERROR_SUCCESS){
// COMポートの情報が存在するキーを得る
/////////////////////////////////////////////////////////////////////////
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DEVICEMAP\\SERIALCOMM" ), 0, KEY_READ, &hKey) != ERROR_SUCCESS){
goto EXIT;
}/////////////////////////////////////////////////////////////////////////
// 要素数を得る。
/////////////////////////////////////////////////////////////////////////
if(RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL, &dwCount, NULL, NULL, NULL, NULL) != ERROR_SUCCESS ){
// 要素数を得る。
/////////////////////////////////////////////////////////////////////////
if(RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL, &dwCount, NULL, NULL, NULL, NULL) != ERROR_SUCCESS ){
goto EXIT;
}/////////////////////////////////////////////////////////////////////////
// 要素数分を繰り返す。
/////////////////////////////////////////////////////////////////////////
for(i = 0 ; i < (int)dwCount ; i++){
// 要素数分を繰り返す。
/////////////////////////////////////////////////////////////////////////
for(i = 0 ; i < (int)dwCount ; i++){
dwNameBuffSize = sizeof(cNameBuff);
dwValueBuffSize = sizeof(byValueBuff);
// 一覧を取り出す
if(RegEnumValue(hKey, i, &cNameBuff[0], &dwNameBuffSize, NULL, &dwType, &byValueBuff[0], &dwValueBuffSize) != ERROR_SUCCESS ){
// 名称で文字列配列を作成する。
strArray.Add(byValueBuff);
}dwValueBuffSize = sizeof(byValueBuff);
// 一覧を取り出す
if(RegEnumValue(hKey, i, &cNameBuff[0], &dwNameBuffSize, NULL, &dwType, &byValueBuff[0], &dwValueBuffSize) != ERROR_SUCCESS ){
goto EXIT;
}// 名称で文字列配列を作成する。
strArray.Add(byValueBuff);