最近开发一个软件需要连接串口外设,产品经理觉得手动选择串口号进行连接这样的操作实在太蠢了,要实现自动连接。这在Linux下很容易实现,在Windows下用C#读取注册表以前也实现过,本以为不会遇到问题,没想到网上搜到的代码都是同一个版本,不能直接运行,不知道是系统的原因还是VS版本的原因。
下面提供一个win10 x86/x64 VS2019能直接运行的程序代码
直接上能够运行的代码,再说调试过程
#include "string.h"
#include "stdio.h"
#include <vector>
#include <string>
#include <atlbase.h>
char* wideCharToMultiByte(wchar_t* pWCStrKey)
{
//第一次调用确认转换后单字节字符串的长度,用于开辟空间
int pSize = WideCharToMultiByte(CP_OEMCP, 0, pWCStrKey, wcslen(pWCStrKey), NULL, 0, NULL, NULL);
char* pCStrKey = new char[pSize + 1];
//第二次调用将双字节字符串转换成单字节字符串
WideCharToMultiByte(CP_OEMCP, 0, pWCStrKey, wcslen(pWCStrKey), pCStrKey, pSize, NULL, NULL);
pCStrKey[pSize] = '