Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/56: Рейтинг темы: голосов - 56, средняя оценка - 4.95
Форумчанин.NET
 Аватар для AeroWhite
556 / 427 / 64
Регистрация: 12.02.2013
Сообщений: 834

Получение свойств файла (Свойства -> Подробно)

06.01.2014, 21:13. Показов 10686. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Каким образом можно вытащить свойства файла из вкладки "Подробно"?
Пробовал искать по пути
C#
1
System.IO.File.
, но ничего подобного не нашёл.
Миниатюры
Получение свойств файла (Свойства -> Подробно)  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.01.2014, 21:13
Ответы с готовыми решениями:

Получение свойств файла из вкладки "Подробно"
Добрых день хотелось узнать как в .NETна языке C#, можно реализовать получения свойств (Правой кнопкой мыши по...

Диспетчер зд, правая кнопка мыши-свойства-подробно - все исчезло
Всем доброго времени суток! Парни, проблема такая, захожу в диспетчер задач, нажимаю вкладку процессы или службы или приложения. И список...

Свойства свойств объекта возвращают false
// Есть такой объект rainbow = { 0: {0:255,1:255,2:255}, 1: {0:255,1:0,2:0}, 2: {0:0,1:255,2:0}, 3:...

8
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
06.01.2014, 21:31
В самом файле все данные.
Открываете его, и читаете участки где должна быть информация, согласно формату.

Допустим для jpeg есть маркеры, после которых идет информация.
1
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
06.01.2014, 21:53
TagLib#
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
 
namespace Ghost
{
    class Program
    {
        static void Main(string[] args)
        {
            string filename = "Лезбиянки в ванне.AVI";
            using (TagLib.File file = TagLib.File.Create(filename))
            {
                TimeSpan duration = file.Properties.Duration;
                Console.WriteLine("Продолжительность: " + duration.ToString());
                Console.WriteLine("Разрешение: {0}x{1}", file.Properties.VideoWidth, 
                    file.Properties.VideoHeight);
                // etc
                Console.ReadLine();
            }
        }
    }
}
0
Форумчанин.NET
 Аватар для AeroWhite
556 / 427 / 64
Регистрация: 12.02.2013
Сообщений: 834
06.01.2014, 23:16  [ТС]
Цитата Сообщение от Anklav Посмотреть сообщение
В самом файле все данные.
Открываете его, и читаете участки где должна быть информация, согласно формату.
Допустим для jpeg есть маркеры, после которых идет информация.
А есть какой-либо пример? Для любого формата
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
06.01.2014, 23:48
Самое простенькое, для формата BMP.

C#
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
using System;
using System.IO;
 
namespace Decorator
{
    class Program
    {
        [STAThread]
        static void Main()
        {
            FileStream stream = new FileStream(@"D:\1.bmp", FileMode.Open, FileAccess.Read);
            BinaryReader reader = new BinaryReader(stream);
 
            ushort type = reader.ReadUInt16();
 
            if (type != 0x4d42)
                return;
 
            Console.WriteLine("BMP file");
            Console.WriteLine("Size {0} bytes", reader.ReadUInt32());
 
            stream.Position = 18;
 
            Console.WriteLine("Size {0} x {1}", reader.ReadInt32(), reader.ReadInt32());
 
            stream.Position += 2;
 
            Console.WriteLine("BitCount {0}", reader.ReadInt16());
 
            Console.ReadLine();
        }
    }
}
2
Форумчанин.NET
 Аватар для AeroWhite
556 / 427 / 64
Регистрация: 12.02.2013
Сообщений: 834
07.01.2014, 00:18  [ТС]
Благодарю
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
07.01.2014, 17:19
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

AeroWhite, получить именно эту страничку (что на скриншоте) можно используя COM интерфейс IShellItem2, только он зависит от установленных в системе компонентов для каждого из типов файлов и он присутствует начиная с Windows Vista.

На C# муторно всё переписывать, лучше всего будет написать обёртку на C++\CLI. Реализация на C++ приведена ниже.
C++
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
82
83
84
85
86
87
88
89
90
91
void FreeComString(LPWSTR &szComString)
{
    if (szComString == nullptr)
        return;
 
    ::CoTaskMemFree(szComString);
    szComString = nullptr;
}
 
int main(array<System::String ^> ^args)
{
    // входной файл
    LPWSTR szFilePath = L"X:\\Downloads\\Video\\film.mkv";
    IShellItem2* pItem = nullptr;
    HRESULT hr;
 
    // получаем объект IShellItem2 для файла
    hr = ::SHCreateItemFromParsingName(szFilePath, nullptr, IID_PPV_ARGS(&pItem));
 
    if (SUCCEEDED(hr))
    {
        // открываем хранилище со свойствами файла
        IPropertyStore* pStore = nullptr;
        hr = pItem->GetPropertyStore(GPS_DEFAULT, IID_PPV_ARGS(&pStore));
 
        if (SUCCEEDED(hr))
        {
            DWORD nCount;
            hr = pStore->GetCount(&nCount);
 
            // перебираем все свойства
            if (SUCCEEDED(hr) && nCount > 0)
            {
                PROPERTYKEY prop_key;
                // IPropertyDescription описатель свойства
                IPropertyDescription* pPropDesc;
 
                for (DWORD i = 0; i < nCount; i++)
                {
                    // Получаем ID свойства
                    hr = pStore->GetAt(i, &prop_key);
 
                    if (SUCCEEDED(hr))
                    {
                        // Получаем описатель свойства
                        pPropDesc = nullptr;
                        hr = PSGetPropertyDescription(prop_key, IID_PPV_ARGS(&pPropDesc));
 
                        if (SUCCEEDED(hr))
                        {
                            LPWSTR szDescription = nullptr;
                            LPWSTR szValue = nullptr;
 
                            hr = pPropDesc->GetDisplayName(&szDescription);
 
                            if (SUCCEEDED(hr))
                            {
                                PROPVARIANT prop_value;
                                // Поулчаем значение свойства
                                if (SUCCEEDED(hr = pStore->GetValue(prop_key, &prop_value)))
                                {
                                    // Форматированный вывод значения свойства
                                    hr = pPropDesc->FormatForDisplay(prop_value, PDFF_DEFAULT, &szValue);
 
                                    if (SUCCEEDED(hr))
                                    {
                                        OutputDebugStringW(szDescription);
                                        OutputDebugStringW(L"\t");
                                        OutputDebugStringW(szValue);
                                        OutputDebugStringW(L"\r\n");
                                    }
                                }
                            }
 
                            // Освобождаем память
                            FreeComString(szDisplayName);
                            FreeComString(szValue);
                            pPropDesc->Release();
                        }
                    }
                }
            }
 
            pStore->Release();
        }
 
        pItem->Release();
    }
 
    return 0;
}
3
0 / 0 / 0
Регистрация: 21.06.2016
Сообщений: 3
21.06.2016, 11:23
Ребята, а как в эти свойства записывать информацию?
0
132 / 82 / 29
Регистрация: 01.10.2014
Сообщений: 263
23.06.2016, 14:27
coolibin98, Интересно а с какой целью вам это понадобилось?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.06.2016, 14:27
Помогаю со студенческими работами здесь

Вместо свойств диска открываются свойства компьютера Win7 64
Нажимаю в проводнике правой кнопкой на диск далее свойства,а открывается окно свойств компьютера. Windows 7 64 bit

Поведение свойств объектов, имеющих свойства с одинаковыми именами
class SuperClass { private $privateInSuperProp = 'SuperPrivateProp'; public function testPrivateProp() { ...

Видимость свойства объекта в PropertyGrid в зависимости от двух других свойств
Организовать видимость свойства объекта в PropertyGrid в зависимости от другого свойства можно сделать легко. Ниже свойство Animal видно...

Получение свойств формы
задача такая, сделал приложение, в нем есть &quot;Настройка&quot;, открывается в отдельном окне... нужно получить свойство прозрачности основной...

получение свойств класса
Здравствуйте. Есть такой код class Cache { var $a = 0; function set($t) { $this-&gt;a = $this-&gt;a+$t; } }


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru