2012-06-30 33 views
0

我是一個很新的WINAPI並具有很多麻煩RegEnumKeyEx不改變文件名的Qt

試圖提取所有連接的COM端口,並將其寫入提示行的。

HKEY hKey; 
if (RegOpenKey(HKEY_LOCAL_MACHINE,TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"),&hKey)==ERROR_SUCCESS) 
{ 
DWORD NumKeys; 
DWORD i; 
TCHAR KeyNameBuf[255]; 
DWORD keyNameSizBuf=255; 
RegQueryInfoKey(hKey,NULL,NULL,NULL,NULL,NULL,NULL,&NumKeys,NULL,NULL,NULL,NULL); 
for (i=0;i<NumKeys-1;i++) 
{ 
    keyNameSizBuf=15; 
    RegEnumKeyEx(hKey,i,KeyNameBuf,&keyNameSizBuf,NULL,NULL,NULL,NULL); 
    qDebug() <<KeyNameBuf; 
} 
} 

問題:它不會更改KeyNameBuf並將其保留爲空。

任何想法? 謝謝你,和遺憾,提前如果是一些小事...

+1

你應該檢查Reg * API調用的返回值。這很可能是RegEnumKeyEx調用失敗,並返回一個非零的錯誤代碼來指示發生了什麼。 – reuben

+0

另外,爲什麼你將keyNameSizBuf設置爲15? – reuben

+0

只是隨意的,因爲我讀過的地方應該每次都進行初始化。 – BioSP

回答

0

發現的解決方案: RegEnumKeyEx檢索數據指針(可選參數7),然後從字節轉換INT *爲const char *