Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Папка Downloads

92K
21 декабря 2013 года
vd_1990
1 / / 21.12.2013
Привет участники форума. Меня интересует вот вопрос, как можно узнать полный путь папки Downloads в любых ос Windows, мож есть какие нибудь спец. api функции или мож кто то писал свой функции. Плиз, помогите пожалуйста
326
21 декабря 2013 года
sadovoya
757 / / 19.11.2005
Ну, для Vista и выше пляшите от этой ссылки. Можно еще попробовать от имени пользователя перейти к его папке и там далее к downloads. Скорее всего в разделе Shell в MSDN вся нужная инфа.

P.S. Может кому пригодится. В Vista и выше, если нет заголовочника, содержащего FOLDERID_Downloads, то можно так (код на C++):

Код:
...
setlocale(LC_ALL,"");
PWSTR* pth = new PWSTR;
...
GUID f = {0x374de290, 0x123f, 0x4565, 0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b};
HRESULT hR = SHGetKnownFolderPath(
                     /*_In_      REFKNOWNFOLDERID rfid */    f,
                     /*_In_      DWORD dwFlags   */          0,
                     /*_In_opt_  HANDLE hToken   */          NULL,
                     /*_Out_     PWSTR *ppszPath */          pth
                 );
if(S_OK == hR)
        printf("Ok\n");
    else
        printf("error\n");
   
printf("%ls\n", *pth);
...
CoTaskMemFree(*pth); //освобождаем память
delete pth;
326
22 декабря 2013 года
sadovoya
757 / / 19.11.2005
Вот перевел на Delphi:


Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Dialogs, Windows;

type GUID = record
  a: Integer;
  b,c: SmallInt;
  d: array[0..7] of BYTE;
end;

function SHGetKnownFolderPath(const guid: GUID;
          flags: DWORD;
          hToken: Cardinal;
          out pth: PWCHAR): HRESULT; stdcall;
external 'Shell32.dll' name 'SHGetKnownFolderPath';

procedure CoTaskMemFree(ptr: Pointer); stdcall;
external 'Ole32.dll' name 'CoTaskMemFree';

var
  g: GUID;
  path: PWCHAR;
begin
  g.a := $374de290;
  g.b := $123f;
  g.c := $4565;
  g.d[0] := $91; g.d[1] := $64; g.d[2] := $39; g.d[3] := $c4;
  g.d[4] := $92; g.d[5] := $5e; g.d[6] := $46; g.d[7] := $7b;
  SHGetKnownFolderPath(g, 0, 0, path);
  ShowMessage(path);
  CoTaskMemFree(path); //освобождаем память
end.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог