Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181

Комп не выключается, пока процесс не завершен

24.02.2012, 23:15. Показов 4062. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в обработчике OnCloseQuery написал:
C++
1
2
CanClose=false;
Form->Hide();
Программа скрылась при закрытии. теперь хочу выключить комп или перезагрузить, но комп не выключается (не перезагружается) пока я в диспетчере задач не прерываю процесс.
Как сделать чтоб при выключении (перезагрузке) программа, которая скрыта завершалась самостоятельно я комп выключался (перезгружался)?
Например при включенном Google Chrome выключаю (перезагружаю) комп и Google Chrome нормально ничего не запрашивая закрывается
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2012, 23:15
Ответы с готовыми решениями:

Запущен ли процесс? или Завершен ли дочерний процесс моей программы?
Моя программа выполняет execute('cmd', '/C ...'). На момент execute-а других экземпляров cmd.exe нет. Мне хочется узнать, когда окошко cmd...

Как получить данные из потока ввода, пока он не завершён?
Я бы хотел узнать, как можно получить данные из потока ввода(к примеру я идентифицирую массив с помощью cin ), пока он не завершён? То есть...

Проверить, что завершен процесс
Запущено приложение "Abbyy" в случае если пользователь закрывает "Abbyy", моя программа должна это отловить и вызвать сообщение. Только...

31
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
17.03.2012, 22:56
Студворк — интернет-сервис помощи студентам
повторюсь: так
C++
1
ExitProcess(0);
делать не нужно - хватит того что вы не измените CanClose на false - тогда оно останется true и форма закроется. делать это нужно с главной формой - ее закрытие приводит к завершению приложения и автоматическому закрытию всех остальных форм. если форма не перехватывает сообщение о завершении работы вы не сможете завершить работу. что же касается выпадения ошибок, то это, скорее всего, никак не связано с закрытием формы и обусловлено, возможно, тем что в процессе завершения работы система выгружает какой-то модуль к которому обращается ваша программа, например, какой-нибудь драйвер USB.
0
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
17.03.2012, 22:56  [ТС]
DefineTrueFalse, сделал новый проект
та же самая ошибка
0
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
17.03.2012, 22:57  [ТС]
вот такая ошибка
Миниатюры
Комп не выключается, пока процесс не завершен  
0
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
17.03.2012, 23:10  [ТС]
.h
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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TButton *Button1;
        void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
        void __fastcall end_session_message(TMessage &Message);
        void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
        bool close;
        BEGIN_MESSAGE_MAP
        VCL_MESSAGE_HANDLER(WM_QUERYENDSESSION, TMessage, end_session_message)
        END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
.cpp
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (!close)
        {
        CanClose = false;
        Form1->Hide();
        //for (int a=512; a>=0; a--)
        //Form1->AlphaBlendValue=a;
        }
else    {
        //CanClose=true;
        //ExitProcess(0);
        WinExec("shutdown -s -t 0", SW_HIDE);
        }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("asddsa");        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::end_session_message(TMessage &Message)
{
close = true;
TForm::Dispatch(&Message);
}
Добавлено через 53 секунды
вот так делаю

Добавлено через 9 минут
Цитата Сообщение от vxg Посмотреть сообщение
что же касается выпадения ошибок, то это, скорее всего, никак не связано с закрытием формы и обусловлено, возможно, тем что в процессе завершения работы система выгружает какой-то модуль к которому обращается ваша программа, например, какой-нибудь драйвер USB.
сделал новый проект (совсем чистый). Это объясняет что ошибка где-то в обработчике закрытия программы или в функции завершения Windows
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
17.03.2012, 23:43
это объясняет что ошибка не в файле проекта) попробуйте собрать свой проект с отключенными возможностями - т.е. не опрашивайте и не ждите ничего от системы и поглядите - сможет он завершится корректно при выключении системы или нет

Добавлено через 53 секунды
Цитата Сообщение от Dondok Посмотреть сообщение
WinExec("shutdown -s -t 0", SW_HIDE);
а этого вообще делать нет смысла - вы итак получили сообщение о том что сеанс завершается и в методе своей формы еще раз шлете системе команду завершитсья
0
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
17.03.2012, 23:52  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
это объясняет что ошибка не в файле проекта) попробуйте собрать свой проект с отключенными возможностями - т.е. не опрашивайте и не ждите ничего от системы и поглядите - сможет он завершится корректно при выключении системы или нет

Добавлено через 53 секунды

а этого вообще делать нет смысла - вы итак получили сообщение о том что сеанс завершается и в методе своей формы еще раз шлете системе команду завершитсья
у меня 2 таймера было. я их отключил и запустил прогу. все так же.
А в новом проекте делаю вот так и все нормально завершается:
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (!close)
        {
        CanClose = false;
        Form1->Hide();
        }
}
Добавлено через 2 минуты
WinExec("shutdown -s -t 0", SW_HIDE);
вот так действительно не надо делать, хотя хоть с ошибкой но выключается комп.
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
17.03.2012, 23:53
значит ли это что ваша проблема решена методом который был указан в самом начале и причина была в хвостах закопанных где-то в bpr-файле проекта?
0
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
18.03.2012, 00:11  [ТС]
метод который был указан в самом начале работает нормально
в новом (чистом) проекте делаю так и нормально все
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (!close)
        {
        CanClose = false;
        Form1->Hide();
        }
}
а в своей проге (таймеры отключил) так пишу, никак не хочет завершаться. Когда начинаю писать разные функции по завершении программы (даже Windows), то начинают выскакивать ошибки
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (!close)
        {
        CanClose = false;
        Form1->Hide();
        }
else    {
        //ExitProcess(0);                                 //1-й вариант
        WinExec("shutdown -s -t 0", SW_HIDE);  //2-й вариант
        }
}
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
18.03.2012, 00:22
Цитата Сообщение от Dondok Посмотреть сообщение
Когда начинаю писать разные функции по завершении программы (даже Windows), то начинают выскакивать ошибки
ЗАЧЕМ???!!!!
0
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
18.03.2012, 09:58  [ТС]
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
ЗАЧЕМ???!!!!
ну без функций программа вообще не реагирует, не закрывается
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
18.03.2012, 13:54
надо найти что ее держит. потоки какие нибудь, каллбэки, еще какая нибудь ерунда
1
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
20.03.2012, 20:48  [ТС]
vxg, огромное спасибо за перехватчик сообщения Оказалось что там не надо было никаких функций писать. Сегодня пробовал запустить на другом компе, где есть DeepFreeze. Прога нормально пашет и выключается нормально Оказывается я с автораном что то наделал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.03.2012, 20:48

Процесс spoolsrv.exe будет завершен
Помогите разобраться. Есть МФУ HP laserjet 1005 MFP, как сканер комп его находит, сканирует, все прекрасно. но в качестве принтера...

Ошибка "Процесс был завершен из-за необработанного исключения"
Добрый день. Есть такая программа Win 10 Tweaker. Раньше запускалась и не было никаких проблем. Сейчас же перестала, пытаюсь найти причину....

Неожидано завершён системный процесс "C:\WINDOWS\system32\lsass.exe" с кодом состояния 0
Всё время перезагружаеться комп, выдаёт сообщение &quot;Отключение системы вызвано NT AUTHORITY\SYSTEM , неожидано завершён системный процесс...

Выключается комп когда играю игры, комп чистил термопасту менял на проце и видеокарте, дальше не знаю че делать?
Заранее спасибо))

Комп, вай фай, бук, инет - когда выключается бук, выключается инте на компе оО
На компе стоит usb wi fi Dlink dwa-125 и инет идет через ADSL модем. Создал сеть, подключил все, инет на бук раздается нормально. Но тут...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru