Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 08.06.2016
Сообщений: 22

Определить количество используемой памяти в процентах и общее количество места на диске

18.02.2019, 08:53. Показов 3454. Ответов 4

Студворк — интернет-сервис помощи студентам
Используя функции GlobalMemoryStatusEx и GetDiskFreeSpaceEx определить
количество используемой памяти в процентах и общее количество места на диске
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2019, 08:53
Ответы с готовыми решениями:

Определить общее количество ОЗУ и свободного места на системном диске
Доброго времени суток. Нужно определить общее количество оперативной памяти и свободного места на системном жестком диске (для...

«Модуль DOS».Определить количество свободного места на съемном диске.
Определить количество свободного места на съемном диске, если больше 500 Кбайт, вывести в центре экрана сообщение “Места много”, иначе –...

Модуль DOS - Определить количество свободного места на съёмном диске
Определить количество свободного места на съёмном диске, если имеется больше 10 Мбайт свободного места, написать в центре экрана сообщение...

4
19 / 13 / 8
Регистрация: 09.01.2019
Сообщений: 72
18.02.2019, 11:14
Лучший ответ Сообщение было отмечено maximuus как решение

Решение

а сложность в чем?
1
1 / 1 / 0
Регистрация: 08.06.2016
Сообщений: 22
20.02.2019, 10:50  [ТС]
Не могу понять почему пишет не верный объём диска? хелп

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern bool GetDiskFreeSpace(string lpRootPathName,
           out uint lpSectorsPerBytes,
           out uint lpBytesPerSector,
           out uint lpNumberOfFreeBytes,
           out uint lpTotalNumberOfBytes);
 
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
 
        private void button1_Click(object sender, EventArgs e)
        {
            uint sectorsPerBytes, bytesPerSector, numberOfFreeBytes, totalNumberOfBytes;
            string disk = @"C:\";
            GetDiskFreeSpace(disk, out sectorsPerBytes, out bytesPerSector, out numberOfFreeBytes, out totalNumberOfBytes);
            textBox1.Text = string.Format("Общее количество места на диске {0}: {1}", disk, totalNumberOfBytes);
        }
 
      
    }
}
0
19 / 13 / 8
Регистрация: 09.01.2019
Сообщений: 72
20.02.2019, 11:39
Лучший ответ Сообщение было отмечено maximuus как решение

Решение

lpNumberOfFreeBytes и lpTotalNumberOfBytes - по идее должны быть количеством пустых кластеров и общего числа кластеров.
Значит объем пустой памяти: lpNumberOfFreeBytes * lpSectorsPerBytes * lpBytesPerSector

Добавлено через 23 секунды
а общее количество: lpTotalNumberOfBytes * lpSectorsPerBytes * lpBytesPerSector

Добавлено через 10 секунд
Но это в байтах
1
1 / 1 / 0
Регистрация: 08.06.2016
Сообщений: 22
21.02.2019, 10:20  [ТС]
Общее количество места на диске нашёл
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.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
           out ulong lpFreeBytesAvailableToCaller,
           out ulong lpTotalNumberOfBytes,
           out ulong lpTotalNumberOfFreeBytes);
       
        public Form1()
        {
            InitializeComponent();
        }
 
 
        private void button1_Click(object sender, EventArgs e)
        {
            ulong lpTotalNumberOfFreeBytes, lpTotalNumberOfBytes, lpFreeBytesAvailableToCaller;
            string disk = @"C:\";
            GetDiskFreeSpaceEx(disk, out lpFreeBytesAvailableToCaller, out lpTotalNumberOfBytes, out lpTotalNumberOfFreeBytes);
            textBox1.Text = string.Format("Общее количество места на диске {0}: {1}", disk, lpTotalNumberOfBytes);
        }
Добавлено через 1 час 15 минут
Вообщем вот что получилось
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
 
 
        public struct MEMORYSTATUS
        {
            public int nLength;
            public int nMemoryLoad;
            public uint uTotalPhys;
            public uint uAvailPhys;
            public uint uTotalPageFile;
            public uint uAvailPageFile;
            public uint uTotalVirtual;
            public uint uAvailVirtual;
        }
 
 
 
 
         [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
           out ulong lpFreeBytesAvailableToCaller,
           out ulong lpTotalNumberOfBytes,
           out ulong lpTotalNumberOfFreeBytes);
 
 
         [DllImport("kernel32.dll", EntryPoint = "GlobalMemoryStatus", SetLastError = false)]
         public static extern void GlobalMemoryStatusEx(out MEMORYSTATUS memCE);
 
 
 
       
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            ulong lpTotalNumberOfFreeBytes, lpTotalNumberOfBytes, lpFreeBytesAvailableToCaller;
            string disk = @"C:\";
            GetDiskFreeSpaceEx(disk, out lpFreeBytesAvailableToCaller, out lpTotalNumberOfBytes, out lpTotalNumberOfFreeBytes);
            textBox1.Text = string.Format("{0} байт", lpTotalNumberOfBytes);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            MEMORYSTATUS mem = new MEMORYSTATUS();
            mem.nLength = Marshal.SizeOf(typeof(MEMORYSTATUS));
            GlobalMemoryStatusEx(out mem);
            textBox2.Text = (mem.nMemoryLoad.ToString() + "%");
        }
 
     }          
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2019, 10:20
Помогаю со студенческими работами здесь

Определить общее количество слов, общее количество предложений в тексте
Обработка текста. Определить общее количество слов, общее количество предложений в тексте. Определить: Количество слов, одновременно...

Отобразить количество используемой динамической памяти
С помощью средств мониторинга реализовать следующий функционал проги: 1. отобразить кол-во используемой дин. памяти перед объявлением...

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

Как в Excel отобразить общее количество часов за неделю в процентах?
Есть таблица в Excel, куда пользователь вводит количество проведенного времени за работой. Пользователь вводит начало и конец своего...

Количество места на диске
Написать программу на VBSript которая через заданны интервал времени выдает окошко где пишет информацию о дисковых накопителях и количество...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru