Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как прервать консольное приложение по Ctrl+C ? [D6, Win2k, WinXP]


Валигози ©   (2009-03-25 16:26:00) 

Есть некоторое консольное приложение (распаковщик), работу которого можно в любой момент прервать нажав стандартную комбинацию клавиш: Ctrl+C.
Я это приложение запускаю в своём приложении с помощью CreateProcess в скрытом виде (т.е. окно консоли на экране не показывается).
А вот как бы мне прервать это консольное приложение, если пользователю вдруг надоест ждать результатов его работы?
Я пробовал посылать окну консоли клавиши Ctrl+C - никакого эффекта, а прерывать через TerminateProcess - это наверно не настолько корректно, чем через Ctrl+C...


Leonid Troyanovsky   (2009-03-26 18:18:00) [1]


> Валигози ©   (25.03.09 16:26)  

> А вот как бы мне прервать это консольное приложение,

h := FindWindow('ConsoleWindowClass', nil);
SendMessage(h, WM_SYSCOMMAND, SC_CLOSE, 0);

--
Regards, LVT.


Palladin   (2009-03-26 16:15:00) [2]

да, кажется есть какие то нюансы, надо ковырятся, а лень... ) да и своих дел хватает...


Валигози   (2009-03-26 09:59:00) [3]


> Palladin ©   (25.03.09 17:06) [1]
>
> GenerateConsoleCtrlEvent

В прошлом году долго я с этой функцией экспериментировал - работоспособного варианта добиться не удалось - так и забросил этот вопрос... :(
А можно небольшой примерчик работы этой функции, включая вызов CreateProcess (например с таким консольным приложением: "ping -t 127.0.0.1")?


Palladin   (2009-03-25 17:06:00) [4]

GenerateConsoleCtrlEvent


Наверх

Титульная страница Поиск, карта сайта Написать письмо