Nano Hash - криптовалюты, майнинг, программирование

В какой папке хранятся значки для Delphi?

может ли кто-нибудь найти папку, из которой извлекаются значки> Я хотел видеть только значки и имя из C:\Program Files или реестра HKEY_LOCAL_MACHINE\SOFTWARE, но НЕ оба.

uses
  ShellApi;

procedure LV_InsertFiles(strPath: string; ListView: TListView; ImageList: TImageList);
var
  i: Integer;
  Icon: TIcon;
  SearchRec: TSearchRec;
  ListItem: TListItem;
  FileInfo: SHFILEINFO;
begin
  // Create a temporary TIcon
  Icon := TIcon.Create;
  ListView.Items.BeginUpdate;
  try
    // search for the first file
    i := FindFirst(strPath + '*.*', faAnyFile, SearchRec);
    while i = 0 do
    begin
      with ListView do
      begin
        // On directories and volumes
        if ((SearchRec.Attr and FaDirectory <> FaDirectory) and
          (SearchRec.Attr and FaVolumeId <> FaVolumeID)) then
        begin
          ListItem := ListView.Items.Add;
          //Get The DisplayName
          SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
            SizeOf(FileInfo), SHGFI_DISPLAYNAME);
          Listitem.Caption := FileInfo.szDisplayName;
          // Get The TypeName
          SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
            SizeOf(FileInfo), SHGFI_TYPENAME);
          ListItem.SubItems.Add(FileInfo.szTypeName);
          //Get The Icon That Represents The File
          SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
            SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);
          icon.Handle := FileInfo.hIcon;
          ListItem.ImageIndex := ImageList.AddIcon(Icon);
          // Destroy the Icon
          DestroyIcon(FileInfo.hIcon);
        end;
      end;
      i := FindNext(SearchRec);
    end;
  finally
    Icon.Free;
    ListView.Items.EndUpdate;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Assign a Imagelist to the ListView
  ListView1.SmallImages := ImageList1;
  // Show Listview in Report Style and add 2 Columns
  ListView1.ViewStyle := vsReport;
  ListView1.Columns.Add;
  ListView1.Columns.Add;
  LV_InsertFiles('C:\Windows\', ListView1, ImageList1);
end;

как я могу просто вызывать значки из папки моих программ, но ТОЛЬКО те, которые я хочу? например, я просто хочу показать лаймвайр, нортон и сказать, например, winmx. Как я могу создать код для вызова только тех значков, которые соответствуют тем, которые требуются в моем коде? если в моем коде есть имя NORTON, оно подтягивается только к norton?

Ответ малаху: да, но это должно работать на другом компьютере в моей сети. У меня есть весь код, просто нужно сделать так, чтобы он искал только имена, которые я хочу, в этом месте.

Я хочу искать только в своих программах и извлекать значки только из нужных мне файлов, а не из каждой папки.

23.07.2009

  • Уважаемый ОП. Кажется, вы возвращаетесь к этому вопросу и добавляете к нему ответы. Этот сайт работает не так. Если вы хотите добавить к вопросу, у вас должна быть учетная запись jamesmisser, которой принадлежит вопрос, чтобы отредактировать его. Или вам нужно набрать 15 повторений на аккаунте, чтобы прокомментировать вопрос или соответствующий ответ. Это не форум, вы не отвечаете, используя ответы. Я оставляю комментарий tgis, надеясь, что вы вернетесь. Я добавил все ваши дополнения к исходному вопросу и удалил ваши ответы. 24.07.2009

Ответы:


1

Иконки можно хранить в нескольких местах. Это могут быть файлы ICO или ресурсы, присоединенные к исполняемому файлу или прикрепленные к внешней DLL (файлы ICL на самом деле являются просто файлами DLL, которые не содержат ничего, кроме ресурсов ICO).

Процедура SHGetFileInfo, которую вы вызываете, представляет собой метод получения значка, который представляет конкретный файл, сначала просматривая сам файл и проверяя, содержит ли он ресурс ICO, если да, то он возвращается... если нет, то он ищет расширение файла через реестр, чтобы узнать, прикреплен ли к нему значок, и если да, то он возвращается.

23.07.2009

2

Ты можешь использовать

Image.Picture.LoadFromFile('norton.ico');

для загрузки определенных значков.

Еще нет папки для этих иконок. Вы можете получить их из исполняемых файлов с помощью редактора ресурсов, если хотите, или найти библиотеку значков в Интернете, чтобы предоставить ее вам.

Другим способом было бы просто показать только значки определенных программ или расширений, список которых вы предоставляете в своей программе. Что-то вроде этого:

      ListItem := ListView.Items.Add;
      //Get The DisplayName
      SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
        SizeOf(FileInfo), SHGFI_DISPLAYNAME);
      // StringListOfIncludedFiles includes all file names you want to show icon for
      // find returns true if it found an entry
      if StringListOfIncludedFiles.Find(FileInfo.szDisplayName, indexFound) then
        Listitem.Caption := FileInfo.szDisplayName;

Основная проблема с предоставлением собственных значков будет заключаться в том, чтобы распознать, какой значок будет принадлежать каким файлам. Не простое решение, но знание.

Кстати, значки, полученные в вашей программе, могут отличаться от компьютера к компьютеру, поскольку пользователи могут ассоциировать разные значки с программой. Пользователю может быть неприятно видеть другие значки, которые они привыкли ассоциировать с файлами.

24.07.2009
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..