如题,我现在要获取电脑上有几个有效COM串口,然后展现给用户,请问有什么有效的方法来实现吗?需要成熟的建议。就是正规的实现方法。
解决方案 »
- 用MFC建立一个简单的窗口,如何实现当鼠标移到文本上时可以显示一个文本框
- 关于windows 8的疑问
- InitInstance函数中对话框的问题//这段代码的作用可以用this指针调用对话框类的成员函数?这个this指针可以同时,被多个线程使用吗?
- 动态创建N个按钮,消息响应要怎么写?
- AMT 的SDK中LocalAgent 本地执行失败(进者有分)
- 寻用VC开发IVR系统朋友,解决几个问题报酬从优
- 如何调用对话框的WM_PAINT消息
- GCC可以在Windows下安装吗
- 哪里错了???
- 在win8下的CListCtrl的问题
- 希望大家提点意见:多串口控制选择 CSerialPort 还是 串口控件????
- CString 按字节反转
int rtn;
rtn = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm",
NULL, KEY_READ, &hKey);
if( rtn == ERROR_SUCCESS) // 打开串口注册表
{
int i=0;
char portName[256],commName[256];
DWORD dwLong,dwSize;
while(1)
{
dwSize = sizeof(portName);
dwLong = dwSize;
rtn = RegEnumValue( hKey, i, portName, &dwLong,
NULL, NULL, (PUCHAR)commName, &dwSize );
if( rtn == ERROR_NO_MORE_ITEMS ) // 枚举串口
break;
i++;
}
RegCloseKey(hKey);
}
HKEY hKey;
CString strConn[20];
long lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Hardware\\DeviceMap\\SerialComm"), 0,KEY_READ,&hKey);
//unsigned char strDSName[80]="\\Device\\Serial3";
CString strDSName[20];
for(int i=0;i<20;i++)
strDSName[i].Format("\\Device\\Serial%d",i);LPBYTE Conn_Get=new BYTE[80];
DWORD type_2=REG_SZ;
DWORD cbData_2=80;
i=0;
while(i<20)
{
lResult = RegQueryValueEx(hKey,(LPCTSTR)strDSName[i],NULL,&type_2,
Conn_Get,&cbData_2);
if(lResult== ERROR_SUCCESS)
{
strConn[i] = CString(Conn_Get);
}
i++;
}