2015-04-25 5 views
-1

В моем консольном приложении вызывается SendKeys.SendWait("^c"), чтобы скопировать выделенный текст в буфер обмена.Почему SendKeys.SendWait() отключает мое приложение

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

Зачем дозировать это.

+1

Посмотрите, что происходит, если вы обычно нажать Ctrl-C в то время как ваше консольное приложение имеет фокус (до Windows 10, по крайней мере). Что касается другой части, обратите внимание, что если ваше приложение закрывается, у него никогда не будет возможности выпустить ctrl. – chris

+0

@chris Я просто сделал то, что вы сказали, и мое приложение закрылось, как обычно. Так что это 'ctrl + c' ярлык Visual Studio, и я могу исправить это. – JackBarn

+1

Ctrl-C - это [сигнал ОС для завершения консольных процессов] (https://msdn.microsoft.com/en-us/library/windows/ настольные/ms682541% 28v = vs.85% 29.aspx). Класс 'Console' может переопределить это с помощью [TreatControlCAsInput] (https://msdn.microsoft.com/en-us/library/system.console.treatcontrolcasinput (v = vs.110) .aspx) или событие CancelKeyPress. –

ответ

1

ctrl+c является сигналом для закрытия окна консоли.

И причина, по которой колесо мыши влияет на масштабирование после его закрытия, заключается в том, что приложение никогда не получало возможности выпустить ключ ctrl.

Это можно исправить, изменив ConsoleMode или изменив свойство Console.TreatControlCAsInput.

Спасибо за помощь

Смежные вопросы