c源码转易语言,C代码转易代码,求高手!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

最近在学习怎样管理系统中的设备管理中的硬件,从网上摘到三段代码,分别是查找计算机中上的串口,禁用串口,启用串口,但因为小弟对C代码不是很熟,所以有很多地方看不明白,求高手帮转成易代码,谢谢大家,我先把代码帖上来

第一段:

void enumCom()

{

HKEY hKey;

LONG lResult ;

TCHAR szKeyName[64] ;

RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("Drivers//BuiltIn"),0,0,&hKey);

int i = 0;

do

{

DWORD dwKeynameLength = MAX_PATH;

lResult = RegEnumKeyEx(hKey,i,szKeyName,&dwKeynameLength,0,NULL,NULL,NULL);

if(lResult != ERROR_SUCCESS)

{

break;

}

if( !wcsncmp(TEXT("Serial"),szKeyName,6))

{

TCHAR szComKey[MAX_PATH] = TEXT("Drivers//BuiltIn//");

wcscat(szComKey,szKeyName);

HKEY hComKey;

RegOpenKeyEx(HKEY_LOCAL_MACHINE,szComKey,0,0,&hComKey);

DWORD keyType;

DWORD dwLength = 20;

TCHAR buf[64];

RegQueryValueEx(hComKey,TEXT("Port"),0,&keyType,(BYTE *)buf,&dwLength);

//comArray[comNum] = wide2short(buf);

strcpy(comArray[nComCouont], wide2short(buf));

//ListBox_AddString(GetDlgItem(hDlg,IDC_LIST1),buf);

RegCloseKey(hComKey);

nComCouont++;

}

i++;

} while (lResult != ERROR_NO_MORE_ITEMS);

RegCloseKey(hKey);

}

第二段:

void CComCtrlDlg::OnBnClickedForbidCom()

{

// TODO: 在此添加控件通知处理程序代码

//枚举串口

if(nComCouont == 0)

enumCom();

if(nComCouont > 0)

{

hComList = new HANDLE[nComCouont];

ZeroMemory(hComList,(sizeof(HANDLE))*nComCouont);

}

int nOpenCom = 0;

for(int i=0; i< nComCouont; i++)

{

hComList[i] = CreateFile(short2wide(comArray[i]), GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_EXISTING, 0, NULL);

MTCHAR msg = {0};

wcscpy(msg, L"禁用串口: ");

wchar_t * wname = short2wide(comArray[i]);

wcscat(msg, wname);

if(hComList[i] == INVALID_HANDLE_VALUE)

{

wcscat(msg, L" 失败!");

}

else

{

nOpenCom++;

wcscat(msg, L" 成功!");

}

::MessageBox(NULL,msg,L"Notice",MB_OK);

}

if(nOpenCom == nComCouont)

::MessageBox(NULL, L"成功禁用所有串口", L"Notice", MB_OK );

}

第三段:

void CComCtrlDlg::OnBnClickedRestartCom()

{

// TODO: 在此添加控件通知处理程序代码

if(nComCouont == 0)

enumCom();

int nClose = 0;

for(int i=0; i< nComCouont; i++)

{

MTCHAR msg = {0};

wcscpy(msg, L"启用串口: ");

wchar_t * wname = short2wide(comArray[i]);

wcscat(msg, wname);

if(hComList[i] != INVALID_HANDLE_VALUE)

{

CloseHandle(hComList[i]);

hComList[i] = NULL;

nClose++;

wcscat(msg, L"成功!");

}

else

{

wcscat(msg, L" 失败!");

}

::MessageBox(NULL,msg,L"Notice",MB_OK);

}

if(nClose == nComCouont)

::MessageBox(NULL, L"成功启动所有串口", L"Notice", MB_OK );

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值