Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
162 / 76 / 21
Регистрация: 22.04.2012
Сообщений: 221
1

Поиск рабочего стола

11.05.2012, 13:52. Показов 1378. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую. У меня встала задача найти на диске рабочий стол пользователя т.е. его адрес
"С:\users\user1\desktop" например, но нужно это сделать не через поиск, а как то через обращение к системе, т.к. на диске могут быть другие папки "desktop", а также поиск может занять много времени.

Подскажите пожалуйста способ решения этой проблемы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2012, 13:52
Ответы с готовыми решениями:

Блокировка Рабочего стола
Здравствуйте. Помогите разобраться с задачей. Для блокировки рабочего стола решил использовать...

Скриншот рабочего стола
Здравствуйте! Пишу программку, которая делает скриншот раб. стола и отправляет его на FTP. Вроде...

Скришот рабочего стола
подскажите пожалуйста как сделать скришот рабочего стола ? не экрана, а рабочего стола! и как...

Изменить фон рабочего стола
Как изменить фон рабочего стола? нашел следующий код: uses ...Registry; //подключаем модуль...

2
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
11.05.2012, 16:58 2
Лучший ответ Сообщение было отмечено olegoner как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Button1Click(Sender: TObject);
var  Folder: array[0..255] of Char;
     List: PitemidList;
begin
  SHGetSpecialFolderLocation(0,CSIDL_DESKTOPDIRECTORY,List);
  FillChar(Folder, SizeOf(Folder), 0);
  SHGetPathFromIDList(List, @Folder);
  ShowMessage(Folder);
end;
1
162 / 76 / 21
Регистрация: 22.04.2012
Сообщений: 221
11.05.2012, 17:18  [ТС] 3
Спасибо. Тоже уже нашёл.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{ 
  Constants: 
  CSIDL_DESKTOP 
  CSIDL_INTERNET 
  CSIDL_PROGRAMS 
  CSIDL_CONTROLS 
  CSIDL_PRINTERS 
  CSIDL_PERSONAL 
  CSIDL_FAVORITES 
  CSIDL_STARTUP 
  CSIDL_RECENT 
  CSIDL_SENDTO 
  CSIDL_BITBUCKET 
  CSIDL_STARTMENU 
  CSIDL_DESKTOPDIRECTORY 
  CSIDL_DRIVES 
  CSIDL_NETWORK 
  CSIDL_NETHOOD 
  CSIDL_FONTS 
  CSIDL_TEMPLATES 
  CSIDL_COMMON_STARTMENU 
  CSIDL_COMMON_PROGRAMS 
  CSIDL_COMMON_STARTUP 
  CSIDL_COMMON_DESKTOPDIRECTORY 
  CSIDL_APPDATA 
  CSIDL_PRINTHOOD 
  CSIDL_ALTSTARTUP 
  CSIDL_COMMON_ALTSTARTUP 
  CSIDL_COMMON_FAVORITES 
  CSIDL_INTERNET_CACHE 
  CSIDL_COOKIES 
  CSIDL_HISTORY 
} 
 
uses 
  ActiveX, ShlObj; 
 
procedure TForm1.Button1Click(Sender: TObject); 
  // Replace CSIDL_HISTORY with the constants above 
var 
  Allocator: IMalloc; 
  SpecialDir: PItemIdList; 
  FBuf: array[0..MAX_PATH] of Char; 
  PerDir: string; 
begin 
  if SHGetMalloc(Allocator) = NOERROR then 
  begin 
    SHGetSpecialFolderLocation(Form1.Handle, CSIDL_HISTORY, SpecialDir); 
    SHGetPathFromIDList(SpecialDir, @FBuf[0]); 
    Allocator.Free(SpecialDir); 
    ShowMessage(string(FBuf)); 
  end; 
end; 
 
// With Windows Me/2000, the SHGetSpecialFolderLocation function 
// is superseded by ShGetFolderLocation. 
 
 
// function to get the desktop folder location: 
 
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;
0
11.05.2012, 17:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2012, 17:18
Помогаю со студенческими работами здесь

Удалить ярлык с рабочего стола
На рабочем столе лежит ярлык (моей) программы, например, ярлык для C:\Program Files\My Program...

Загрузка обоев рабочего стола в Image
Я знаю, что обои, стоящие на рабочем столе находятся в файле...

Сделать скриншот рабочего стола с курсором
Возникла такая проблема. Нужно сделать скриншот рабочего стола с курсором , и показать его на весь...

Как обратиться к фону рабочего стола?
Вот на пример... Нужно обратиться к компоненту формы Image 1 - Image1.Picture; А к фону рабочего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru