Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/33: Рейтинг темы: голосов - 33, средняя оценка - 4.76
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634

Монитор Ресурсов

26.02.2019, 18:03. Показов 7502. Ответов 58
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Будучи счастливым обладателем небольшого сервера задался вопросом, а что же грузит сервер ночью. Вашему вниманию программа монитор ресурсов: Изначально ReS_MoN задумывалась как программа, которая будет информировать о процессах, которые избыточно потребляют ресурсы на сервере. С возможностью отправки уведомлений на различные сервисы.


Возможности:
1. Отправка отчетов на почту при превышения порогов потребления ресурсов;
2. Отправка отчетов на FTP при превышения порогов потребления ресурсов;;
3. Куча всего другого;
3. Поддержка оси Win 7/8/8.1/10 (для трех последних нужна права админа);
4. Авто обновление, отправка статистики на почту (FTP);
5. Логи, Ини и тд.

Проект не закончен. Руки не доходят дописать для MEM и HDD. Если кто то желаем помочь, пожалуйста исходники в комплекте..На сегодня работает довольно таки стабильно.

Отдельная благодарность за помощь Dragokas
Миниатюры
Монитор Ресурсов   Монитор Ресурсов  
Вложения
Тип файла: 7z pack_Source.7z (93.4 Кб, 12 просмотров)
Тип файла: 7z pack_Bin.7z (1.87 Мб, 15 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2019, 18:03
Ответы с готовыми решениями:

Графический монитор ресурсов
Здравствуйте, господа. Скажите, а как реализовать в своей программе мониторинг загрузки ЦП в виде графика?

поделитесь мыслями (монитор ресурсов)
Получил задание по курсовой написать программу монитор основных параметров системы. к примеру темп.проца и т.д Размещается в трее как...

Поделитесь мыслями (монитор ресурсов)
Получил задание по курсовой написать программу монитор основных параметров системы. к примеру темп.проца и т.д Размещается в трее как...

58
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
06.02.2020, 06:23  [ТС]
Студворк — интернет-сервис помощи студентам
Добрый день!
Замечательно, выручите...
0
10.02.2020, 08:18

Не по теме:

The trick, Вы профессиональный программист или любитель?

0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
11.02.2020, 09:35

Не по теме:

IDK, любитель, а что?



По теме, я сделал исправление, но там возникает ошибка еще не разобрался в чем причина.
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
11.02.2020, 17:05  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Да, он только под 32 бита рассчитан. ProcessExplorer в свою очередь в ресурсах содержит 64 битную версию, которая извлекается и запускается в случае запуска на 64 битной системе.
Я знаю способ исправить, на днях исправлю.
По прежнему ждем...
0
12.02.2020, 08:34

Не по теме:

Цитата Сообщение от The trick Посмотреть сообщение
IDK, любитель, а что?
Праздный интерес, не произошел ли переход. Деловых предложений на данный момент нет.

0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.02.2020, 02:13
Лучший ответ Сообщение было отмечено kreotodr как решение

Решение

Если что, здесь пример чтения памяти 64-битных процессов: https://github.com/dragokas/hi... .bas#L1419
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
15.02.2020, 08:17  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Если что, здесь пример чтения памяти 64-битных процессов: https://github.com/dragokas/hi... .bas#L1419
Спасибо!
Если не трудно выложи проект сюда...
И второй вопрос, подобное решение с загрузкой CPU процессами для 64битных систем у Вас есть?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.02.2020, 10:15
Проект открыт и доступен для скачивания без регистрации, зеленая кнопка Download: https://github.com/dragokas/hijackthis

Для расчета нагрузки на CPU, если список процессов составлять функцией NtQuerySystemInformation с параметром SystemProcessInformation (есть в проекте выше), то нету необходимости открывать процесс, просто читайте поля SYSTEM_PROCESS_INFORMATION -> UserTime и KernelTime и вычисляйте по этой формуле: GetCPUUsage.
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
15.02.2020, 12:54
Цитата Сообщение от The trick Посмотреть сообщение
По теме, я сделал исправление, но там возникает ошибка еще не разобрался в чем причина.
Ошибку удалось победить, но причина неясна. Либо это баг в ОС, либо баг в архитектуре процессора, по крайней мере мне не удалось выяснить причину. Крастко, при переключении в Long-Mode и обратно необходимо перезагружать сегментный регистр SS. Обсуждение можно почитать на васме.

В своем коде я решил не изменять принцип работы - я также получаю через счетчики как это делает GetProcessMemoryInfo через NtQueryInformationProcess c параметром ProcessVmCounters только для 64 битного режима вызывается 64-битная функция NtQueryInformationProcess посредством переключения в 64 битный режим из VB кода. Эта функция совместима с 64-битными приложениями поскольку мы не имеем прослойки WoW64.

Я добавил удобный модуль для работы с 64-битной ntdll. Можно вызывать большинство функций из нее посредством функции CallX64. Стоит отметить что все указатели в 64 битном режиме 64 битные, поэтому их стоит передавать как Currency если кто-то захочет работать с другими 64-битными приложениями через нее. Если работа идет с 32-битными то можно передавать обычные указатели, т.к. они автоматически расширяются до 64-бит с занулением старшей части.

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

GetProcAddress64 позволяет получить адрес функций из 64-битной DLL в текущем процессе (функционал неполный т.к. она не поддерживает редиректы, но я не могу представить ситуацию когда это может пригодится в таком режиме работы). Я не проверял, но я думаю можно даже загрузить внешние 64 битные DLL в текущий процесс, но они должны обращаться только к Native API.

Код обновил в блоге. Там добавил еще сортировку.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.02.2020, 13:48
Респектище за x64 трамплин. Пригодится и еще как! Можно сказать гигантский рывок для VB6.

P.S. Странно, не могу откомментировать в блоге, тупо зависает запрос.
0
15.02.2020, 14:01

Не по теме:

Цитата Сообщение от Dragokas Посмотреть сообщение
P.S. Странно, не могу откомментировать в блоге, тупо зависает запрос.
Последнее время форум часто подлагивать стал.

0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
15.02.2020, 19:19  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Код обновил в блоге. Там добавил еще сортировку.
И снова, что то не так....
На Win10 пустые поля
Миниатюры
Монитор Ресурсов  
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
15.02.2020, 19:25  [ТС]
Пробовал на Win 2012 Server R2 все ок.
Под Win 10 пробовал запускать со среды/компиляция в P-Code. Увы пустые поля.
0
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 273
16.02.2020, 04:48
Цитата Сообщение от The trick Посмотреть сообщение
Код обновил в блоге.
Что за блог? На данном форуме не вижу новых записей в блоге.
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
16.02.2020, 05:31  [ТС]
Цитата Сообщение от IDK Посмотреть сообщение
Что за блог? На данном форуме не вижу новых записей в блоге.

https://www.cyberforum.ru/blog... g2134.html
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
16.02.2020, 10:30
kreotodr, посмотрю
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
16.02.2020, 12:10
Лучший ответ Сообщение было отмечено kreotodr как решение

Решение

Посмотрел. Причина была в WOW64 слое который в Win10 рассматривает хендлы как беззнаковые при конвертации из 32 в 64 бит. Поэтому команды NtWow64ReadVirtualMemory выдавали ошибку т.к. -1 преобразовывался в 4294967295 вместо -1. Win7:

Win10:

Проект выложил не гитхабе для удобного обновления.
3
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
16.02.2020, 14:30  [ТС]
спасибо
0
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 273
19.02.2020, 16:38
The trick,
NtWow64QueryInformationProcess64, NtWow64ReadVirtualMemory – недокументированные функции, т.е. описания нет?

NtWow64QueryInformationProcess64 при хэндле процесса = -1 возвращает указатель на PEB64 копии процесса в 64-битном режиме? Для копии загружаются 64-битные экземпляры dll оригинального проекта?

Указатель, полученный из 64-битной копии процесса имеет значение в пределах wow? Или wow распознает адресное пространство, к которому принадлежит указатель?
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
19.02.2020, 22:57
Цитата Сообщение от IDK Посмотреть сообщение
NtWow64QueryInformationProcess64, NtWow64ReadVirtualMemory – недокументированные функции, т.е. описания нет?
Да, недокументированные.

Цитата Сообщение от IDK Посмотреть сообщение
NtWow64QueryInformationProcess64 при хэндле процесса = -1 возвращает указатель на PEB64 копии процесса в 64-битном режиме? Для копии загружаются 64-битные экземпляры dll оригинального проекта?
У 32 битного процесса в 64 битном окружении 2 версии ntdll. Одна 32 битная, другая 64 битная. Помимо ntdll там еще библиотеки WoW64 слоя. Т.к. 32 битный процесс по сути является таким же 64 битным процессом, то у него также есть 64 битные TEB и PEB.

Цитата Сообщение от IDK Посмотреть сообщение
Указатель, полученный из 64-битной копии процесса имеет значение в пределах wow? Или wow распознает адресное пространство, к которому принадлежит указатель?
Адресное пространство 64-битное, в том числе у 32 битного процесса. К примеру на Win8 64 битная ntdll загружается далеко за пределами 4ГБ, поэтому просто так в 32 битном режиме ее не прочитать. Можно даже к примеру выделить память за пределами 4ГБ и там хранить данные, либо попробовать выделить > 4ГБ на 32 битный процесс (не проверял, т.к. там может лимит стоять).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2020, 22:57

Монитор ресурсов показывает 100% максимальной частоты ЦП.
Всем огромный респектище и добрый день У меня есть проблема, и ее решение я не смог найти. Проблема заключается в том, что по какой-то...

Показывает ли Монитор ресурсов адекватное распределение памяти и загрузку ЦП
Показывает ли Монитор ресурсов(ДиспетчерЗадач\Быстродействие) адекватное - распределение памяти и загрузку ЦП? или лучше оставить ДЗ для...

Какой код нужен что-бы открыть монитор ресурсов в .bat файле
Какая команда нужна чтобы открыть монитор ресурсов? (нужен для моего меню) Буду рад.

Монитор ресурсов resmon.exe показывает малое, но бесконечное использование System жёсткого диска
Монитор ресурсов resmon.exe показывает малое, но бесконечное использование System жёсткого диска Что разрушает жёсткий диск. ...

При включении ноутбука гаснет монитор. Но работает монитор в безопасном режиме
Здравствуйте. Столкнулся с такой проблемой на ноутбуке ASUS X750L. Монитор при включении ноутбука гаснет и начинает мигать, сам ноутбук...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru