Как программно определить путь к Рабочему столу

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как программно определить путь к Рабочему столу

Сообщение poiuyt555 » 15.10.2011 09:35:34

Здравствуйте.
Как программно определить путь к Рабочему столу?
Пробую так:
Код: Выделить всё
WShell:= CreateOleObject('WScript.Shell');
desktopPath:= WShell.SpecialFolders('Desktop');

Не получается.
poiuyt555
новенький
 
Сообщения: 51
Зарегистрирован: 12.09.2011 07:45:51

Re: Как программно определить путь к Рабочему столу

Сообщение leo_bsv » 15.10.2011 11:39:47

ответ здесь: http://www.delphilab.ru/content/view/160/85/
а ещё можно читать из реестра из ключа HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
кстати я тоже не знал :wink:
Google! I'm lovin it! :D
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Как программно определить путь к Рабочему столу

Сообщение VirtUX » 15.10.2011 13:13:59

А кроссплатформенно?
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Как программно определить путь к Рабочему столу

Сообщение Brainenjii » 15.10.2011 13:17:52

а что такое рабочий стол в линуксах без иксов? ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Как программно определить путь к Рабочему столу

Сообщение leo_bsv » 15.10.2011 14:31:26

теоретически переменные окружения возвращает кроссплатформенная функция GetEnvironmentVariable('HOME');
в линуксах чтобы получить список всех переменных нужно в консоли набрать set | less
но рабочего стола там конечно же нет )))
эту тему уже обсуждали тут: http://www.freepascal.ru/forum/viewtopic.php?f=5&t=5708
если же нужно писать специфический код для получения какой-то папки, то используются директивы компилятора...
что-то вроде
Код: Выделить всё
  {$IFDEF Linux}
  ... кусок кода для пингвинов
  {$ENDIF}
  {$IFDEF Win32}
  ... кусок кода для окон
  {$ENDIF}


Добавлено спустя 4 минуты 27 секунд:
Brainenjii писал(а):а что такое рабочий стол в линуксах без иксов? ^_^

эт тот за которым сидишь :D

Добавлено спустя 28 минут 24 секунды:
Ну и наверно не плохой вариант для линукс использовать утилиту xdg-user-dir...
Код: Выделить всё
xdg-user-dir DESKTOP

кроме этой есть и другие утилиты: http://portland.freedesktop.org/wiki/
а рабочих столов их вон сколько каждый норовит свою папку рабочего стола создать :twisted:
плюс ко всему на разных языках по-разному каталог называется...
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Как программно определить путь к Рабочему столу

Сообщение v-t-l » 15.10.2011 15:41:38

Код: Выделить всё
  ListBox1.Items.LoadFromFile(GetUserDir()+'.config/user-dirs.dirs');
  Edit1.Text:=ListBox1.Items.Values['XDG_DESKTOP_DIR'];


Добавлено спустя 7 минут 7 секунд:
Код: Выделить всё
uses
  SHFolder;
var
path: array [0 .. MAX_PATH] of char;
begin
SUCCEEDED(SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, 0, @path[0]));
end;
v-t-l
энтузиаст
 
Сообщения: 741
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Как программно определить путь к Рабочему столу

Сообщение leo_bsv » 15.10.2011 19:09:37

2 v-t-l (на русской раскладке ваш ник прикольнее :D)
второй кусок кода для виндосов, думаеца
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 262

Рейтинг@Mail.ru