2010-02-04 80 views
0
dwReturn = mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE 
         , (DWORD_PTR)(LPVOID) &mciOpenParms); 

錯誤-message是「設備名稱已被用作此應用程序的別名,請使用唯一的別名。」爲什麼MCI_OPEN失敗並返回無效的設備ID?

它爲什麼會給出錯誤?

回答

0

當試圖重新打開已打開的mci設備時可能會發生這種情況。

如果在初次打開設備或文件時沒有指定MCI_OPEN_SHAREABLE標誌,那麼對設備或文件的所有後續MCI_OPEN命令都將失敗。

1

雖然技術上是正確的,但這個答案並沒有多大幫助。

「如果在最初打開設備或文件時未指定MCI_OPEN_SHAREABLE標誌,則後續對設備或文件的所有MCI_OPEN命令都將失敗。」

我發現我有任何MCI_OPEN之前做一個MCI_CLOSE,像這樣:

MciClose(void) 
{ 
int Result; 
MCI_GENERIC_PARMS mciGenericParams; 
DWORD dwFlags; 

mciGenericParams.dwCallback = (long)TestSoundForm->Handle; 

dwFlags = MCI_NOTIFY | MCI_WAIT; 
Result = mciSendCommand(MciDeviceID, MCI_CLOSE, dwFlags, (long)&mciGenericParams); 

// MCIERR_INVALID_DEVICE_ID occurs if the device is already closed. 
if(Result == 0 || Result == MCIERR_INVALID_DEVICE_ID)return; 
else MciError(Result, "MCI_CLOSE Error"); // display the error 
} 

而且,這裏是編程這些音頻設備一個很不錯的文章。

http://www.c-sharpcorner.com/uploadfile/GemingLeader/creating-a-sound-recorder-in-c-and-C-Sharp/

相關問題