『壹』 如何獲取設備管理器中串口列表
在做上位機開發的時抄候,一般都襲會用到串口,這是寫給新手看的。用串口通訊,例如,51單片機,物聯網等硬體通訊,都會用到串口。 右鍵→我的電腦→點擊 「管理」 在「設備管理器」中,會出現圖下圖所示,點解,埠。你會看到,計算機有哪些埠(前提,...
『貳』 vc++如何獲取主板晶元組信息(已經試過api、wmi、注冊表,緊急~)
wmi、注冊表、shell等編程方法,可以獲取到和windows設備管理器相同的信息,如果設備管理器沒有,標准編程方法是獲取不到的。
魯大師的檢測獲取,可不是簡單代碼可以完成的,如果不是商業應用,建議放棄,太麻煩了。這個首先,需要做一個r0級別的驅動程序,才可以直接獲取硬體信息,然後窗口程序和驅動程序進行信息交互。(對未識別硬體的簡單識別或SSD這樣的簡單判斷,這樣做就可以)
但獲取後,實際只是一組標識數據,是無法直接確定品牌和版本的,也無法直接判斷ssd的參數和品牌。要像魯大師那樣詳細的驅動信息,實際是需要一個非常詳細的硬體信息對比庫,將r0獲取的硬體標識數據和資料庫中每個產品的信息作對比,尤其是山寨產品,數據標識混亂,還需要一個智能匹配邏輯,根據周邊信息作綜合判定。這可不是一個簡單的事情,可以說是魯大師的「發家」根本。
『叄』 VB獲取設備管理器的列表 本人剛接觸Microsoft Visual.Basic.6.0.with.SP6
根據設備的Vid和Pid查找指定設備的過程如下:
調用HidD_GetHidGuid獲得設備類回型GUID
調用SetupDiGetClassDevs獲得設備類型GUID的全部信息答
調用SetupDiEnumDeviceInterfaces獲得特定設備識別信息
調用獲得特定設備路徑名
調用CreateFile獲得特定設備句柄
調用HidD_GetAttributes獲得特定設備的Vid和Pid
完成之後
調用SetupDiDestroyDeviceInfoList銷毀一個設備信息集合,並且釋放所有關聯的內存
『肆』 C#如何獲取設備管理器中設備的詳細信息(如圖)
我的電腦Win10不是你那樣顯示,見圖。所以你還是試試有沒有穩定的步驟指出手工查看的步驟:
另外下面的資料你也可以參考一下:
http://stackoverflow.com/questions/3331043/get-list-of-connected-usb-devices
https://msdn.microsoft.com/en-us/library/aa394506.aspx
『伍』 vc 2010 如何自動獲取系統的com口
VC/MFC 如何獲取系統中已有的COM口
VC/MFC 如何獲取系統中已有的COM口
VC/MFC 如何獲取系統中已有的COM口
int CUtil::GetSystemPorts(CString *pNameList, CString *pPortList)
{
CRegKey RegKey;
int nCount = 0;
if(RegKey.Open(HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm") == ERROR_SUCCESS)
{
while(true)
{
char ValueName[_MAX_PATH];
unsigned char ValueData[_MAX_PATH];
DWORD nValueSize = _MAX_PATH;
DWORD nDataSize = _MAX_PATH;
DWORD nType;
if(::RegEnumValue(HKEY(RegKey), nCount, ValueName, &nValueSize, NULL, &nType, ValueData, &nDataSize) == ERROR_NO_MORE_ITEMS)
{
break;
}
if(pNameList)
pNameList[nCount] = ValueName;
if(pPortList)
pPortList[nCount] = ValueData;
nCount++;
}
}
return nCount;
}
void CSyst_Setting::CheckComPort()
{
HKEY hKey;
DWORD dwCount=0;//保存檢索項的結果,即COM埠總數
DWORD dwBufLen=_MAX_PATH;//緩存大小
DWORD dwBufLen1[_MAX_PATH];//緩存大小
::FillMemory((LPVOID)dwBufLen1,_MAX_PATH*2,0xFF);
DWORD dwBufLen2[_MAX_PATH];//緩存大小
::FillMemory((LPVOID)dwBufLen2,_MAX_PATH*2,0xFF);
DWORD dwTp=REG_DWORD;//待檢索項的數據類型
CString subKey=_T("SYSTEM\\CurrentControlSet\\Services\\serenum\\Enum");
if(ERROR_SUCCESS!=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKey,
NULL,KEY_QUERY_VALUE,&hKey))
return;//打開注冊表失敗,退出程序
//注冊表打開成功,進一步檢索設備管理器的設備樹顯示的埠節點里COM口的個數
if(ERROR_SUCCESS!=::RegQueryValueEx(hKey, _T("Count"), NULL, &dwTp,
(LPBYTE)&dwCount, &dwBufLen))
{
::RegCloseKey( hKey );
return;//檢索失敗,退出
}
HKEY hKey1;
CString subKey1=_T("SYSTEM\\CurrentControlSet\\Enum\\");//的COM設備名字檢索路徑
CString strReg;
CString strACPI(_T('\0'),_MAX_PATH);
LPSTR lpstrACPI=strACPI.GetBuffer(_MAX_PATH);
CString strACPI1(_T('\0'),_MAX_PATH);
LPSTR lpstrACPI1=strACPI1.GetBuffer(_MAX_PATH);
for(unsigned int i=0;i<dwCount;i++)//COM埠數檢索成功,進一步檢索在設備管理器里出現的文字
{
strReg.Format("%d",i);
if(::RegQueryValueEx(hKey,(LPCSTR)strReg,NULL,
&dwTp,(LPBYTE)lpstrACPI,&dwBufLen1[i])
!=ERROR_SUCCESS)
break;//檢索失敗,退出
subKey1=subKey1+lpstrACPI;
if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKey1,
NULL,KEY_QUERY_VALUE,&hKey1)!=ERROR_SUCCESS)
break;//打開注冊表失敗,退出程序
DWORD dwTp1=REG_SZ;//此處即為COM的說明文字項數據類型
if(ERROR_SUCCESS!=::RegQueryValueEx(hKey1, _T("FriendlyName"), NULL, &dwTp1,
(LPBYTE)lpstrACPI1, &dwBufLen2[i]))//檢索COM口具體說明文字,即FriendlyName的值
break;//檢索失敗,退出
//-------------------------------
CString strNum;
// strNum =GetStr(lpstrACPI1);
strNum.Format(_T( "%s "), lpstrACPI1);
int i;
CString shuzi;
for(i=0;i< strNum.GetLength();i++)
{
int unicode = (int)strNum.GetAt(i);
if (unicode <= '9' && unicode >= '0')
{
shuzi += strNum.GetAt(i);
}
}
shuzi="COM"+shuzi;
m_intPort.AddString(shuzi);//添加檢索的值添加到組合列表框
m_intPort2.AddString(shuzi);//添加檢索的值添加到組合列表框
//---------------------------
// m_Com1.AddString(lpstrACPI1);//添加檢索的值添加到組合列表框
strReg.Empty();//重新對變數賦值,避免前後沖突
subKey1.Empty();
subKey1=_T("SYSTEM\\CurrentControlSet\\Enum\\");
strACPI.Empty();
strACPI1.Empty();
strACPI=CString(_T('\0'),_MAX_PATH);
strACPI1=CString(_T('\0'),_MAX_PATH);
}
strACPI.ReleaseBuffer();
strACPI1.ReleaseBuffer();
::RegCloseKey( hKey1 );
::RegCloseKey( hKey );
m_intPort.SetCurSel(0);
m_intPort2.SetCurSel(0);
}
『陸』 vc獲得usb設備名稱
如果抄是動態監測,即監測U盤插入可以通過監聽WM_DEVICECHANGE消息來實現,並從WM_DEVICECHANGE消息的lParam里獲取盤符。
如果是靜態檢測,即U盤已經插入,可以通過WinAPI GetDriveType 獲得驅動器類型。用一個循環判斷所有當前驅動器(結合GetLogicalDriveStrings),如果類型為DRIVE_REMOVABLE,則該驅動器為U盤。
具體代碼例子網上都可以搜索到的,google一下吧,祝你成功。
『柒』 在桌面狀態下設備管理器中CPU使用總是100%,另外有時還出現藍屏重啟現象,請幫忙解決.
經常出現CPU佔用100%的情況,主要問題可能發生在下面的某些方面:
CPU佔用率高的九種可能
1、防殺毒軟體造成故障
由於新版的KV、金山、瑞星都加入了對網頁、插件、郵件的隨機監控,無疑增大了系統負擔。處理方式:基本上沒有合理的處理方式,盡量使用最少的監控服務吧,或者,升級你的硬體配備。
2、驅動沒有經過認證,造成CPU資源佔用100%
大量的測試版的驅動在網上泛濫,造成了難以發現的故障原因。 處理方式:尤其是顯卡驅動特別要注意,建議使用微軟認證的或由官方發布的驅動,並且嚴格核對型號、版本。
3、病毒、木馬造成
大量的蠕蟲病毒在系統內部迅速復制,造成CPU佔用資源率據高不下。解決辦法:用可靠的殺毒軟體徹底清理系統內存和本地硬碟,並且打開系統設置軟體,察看有無異常啟動的程序。經常性更新升級殺毒軟體和防火牆,加強防毒意識,掌握正確的防殺毒知識。
4、控制面板—管理工具—服務—RISING REALTIME MONITOR SERVICE點滑鼠右鍵,改為手動。
5、開始->;運行->;msconfig->;啟動,關閉不必要的啟動項,重啟。
6、查看「svchost」進程。
svchost.exe是Windows XP系統的一個核心進程。svchost.exe不單單只出現在Windows XP中,在使用NT內核的Windows系統中都會有svchost.exe的存在。一般在Windows 2000中svchost.exe進程的數目為2個,而在Windows XP中svchost.exe進程的數目就上升到了4個及4個以上。
7、查看網路連接。主要是網卡。
8、查看網路連接
當安裝了Windows XP的計算機做伺服器的時候,收到埠 445 上的連接請求時,它將分配內存和少量地調配 CPU資源來為這些連接提供服務。當負荷過重的時候,CPU佔用率可能過高,這是因為在工作項的數目和響應能力之間存在固有的權衡關系。你要確定合適的 MaxWorkItems 設置以提高系統響應能力。如果設置的值不正確,伺服器的響應能力可能會受到影響,或者某個用戶獨占太多系統資源。
要解決此問題,我們可以通過修改注冊表來解決:在注冊表編輯器中依次展開[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver ]分支,在右側窗口中新建一個名為「maxworkitems」的DWORD值。然後雙擊該值,在打開的窗口中鍵入下列數值並保存退出:
如果計算機有512MB以上的內存,鍵入「1024」;如果計算機內存小於512 MB,鍵入「256」。
9、看看是不是Windows XP使用滑鼠右鍵引起CPU佔用100%
前不久的報到說在資源管理器裡面使用滑鼠右鍵會導致CPU資源100%佔用,
『捌』 如何獲取硬體信息,象windows的設備管理器一樣
計算機硬體信息可通過windows自帶設備管理器,或其他硬體信息檢測工具來快速獲取。
設備管理器:桌面「我的電腦」圖標點右鍵,選擇「設備管理器」(或「管理」,在「計算機管理」窗口左側選擇「設備管理器」)
魯大師:
其他軟體,如驅動精靈、驅動人生等也可快速、正確的獲取本機內硬體信息。
『玖』 怎樣用delphi獲得計算機設備管理器中的COM號
如果是獲取復計算機設備中制的 COM 埠列表,可以通過 windows 系統的注冊表中相關信息來完成,有關計算機設備中的 COM 埠列表數據,保存在注冊表的 HKEY_LOCAL_MACHINE
HardwareDevicemapSerialComm 節點。
以下是示例代碼:
usesSystem.Win.Registry;
{$R*.dfm}
procereTForm1.Button1Click(Sender:TObject);
var
reg:TRegistry;
ts:TStrings;
i:Integer;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('HardwareDevicemapSerialComm',False);
ts:=TStringList.Create;
reg.GetValueNames(ts);
reg.CloseKey;
reg.Free;
ts.Free;
end;