Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1390 / 846 / 92
Регистрация: 08.02.2017
Сообщений: 3,610
Записей в блоге: 2

Выполнить действие перед входом в "спящий режим"

04.11.2022, 17:19. Показов 634. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Речь опять же о моей программке - одной из основных проблемм - несовместимости пристановки процессов со "спящим режимом". В случае ее решения, думаю уже можно считать прогу работающим инстументом. Не дружит "спящий режим" со "спящими" процессами и если есть таковые, то переход в сон практически всегда заканчивается глухим зависание или "синим экраном". В случае с "выходом из системы" в vb-формы встроен стандартный механизм, позволяющий подготовиться и сделать необходимые действия.
Событие Unload генерируется перед событием Terminate. Обработчик события Unload можно использовать для проверки того, надо ли выгрузить форму или для определения операций, выполняемых при выгрузке формы. Можно также включить программу проверки уровня формы, необходимую для закрытия формы или сохранения данных в файле. В обработчик события Unload можно добавить оператор End – он гарантирует выгрузку всех форм до завершения программы.

Присвоение аргументу Cancel любого ненулевого значения предотвращает удаление формы, но не запрещает другие события вроде выхода из среды Windows. Чтобы не допустить выхода из Windows, необходимо использовать событие QueryUnload.

Событие Terminate генерируется, когда из памяти удаляются все ссылки на экземпляр формы. Чтобы убрать из памяти переменные этой формы и освободить занимаемые системные ресурсы, присвойте объектной переменной формы значение Nothing:
В случае со "спящим режимом" видимо нужно получить текущий интервал перехода в сон (из текущего режима питания) и отслеживать время до его окончания. Надеюсь WMI снова выручит, кое что уже выяснил..
Visual Basic
1
2
3
4
5
6
7
8
9
Sub GetInfoPwPlan()
    Dim SVSE As SWbemServicesEx, pwPlan As SWbemObjectEx
    Set SVSE = GetObject("winmgmts:\\.\root\cimv2\Power")
    For Each pwPlan In SVSE.Execquery("SELECT * FROM Win32_PowerPlan")
        If pwPlan.isActive Then Stop
        '***
    Next
    
End Sub
Добавлено через 3 часа 52 минуты
Есть конечно варианты.., но как-то сложно все.. Кинулся эти настройки питания в реестре, а набрел на это (спойлер).. интересно кстати, надо включить в свою програмку.
Кликните здесь для просмотра всего текста
Что же дают "неявные" настройки управления электропитанием? Довольно много. Наиболее наглядный пример экономии расхода энергии - оптимизация работы многоядерных систем, при которой слегка изменяется привычный порядок вычислений. В обычном режиме работы ПК организация многоядерного процессора подразумевает реализацию в системе распределенной нагрузки, когда обрабатываемый поток данных не загружает максимально ядро процессора, а переносится на соседнее ядро и так далее. Это дает возможность Windows 7 более эффективно использовать вычислительные мощности устройства. Однако для экономии энергии такой режим работы процессора является убыточным, поскольку при обработке данных электроэнергия расходуется на все ядра. Эффект отключения электропитания "ненужных" ядер процессора называется "парковкой ядра" (Core Parking).

Так, например, чтобы припарковать три ядра четырехядерного процессора, нужно проделать следующие действия. Во-первых, включим отображение скрытых настроек управления питанием процессора, для чего изменим в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00 некоторые значения параметров на 0, как было сказано выше ("Attributes"=dword:00000000).

Для начала, в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583 включим возможность парковки ядер. Включенный параметр в этом разделе даст возможность установить минимальное число ядер в состоянии простоя. Если быть точнее, то устанавливается процент от суммарной мощности используемых ядер. Например, для четырехъядерного процессора этот параметр логично установить равным 25%, для двуядерного - 50%.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2022, 17:19
Ответы с готовыми решениями:

Перезагрузка перед входом в систему
комп перезагружается в конце загрузки, после экрана "приветствие", один раз показал на мгновенье пустой рабочний стол, без кнопки старт и...

Окно перед входом в Skype
Ежедневно перед первым входом в Skype 5.10.66.166 появляется, на долю секунды, окно. Что это и как убрать? Программу удалял и начисто...

Сообщение перед входом в систему
Всем привет :) Исходные данные: MS Windows XP Pro SP2 Необходимо: после того как пользователь ввел свои учетные данные...

5
1390 / 846 / 92
Регистрация: 08.02.2017
Сообщений: 3,610
Записей в блоге: 2
05.11.2022, 17:31  [ТС]
Вроде бы кое-что найдено - отлов сообщения PBT_APMSUSPEND окну API-функцией WindowProc.. Вопрос, будет ли это действенно, будет ли прога успевать что-то сделать до перехода в сон. Более идеальный вариант, конечно с заранее известным интервалом и таймером.. Завтра будем посмотреть.

Добавлено через 8 минут
Что интересно, на VBS вполне есть щтатные wmi-методы для сабжа, которые к огорчению недоступны на vba/vb6
0
dive
 Аватар для I can
4962 / 4658 / 845
Регистрация: 13.04.2015
Сообщений: 9,849
05.11.2022, 17:49
Цитата Сообщение от testuser2 Посмотреть сообщение
на VBS вполне есть щтатные wmi-методы для сабжа, которые к огорчению недоступны на vba/vb6
но ведь скрипт можно создать и запустить из vb6
0
1390 / 846 / 92
Регистрация: 08.02.2017
Сообщений: 3,610
Записей в блоге: 2
05.11.2022, 18:13  [ТС]
Цитата Сообщение от I can Посмотреть сообщение
но ведь скрипт можно создать и запустить из vb6
Да, но это уже костыль, издержки на обмен сообщений между прогой и скрипто и немного идет в разрез с парадигмой минимизации ресурсов, которой посвящена сама прога
1
dive
 Аватар для I can
4962 / 4658 / 845
Регистрация: 13.04.2015
Сообщений: 9,849
05.11.2022, 19:31
Цитата Сообщение от testuser2 Посмотреть сообщение
идет в разрез с парадигмой
Мне стало стыдно за добрую половину своих программ

Добавлено через 17 секунд
.
0
1390 / 846 / 92
Регистрация: 08.02.2017
Сообщений: 3,610
Записей в блоге: 2
06.11.2022, 05:02  [ТС]
I can, честно признаться, меня немного смутил "working set" под 8 мб, который образовался из 64 килобайтной проги, а ведь я еще как следует не нагружал форму, пара-тройка словарей.. По меркам 2000х это весомо, я помню когда у меня было 256 мб ОЗУ. Где 8 там и 20, к слову сам VB (с загруженным проектом) 26 мб. Но все конечно зависит от задач и от условий. Иногда для решения какого-то простого вопроса, нужно загрузить 50+ вкладок в браузере, которые займут всю свободную память, затем весь оставшийся диск файлом подкачки, затем все это вывалится от нехватки памяти перезапустится и ответ все-таки будет найден, притом без каких-то особенных издержек по времени, поскольку все это на SSD. Главное видиом все-таки скорость, + стабильность, остальное уже не столь весомо в современных условиях..
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.11.2022, 05:02
Помогаю со студенческими работами здесь

Спящий режим
Подскажите как написать программу которая погружала бы компьютер в спящий режим На C#? (в Windows 7)

Спящий режим
При переходе в спящий режим (нажатие на клавиатуре кнопки sleep), компьютер полностью выключается, секунд через 3-4 включается сам....

Спящий режим
Что будет, если я отключу спящий режим?

Спящий режим
Приветствую! На диске С оказалось недостаточно места для активации спящего режима. Зачем ему вообще столько - около 3 гигов просит?...

Спящий режим
Если не обращаться к ноутбуку какое-то время, он переходит в спящий режим. Можно ли регулировать это время или отменять этот режим вообще?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru