获取系统串口号

原来C++Builder6在XP下获取串口的方法:

void TTools::GetSystemPortList(TStringList * pList)
{
        TRegistry *regkey=new TRegistry();
        pList->Clear();
        regkey->RootKey=HKEY_LOCAL_MACHINE;
        TStringList *KeyNames;
        KeyNames=new TStringList();
        regkey->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM",false);
        regkey->GetValueNames(KeyNames);
        for(int i=0;i<=(KeyNames->Count-1);i++)
        {
           AnsiString a = regkey->ReadString(KeyNames->Strings[i]);
           pList->Add(a);
        }
       
        regkey->CloseKey();
        delete KeyNames;
        delete regkey;
}

这种方法,编译好的程序,在Win10下无效了.在Win10直接用API读注册表获取

void TTools::GetSystemAllPort(TStringList * pList)
{
    HKEY hKey;
    DWORD result;
    TCHAR valueName[255];
    TCHAR data[255];
    DWORD valueNameSize,dataSize;
    DWORD i;
    result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm", 
             NULL, KEY_READ, &hKey);//读取注册表串口信息
    if(ERROR_SUCCESS == result)
    {
        for(i=0;i<256 ;i++)
        {
            valueNameSize = dataSize = sizeof(valueName) / sizeof(TCHAR);
            result = RegEnumValue(hKey, i, valueName, &valueNameSize, NULL, NULL, 
                     (LPBYTE)data, &dataSize);
            if(ERROR_NO_MORE_ITEMS == result )
            {
                break;
            }
            else
            {
               pList->Add((char*)data);
            }
        }
    }
    else
    {
        ::MessageBox(0,"PORT ERROR!","Error",0);
    }
    RegCloseKey(hKey);
}

原文地址:http://blog.51cto.com/9233403/2067175

时间: 2024-10-19 14:54:57

获取系统串口号的相关文章

C# 获取 串口 设备名称 与 串口号 ManagementObjectSearcher类

1.效果图: 2.代码 class Program { static void Main(string[] args) { GetComList(); } private static void GetComList() {try { using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PnPEntity")) { Console.WriteLine(&

Visual studio C++ MFC应用程序自动探测串口号

最近学习Visual studio C++的软件开发,做个串口工具,使用combo box下拉选项选择串口号,有两种方式,第一种自动添加串口号到工具代码中,比如常见的一些串口工具可以选择COM1~COM9的串口号,只需要在代码初始化的时候,加入串口号序列就可以,或者也可以在combo box属性菜单Data中添加“COM1;COM2;COM3;……COM9;”,此种办法在实际使用的时候,会比较麻烦,因为本来只有2个串口,却要在10来个序列中选择一个. 因此还有另外一种比较常见的处理方式,这种方式

2016-06-02 获取系统当前日期和时间并显示在某个元素上

1. <script> window.onload=function(){ getDateAndTime(); setInterval(getDateAndTime,1000); } //获取系统的日期和时间并显示在某个元素上 function getDateAndTime(){ var myDate = new Date(); var year = myDate.getFullYear(); var month = myDate.getMonth()+1; var day = myDate.

Android如何获取系统高度、标题栏和状态栏高度

在android应用中,有时需要计算个View的位置,导致需要计算状态栏高度,标题栏高度等信息.为以后方便,在此做个简单记录. 晒代码前先了解一下android屏幕区域的划分,如下图(该图引用自此文http://www.iteye.com/topic/828830 ) 1. 屏幕区域的获取 [java] view plaincopy activity.getWindowManager().getDefaultDisplay(); 2.应用区域的获取 [java] view plaincopy R

js 获取系统字体

参考自网上,非原创. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 </head> 6 <body> 7 <div style="left: 0px; positon: absolute; top: 0px;

java中获取系统属性以及环境变量

java中获取系统属性以及环境变量 System.getEnv()和System.getProperties()的差别 从概念上讲,系统属性 和环境变量 都是名称与值之间的映射.两种机制都能用来将用户定义的信息传递给 Java 进程.环境变量产生很多其它的全局效应,由于它们不仅对Java 子进程可见,并且对于定义它们的进程的全部子进程都是可见的.在不同的操作系统上,它们的语义有细微的区别,比方,不区分大写和小写.由于这些原因,环境变量更可能有意料不到的副作用.最好在可能的地方使用系统属性.环境变

获取系统联系人&&添加系统联系人

联系人在这个包下 contacts2.db数据库 查询所有的联系人; 需要读写contact权限,注意Uri   content是小写的 找这个错误找了一个小时,汗-  -!! 这个程序只是添加个按钮. package com.example.getcontacts; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android

Android中StatFs获取系统/sdcard存储(剩余空间)大小

package com.orgcent.util; import java.io.File; import android.os.Environment; import android.os.StatFs; public class MemoryStatus { static final int ERROR = -1; /** * 外部存储是否可用 * @return */ static public boolean externalMemoryAvailable() { return andr

llinux获取系统时间

linux中获取当前时间.统计程序运行时间,可以使用gettimeofday()得到毫秒级的时间统计,利用rdtsc指令获取纳秒级时间统计. gettimeofday() 它是一个linux C库函数,封装了系统调用sys_gettimeofday(),在X86_64系统中,该函数是调用vsyscall()来访问内核数据,而在X386系统上是系统调用syscall. syscall与vsyscall的区别,只有gettimeofday.time.getcpu这几个linux C库函数的系统调用时