|
에고 질문을 너무 늦게 봤군요..
질문하신 그 내용은 쉽게 API 한줄로 끝나는게 아니랍니다 ㅠ.ㅜ..
네트워크환경에 대한 폴더의 인터페이스를 얻어온후 그 폴더에서 Enum 오브젝트를 생성해
그걸 돌리면서 아이템을 뽑아오는거랍니다.
간단한 예제를 올려 드립니다.
그럼 좋은 하루 되세요..
IShellFolder * pFolder = NULL;
IShellFolder * pDesktopFolder = NULL;
IEnumIDList * pEnum = NULL;
LPITEMIDLIST pIdlist = NULL;
LPITEMIDLIST pItem = NULL;
STRRET strret;
char buffer[MAX_PATH];
SHGetSpecialFolderLocation(NULL, CSIDL_NETWORK, &pIdlist);
SHGetDesktopFolder(&pDesktopFolder);
pDesktopFolder->BindToObject(pIdlist, 0, IID_IShellFolder, (void **)&pFolder);
pFolder->EnumObjects(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &pEnum);
ULONG ulFetched = 0;
while(pEnum->Next(1, &pItem, &ulFetched) == NOERROR)
{
pFolder->GetDisplayNameOf(pItem, 0, &strret);
StrRetToBuf(&strret, pItem, buffer, MAX_PATH);
OutputDebugString(buffer);
OutputDebugString("\r\n");
}
return 0;
정명기 님이 쓰신 글 :
: 가르쳐 주신 것 무지 많이 억수로 도움이 되었습니다... ^0^
: 한가지 더 질문을 드릴께요..
: WNetAddConnectDlg 던가? 그걸로 하면 간단히 되더군요...
: 그런데.. 그런 Dialog 형태가 아닌 남는 드라이브는 제가 알아서 찾아서 리스트박스로 선택을 하게 하고 네트워크 경로를 입력 받는데... 네트워크 경로는 네트워크 경로 탐색기를 하나 띄워서 찾아서 클릭하면 그 경로가 네트워크경로입력하는 에디트 박스로 들어가게 할려고 합니다. 그런데 그 네트워크 경로 탐색기를 찾을 수가 없네요... API가 워낙 방대해서염.. ^^;;
:
: 죄송하지만 아시면 좀 가르쳐 주시겠습니까?
:
: 그럼 이만.
:
:
: 새더군 님이 쓰신 글 :
: : NETRESOURCE 라는 구조체를 인자로 받는
: : WNetAddConnection2 를 사용하시면 됩니다.
: :
: : 예)
: : NETRESOURCE nr;
: :
: : nr.dwType = RESOURCETYPE_ANY;
: : nr.lpLocalName = "Z:";
: : nr.lpRemoteName = "\\\\mmouse\\document";
: : nr.lpProvider = NULL;
: :
: : WNetAddConnection2(&nr, "passwd", "userid", CONNECT_INTERACTIVE);
: :
: : 참고로 NETRESOURCE 에 있는 나머지 데이터들은 WNetAddConnection2 에서는
: : 무시됩니다.
: :
: : 그럼 좋은 하루 되세요.
: :
: :
: : 정명기 님이 쓰신 글 :
: : : 안녕하세요?
: : :
: : : 프로그램 상에서 네트워크상의 공유된 자원을 찾아서 현재 클라이언트상에 쓰이지 않는 드라이브와 맵핑시키는 것을 찾고 있습니다. API를 뒤져보아도 잘 안찾아지네요.. 쩝쩝..
: : : 또하나, 예를 들어 \\myserver\document를 M: 으로 맵핑시킨게 이미 있다면 M:를 입력시에 거꾸로 \\myserver\document 로 풀어주는 것도 찾고 있습니다. 쩝.. 이것도 제 능력밖에 있는건지 찾을 수가 없네요.. 여러분들 좀 찾아주세요..
: : :
: : : 그럼 이만.
|