SHBrowseForFolder как заставить отображать имя компьютера?

Есть функция вызова диалогового окна, в котором выбирается имя компьютера. После чего должно появиться окно с сообщением что такой то компьютер выбран.

bool GetFolder(LPTSTR szPath)
{
	szPath[0] = 0;
	bool result = false;
	LPMALLOC pMalloc;
	if (::SHGetMalloc(&pMalloc) == NOERROR) {
		BROWSEINFO bi = { 0 };
		::ZeroMemory(&bi, sizeof bi);
		bi.lpszTitle = L"Выберите компьютер для подключения";
		bi.ulFlags =  BIF_BROWSEFORCOMPUTER;// BIF_RETURNONLYFSDIRS;
		LPITEMIDLIST pidl =  ::SHBrowseForFolder(&bi); // 
		if (pidl != NULL) {
			if (::SHGetPathFromIDList(pidl, szPath))
				result = true;
			pMalloc->Free(pidl);
		}
		pMalloc->Release();
	}
	return result;
}

Функция работает с папками локального компьютера замечательно. Но вот имя сетевого компьютера не показывает.
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ответы на вопрос 2
crazy_prog
@crazy_prog
Техник-программист, математик
Вам задачу ещё реализовывать надо? и я надеюсь Вы #include подключали?
//---------------------------------------------------------------------------
#define NO_WIN32_LEAN_AND_MEAN
#include
#include
#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
BROWSEINFO info;
char szDir[MAX_PATH];
char szDisplayName[MAX_PATH];
LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;

if(SHGetMalloc(&pShellMalloc) == NO_ERROR)
{
memset(&info, 0x00,sizeof(info));
//info.hwndOwner = Handle;
info.pidlRoot = 0;
info.pszDisplayName = szDisplayName;
info.lpszTitle = "Browse Title";
info.ulFlags = BIF_BROWSEFORCOMPUTER;
info.lpfn = 0;

pidl = SHBrowseForFolder(&info);

if(pidl)
{

if(SHGetPathFromIDList(pidl, szDir))
{
Label1->Caption = szDir;
}

Label2->Caption = info.pszDisplayName;

pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}

}
//---------------------------------------------------------------------------
3ca6df9d44d445a0b9e6d5aef88df21a.jpg
Ответ написан
@sedoi_starik Автор вопроса
Выбор каталогов работает.489f0ad5db6a4dfbb51c668ff28ae76b.png
Но вот выбор сетевого компьютера нет.

dc0976e2eb9441a6a0e462f052e5d53a.pngb1b61361924341c58c2646a58dcc2096.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы