Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2007, 13:28   #1
Lonix
Пользователь
 
Регистрация: 17.03.2007
Сообщений: 39
По умолчанию Вопрос по рабочему столу

Здраствуйте! Как можно автоматически узнать путь к рабочему столу?
Lonix вне форума Ответить с цитированием
Старый 10.07.2007, 15:10   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
uses 
  ActiveX, ShlObj; 


function GetDeskTopPath : string; 
var 
  shellMalloc: IMalloc; 
  ppidl: PItemIdList; 
  PerDir: string; 
begin 
  ppidl := nil; 
  try 
    if SHGetMalloc(shellMalloc) = NOERROR then 
    begin 
      SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, ppidl); 
      SetLength(Result, MAX_PATH); 
      if not SHGetPathFromIDList(ppidl, PChar(Result)) then 
        raise exception.create('SHGetPathFromIDList failed : invalid pidl'); 
      SetLength(Result, lStrLen(PChar(Result))); 
    end; 
  finally 
   if ppidl <> nil then 
         shellMalloc.free(ppidl); 
  end; 
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 11.07.2007, 16:14   #3
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

В HKEY_CURRENT_USER
есть нужные директории в ключе:
'\Software\Microsoft\Windows\Curren tVersion\Explorer\Shell Folders'
Трофимов Александр вне форума Ответить с цитированием
Старый 11.07.2007, 21:49   #4
BanDit
Пользователь
 
Аватар для BanDit
 
Регистрация: 26.05.2007
Сообщений: 58
По умолчанию

А если еще и про системные папки и др. то вот как
Цитата:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, registry, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
reg : TRegistry; //без реестра не обойтись
ts : TStrings;
i : integer;

begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
reg.LazyWrite := false;
reg.OpenKey(
'Software\Microsoft\Windows\Current Version\Explorer\Shell Folders',
false);
ts := TStringList.Create;
reg.GetValueNames(ts);
for i := 0 to ts.Count -1 do begin
Memo1.Lines.Add(ts.Strings[i] +
' = ' +
reg.ReadString(ts.Strings[i]));
end;
ts.Free;
reg.CloseKey;
reg.free;

end;
BanDit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
Как подключиться к удаленному рабочему столу D-mon Работа с сетью в Delphi 1 03.06.2008 22:18
Вопрос Принц Общие вопросы C/C++ 1 31.05.2008 13:34
WoW - вопрос PAVEL315 Свободное общение 2 05.02.2008 20:51