|
안녕하세요...!!
먼저 이글을 읽어 주신분에게 다시 한번 감사드립니다.!!!
local 네트워크를 사용해서(하나의 컴퓨터에서 일부 파일을 공유한후 그것을 네트워크 드라이브를 설정하고 그 폴더에 다른 컴퓨터에서 파일을 전송하는 프로그램입니다..)
그냥 제가 프로그램 만든 컴퓨터에는 잘되는데..이상하게 네트워크 드라이브를 잡고 하면
복사 속도도 느리고..공유된 컴퓨터의 컴퓨터 관리를 열어 보니까...이런현상이 발견이 되었는데(그림과 같이 파일이 열려 있는 상태로 계속존재- 참고로 제컴에선 그런 증상이 없음 ) ..어떻게 해결해야하는지 알고 싶습니다..
void __fastcall TForm3::Button1Click(TObject *Sender)
{
BROWSEINFO BrowsingInfo;
char DirPath[MAX_PATH];
char FolderName[MAX_PATH];
LPITEMIDLIST ItemID;
memset( &BrowsingInfo, 0, sizeof(BROWSEINFO) );
memset( DirPath, 0, MAX_PATH );
memset( FolderName, 0, MAX_PATH );
BrowsingInfo.hwndOwner = Handle;
BrowsingInfo.pszDisplayName = FolderName;
BrowsingInfo.lpszTitle = "폴더를 선택하세요.";
BrowsingInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_VALIDATE |
BIF_STATUSTEXT | BIF_USENEWUI | BIF_NOTRANSLATETARGETS|BIF_NEWDIALOGSTYLE|BIF_UAHINT;
//BrowsingInfo.lpfn = BrowseCallbackProc;
ItemID = SHBrowseForFolder( &BrowsingInfo );
SHGetPathFromIDList(ItemID, DirPath );
AnsiString DirPath_temp =DirPath;
GlobalFree( ItemID );
SHBrowseForFolder ;
----------------이쪽은 API 함수 이용해서 폴더 열기
if(ItemID !=NULL)
{
AnsiString Tpath = DirPath;
AnsiString Tpath_save =Tpath+"\\";
GetFilename(DirPath_temp); ------------------ 해당폴더에서 파일 정보 읽기
for(float j=0;j<name->Count;j++)
{
int handle;
AnsiString Spath ="";
//Spath =DirPath_temp+"\\";
//Spath = Spath +name->Strings[j]+".TXT";
Spath=name->Strings[j];
if(!FileExists(Spath)) {
Memo2->Lines->Add(name->Strings[j]);
}
else{
Tpath_save = "T:\\"; ----------------------------네트워크 드라이브 설정
Tpath_save = Tpath_save +tname->Strings[j]+".TXT";
CopyFile(Spath.c_str(), Tpath_save.c_str() ,FALSE);
}
}
// Label1->Caption = name->Count;
ShowMessage("복사완료");
exit(1);
delete name;
delete tname;
}
else
ShowMessage("작업취소 되었습니다");
}
혹시 WNetAddConnection2() 이것을 이용해서 접속하고 copy 한후 접속을 끊으면서 리소스를 반환하는지..
헤헤...^^;; 너무 몰라서 죄송!!
방법이 있으면..알려주세요.
그럼..수고하세요
|