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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2013, 15:01   #1
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,453
Сообщение как узнать, есть какие-то документы Пуск -> Документы

Добрый час!. Подскажите, как узнать, есть какие-то документы в меню Пуск -> Документы?

это команда очистить список использованных документов
Код:
 uses
  Windows,Messages,ShlOBJ;
 const
      CLS_CLB = $00000002;
begin
SHAddToRecentDocs(CLS_CLB, nil);//очистить список использованных документов
end;
a как узнать, есть какие-то документы там?

Последний раз редактировалось beegl; 21.02.2013 в 15:01. Причина: правил текст
beegl вне форума Ответить с цитированием
Старый 21.02.2013, 15:06   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

проверить наличие файлов в папке %UserProfile%\Recent\
:D
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 21.02.2013, 15:11   #3
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,453
По умолчанию

Yurk@, подскажите пожалуйста, как это будет выследить, т.е. напишите пример, а то я не очень разбираюсь в программировании
beegl вне форума Ответить с цитированием
Старый 21.02.2013, 15:49   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Если без вложенных папок
Код:
procedure TForm1.Button1Click(Sender: TObject);
var SearchRec: TSearchRec;
    i,j: Integer;
    s: string;
begin
  SetLength(s,MAX_PATH);
  j:=-1;
  if SHGetSpecialFolderPath(0,PChar(s),CSIDL_PERSONAL,True) then begin
    s:=PChar(s)+'\*.*';
    i:=FindFirst(s,faAnyFile,SearchRec);
    j:=0;
    while i=0 do begin
      if SearchRec.Attr and faDirectory=0 then Inc(j);
      i:=FindNext(SearchRec);
    end;
    FindClose(SearchRec);
  end
  else s:='';
  Label1.Caption:=Format('Всего файлов в "%s" - %d',[s,j]);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.02.2013, 16:02   #5
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,453
По умолчанию

а как сделать, чтоб отображало только количество файлов и без использования SysUtils, чтоб были только эти модули:
Код:
uses
  Windows,Messages,ShlOBJ;
например, для буфера обмена так:
Код:
procedure   ClipboardClearAll;
begin
OpenClipboard(GetActiveWindow);
if CountClipboardFormats <= 0 then //если в буфере обмена ничего нет
begin
Exit; // выходим с процидуры
end;
if CountClipboardFormats > 0 then // если что-то в буфере обмена есть
begin
 OpenClipboard(GetActiveWindow);
 EmptyClipboard; //очищаем буфере обмена
 CloseClipboard;
 InvalidateRect(0, nil, True);
end;
end;
подобный код надо, для: если есть какие-то документы в меню Пуск -> Документы
beegl вне форума Ответить с цитированием
Старый 21.02.2013, 16:08   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

преврати процедуру в посте #4 в функцию (возвращай j).
если это значение >0 - там есть файлы
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 21.02.2013, 16:14   #7
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,453
По умолчанию

Yurk@, напишите код, т.е. без использования модулей SysUtils и т.п., только с использованием
Код:
 uses
  Windows,Messages,ShlOBJ;
это для того, чтоб проект не занимал много места, на данный момент занимает 21 Кб
смотрим вложенный файл:
Вложения
Тип файла: rar Trash Source v1.10.rar (25.9 Кб, 9 просмотров)

Последний раз редактировалось beegl; 21.02.2013 в 16:16. Причина: привил текст
beegl вне форума Ответить с цитированием
Старый 21.02.2013, 16:15   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

По простому скопировать FindFirst, FindNext, FindClose и те процедуры и константы, к которым они обращаются и находящиеся там же из SysUtils к себе в юнит. Не уверен при этом, что не потянет за собой здоровенную цепочку. Посмотрите
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 21.02.2013 в 16:18.
Аватар вне форума Ответить с цитированием
Старый 21.02.2013, 16:44   #9
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,453
По умолчанию

подскажите, почему, нет там файлов, а результат, не тот, т.е. см. код:
Код:
procedure TForm1.FindDocEx;
var SearchRec: TSearchRecEx;
    i,j: Integer;
    s: string;
begin
  SetLength(s,MAX_PATH);
  j:=-1;
  if SHGetSpecialFolderPath(0,PChar(s),CSIDL_PERSONAL,True) then begin
    s:=PChar(s)+'\*.*';
    i:=FindFirstExt(s,$0000003F,SearchRec);
    j:=0;
    while i=0 do begin
      if SearchRec.Attr and $00000010=0 then Inc(j);
      i:=FindNextEx(SearchRec);
    end;
    FindCloseEx(SearchRec);
  end;
if j <= 0 then
begin
ShowMessage('not file');
end else
if j > 0 then
begin
InvalidateRect(0, nil, True);
ShowMessage('file >0');
SHAddToRecentDocs(CLS_CLB, nil);
end;
end;
при этом документов там нет

beegl вне форума Ответить с цитированием
Старый 21.02.2013, 17:17   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

CSIDL_PERSONAL для папки Мои документы.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как программно узнать адресс путь к папке мои документы и рабочий стол VIR1435 Общие вопросы Delphi 11 08.06.2012 08:24
Here документы _-Re@l-_ PHP 5 04.06.2011 14:38
Лицензия - Какие документы необходимо иметь чтобы законно продавать программу, которую сам написал? Dimarik Софт 11 02.06.2010 22:35
Как склеить документы? drooon Microsoft Office Word 1 04.01.2009 02:28
Как узнать расположение папки мои документы? apromix Win Api 4 08.05.2008 15:04