void CUDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CString strdir;
for(char cbNum='D';cbNum<='Z';cbNum++)
{
strdir.Empty();
strdir.Format("c%",cbNum);
if(GetDriveType((LPCTSTR)strdir)==DRIVE_REMOVABLE)
{
strdir+="\\autorun.inf";
WIN32_FIND_DATA FileData;
HANDLE hSearch=FindFirstFile(strdir,&FileData);
if(hSearch!=INVALID_HANDLE_VALUE)
{ g_strFile=strdir;
ShowWindow(SW_SHOW);
SetDlgItemText(IDC_PATH,strdir);
Beep(2500,500);
KillTimer(0);
GetDlgItem(IDC_BTN_KILL)->EnableWindow(TRUE);
}
CloseHandle(hSearch);
}
} CDialog::OnTimer(nIDEvent);
}mfc,我设定了WM_TIMER,每隔2秒扫描,上面是在ontimer的函数,想要实现的功能是:每隔一段时间就扫描,若发现移动硬盘
再查看里面是否有autornu.inf文件,有就删除,删除功能在其他实现.我的编译都正确,但执行可执行文件时就会死掉,弹出
错误信息,并被关闭exe文件,我调试发现strdir.Format("%c",cbNum),这个地方有问题,求助各位高手解决
{
// TODO: Add your message handler code here and/or call default
CString strdir;
for(char cbNum='D';cbNum<='Z';cbNum++)
{
strdir.Empty();
strdir.Format("c%",cbNum);
if(GetDriveType((LPCTSTR)strdir)==DRIVE_REMOVABLE)
{
strdir+="\\autorun.inf";
WIN32_FIND_DATA FileData;
HANDLE hSearch=FindFirstFile(strdir,&FileData);
if(hSearch!=INVALID_HANDLE_VALUE)
{ g_strFile=strdir;
ShowWindow(SW_SHOW);
SetDlgItemText(IDC_PATH,strdir);
Beep(2500,500);
KillTimer(0);
GetDlgItem(IDC_BTN_KILL)->EnableWindow(TRUE);
}
CloseHandle(hSearch);
}
} CDialog::OnTimer(nIDEvent);
}mfc,我设定了WM_TIMER,每隔2秒扫描,上面是在ontimer的函数,想要实现的功能是:每隔一段时间就扫描,若发现移动硬盘
再查看里面是否有autornu.inf文件,有就删除,删除功能在其他实现.我的编译都正确,但执行可执行文件时就会死掉,弹出
错误信息,并被关闭exe文件,我调试发现strdir.Format("%c",cbNum),这个地方有问题,求助各位高手解决
什么问题?
但一旦加上循环不管是for还是用if构造的循环,编译时能过但调试时就会死.
str+=':';
得了顺便说下 VS2005下没问题,哪个问题应该是6.0下的问题
至于那个for循环可能是你把某个资源分配给一个变量之后并没有在该资源用完之后释放该资源,所以造成试图再次分配的时候失败.您最好把出错的信息也发布出来.
c[0] = cbNum;这样更快,更安全。何必在这种场合下,用CString呢?
strdir.Format("%c",cbNum);