Программирование в Delphi. Трюки и эффекты - стр. 37
procedure DeletePIDL(pidl: PItemIDList);
var
pMalloc: IMalloc;
begin
SHGetMalloc(pMalloc);
if (pMalloc <> nil) then
begin
pMalloc.Free(pidl);
pMalloc._Release();
end;
end;
Функцию SHBrowseForFolder (листинг 2.28) можно использовать и для указания принтеров или компьютеров. Для этого достаточно установить флаги BIF_ BROWSEFORCOMPUTER и BIF_BROWSEFORPRINTER соответственно:
choose.ulFlags:= BIF_BROWSEFORCOMPUTER;
и
choose.ulFlags:= BIF_BROWSEFORPRINTER;
Чтобы в окне отображались еще и значки файлов, нужно установить флаг BIF_ BROWSEINCLUDEFILES.
Окна подключения и отключения сетевого ресурса
Часто бывает удобно осуществлять доступ к сетевым папкам так же, как и к локальным дискам компьютера (с использованием того же принципа построения пути). Окна подключения и отключения сетевого ресурса дают пользователю возможность выбрать, какие папки считать сетевыми дисками и какие сетевые диски можно отключить.
Вид окна подключения сетевого ресурса в Windows XP показан на рис. 2.6.
Рис. 2.6. Окно подключения сетевого диска
Для вызова окна подключения сетевого ресурса можно использовать функцию, приведенную в листинге 2.30.
function ShowConnection(): BOOL;
begin
ShowConnection:=
WNetConnectionDialog(hParentWnd, RESOURCETYPE_DISK) = NO_ERROR;
end;
Функция ShowConnection возвращает значение True в случае удачного подключения и False – в противном случае.
Окно отключения сетевого диска показано на рис. 2.7.
Рис. 2.7. Отключение сетевого ресурса
Функция, показывающая окно отключения сетевого диска, приведена в листинге 2.31.
function ShowDisconnect(): BOOL;
begin
ShowDisconnect:=
WNetDisconnectDialog(hParentWnd, RESOURCETYPE_DISK) = NO_ERROR;
end;
Аналогично ShowConnection функция ShowDisconnect возвращает значение True, если отсоединен хотя бы один диск, и False – в противном случае.
Системное окно О программе
Этот последний и довольно специфический пример приведен на тот случай, если возникнет желание или необходимость использовать окно О программе, которое выводится для самой операционной системы Windows и ее компонентов. Процедура, выводящая это окно, приведена в листинге 2.32.
procedure ShowAbout(strAppName: string; strInfo: string);
begin
ShellAbout(hParentWnd, PAnsiChar(strAppName), PAnsiChar(strInfo),
LoadIcon(0, IDI_ASTERISK));
end;
Правда, в окне О программе Windows XP на информацию о приложении отведено всего две строки (и место для значка). Все остальное место занимают информация о регистрации операционной системы и фирменная эмблема Microsoft Windows XP.