SHFILEOPSTRUCT 對檔案的操作

來源:互聯網
上載者:User

 char FromBuf[]= "f://*.*/0";//如果是上面的就可以,換成下面的就不可以,為什嗎??
//CString strFrom = "f://*.*"; LPTSTR FromBuf = (LPTSTR)(LPCTSTR)strFrom;
 charToBuf[]= "c://";

 SHFILEOPSTRUCT Op;
 Op.hwnd = NULL;
 Op.wFunc = FO_COPY;
 Op.pFrom = FromBuf;//FromBuf;
 Op.pTo = ToBuf;
 Op.fFlags = FOF_NOCONFIRMATION | FOF_RENAMEONCOLLISION;
 Op.fAnyOperationsAborted = FALSE;
 Op.hNameMappings = NULL;
 Op.lpszProgressTitle = NULL;
 if(SHFileOperation(&Op) == 0)
  MessageBox("複製完畢","提示",MB_OK|MB_ICONINFORMATION);

上面的原因應該是字串的原因,因為字串最後一個字元是NULL,那麼SHFileOperation認為它後面還是一個檔案(SHFileOperation以NULL分隔多個檔案),就會向後找檔案。
解決方案:
CString strFrom = "f://*.*"; 
int size = sizeof(strFrom);
CCHAR FromBuff[size + 1];
memcpy(FromBuff, strFrom, size);
FromBuff[size] = 0x0;//如果FromBuff長度大於Size時,一定要這樣
LPTSTR FromBuf = (LPTSTR)(LPCTSTR)strFrom;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.