При закрытии консоли кликом по "крестику", приложение падает :(

vertyal17

Ситуация такая:
Есть GUI приложение, которое запускает консольное приложение.
Для этого, вначале создается консоль, а затем запускается другое приложение таким образом, что консоль наследуется.
GUI Программа при этом консоль не закрывает, для того чтобы читать с нее, что пишет программа, а закрывает только в двух случаях - по кнопке пользователя ("не хочу больше перехватывать выходные данные с консольного приложения" или по событию "консольная программа завершена".
Все плохо, если пользователь закрывает консоль крестиком. Я так понял, что основная программа при этом также получает сигнал завершить работу. Хочеться это както предотвратить, как можно это сделать?

vertyal17

Вроде слегка разобрался

Werdna

Виндузятникм вроде некошерно использовать консоль вообще, зачем ты это делаешь, отрок?

vertyal17

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

Andbar

вполне кошерно. просто надо уметь её правильно готовить (например, прятать)

Barbie29

+1, смотрим например тут

0000

Задизейбли крестик у консольного окна и все (если сам не сможешь пни - посмотрю сам как сделать).
Вообще наверно лучше перехватывать ввод и вывод консоли в свое окно, а консоль спрятать вообще.

Andbar

Задизейбли крестик у консольного окна и все
имхо, для консольных окон SetWindowLong не пашет.

0000

Хе-хе

#include <windows.h>

int main
{
HWND hWnd;
hWnd = FindWindow (NULL, "cmd title");
if (hWnd == 0)
{
MessageBox (0, "Window not found", "Message", MB_OK);
return 0;
}
EnableMenuItem (GetSystemMenu (hWnd, false SC_CLOSE, MF_BYCOMMAND || MF_GRAYED);
}

Bird_V

EnableMenuItem (GetSystemMenu (hWnd, false SC_CLOSE, MF_BYCOMMAND || MF_GRAYED);
Глюк-с, должно быть
EnableMenuItem (GetSystemMenu (hWnd, false SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);

0000

У меня и с двумя палками все работало.
Блин, надо доки С++ по унарным и бинарным операциям глянуть - как с Delphi пересел, так нифига и не смотрел
Оставить комментарий
Имя или ник:
Комментарий: