시리얼 포트를 스캔하실려면 레지스트리의
      HKEY_LOCALMACHINE\HARDWARE\DEVICEMAP\SERIALCOMM 항목을 찾아보면 됨.


int GetSerialPort(CStringList& list)
{
    HKEY  hSerialCom;
    TCHAR buffer[_MAX_PATH], data[_MAX_PATH];
    DWORD len, type, dataSize;
    long  i;
   
    if (::RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                       _T("HARDWARE\\DEVICEMAP\\SERIALCOMM"),
                       0,
                       KEY_ALL_ACCESS,
                       &hSerialCom) == ERROR_SUCCESS)
    {
        for (i=0, len=dataSize=_MAX_PATH;
            ::RegEnumValue(hSerialCom,
                           i,
                           buffer,
                           &len,
                           NULL,
                           &type,
                           (unsigned char*)data,
                           &dataSize)==ERROR_SUCCESS; i++, len=dataSize=_MAX_PATH)
        {
                data[dataSize-1] = NULL;
                if (strncmp(data, "COM", 3) == 0)
                    list.AddTail(data);
        }
 
 
        ::RegCloseKey(hSerialCom);
    }
 
    return list.GetCount();
}

출처 : http://littletrue.egloos.com/4294013

'MFC' 카테고리의 다른 글

시간 연산 방법  (0) 2011.08.26
레지스트리 관련 api함수들  (0) 2011.08.26
CImage 에서 Gdiplus::Image로 컨버팅하기  (0) 2011.08.26
릴리즈 모드로 디버깅 하기  (0) 2011.08.26
더블 버퍼링  (0) 2011.08.26
Posted by pkss
,