c部分:
void CImExAPIDemoDlg::EnumDevice(){
TCHAR szDisk[26]={0};
DWORD dwSize;
CString csValue=https://bbs.csdn.net/topics/_T("");
int count=EnumateUSBDevice(szDisk);
m_ComList.ResetContent();
for(int iLoop=0;iLoop<count;iLoop++){
dwSize=GetUDiskCapacity(szDisk[iLoop]);
csValue.Format(_T("%c:%d(GB)"),szDisk[iLoop],dwSize/2048);
m_ComList.AddString(csValue);
}
我寫的vb部分....
Private Declare Function EnumateUSBDevice Lib "ImExLAPI.dll" (ByVal szdisk As String) As Boolean
Private Sub Command1_Click()
Text1.Text = EnumateUSBDevice(f)
end sub
提示錯誤49 為什么生成exe就可以 也偶爾會報錯 程式除錯是肯定報錯的,哪里出問題了呢 這個是列舉連接u口的設備的程式
整個程式很多,先看看這個 估計這個會了我也就舉一反三了。。。謝謝高手了!
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
你貼出來的c代碼,看不到EnumateUSBDevice的函式形式宣告啊。從它的呼叫陳述句來看:
int count=EnumateUSBDevice(szDisk);
你的VB6中API宣告應該是:
Private Declare Function EnumateUSBDevice Lib "ImExLAPI.dll" (ByVal szdisk As String) As Long
uj5u.com熱心網友回復:
不對,API宣告應該是這樣:Private Declare Function EnumateUSBDevice Lib "ImExLAPI.dll" (lpBuffer as Any) As Long
使用時:
dim arrBuffer(51) as byte
dim n as long
n = EnumateUSBDevice(arrBuffer(0))
c代碼中的TCHAR szDisk[26]={0};
這個szDisk是用來“輸出”的緩沖區,它這個26(對應26個驅動器號),有可能是26位元組,也有可能是52位元組。
因此我覺得在VB6中給它52位元組的緩沖區比較好(畢竟現在這么一丁點兒記憶體,根本不是算回事)。
uj5u.com熱心網友回復:
還是不行。。為什么除錯時出錯,生成EXE之后運行就可以呢 我寫的那個也是這樣uj5u.com熱心網友回復:
int EnumateUSBDevice(TCHAR *szDisk);這是宣告吧 這是指標嗎???
uj5u.com熱心網友回復:
API函式必須要有完整的介面說明,否則誰知道該怎么呼叫?轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/81827.html
標籤:API
上一篇:VB6.0 ListView分組
下一篇:求助:VB代碼實作打開我的電腦
