Запретить окну консоли убить процессC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Запретить окну консоли убить процесс

Сообщение Anonymous »


Я добавляю функции отладки в язык Small Visual Basic (написанный на VB .NET), который я построил на основе MS Small Basic (написанный на C#). У меня есть две проблемы:

Проблема 1: Текстовое окно SB/sVB представляет собой окно консоли и прекрасно работает, когда к нему обращаются из отдельного процесса (например, при запуске exe-файлов, скомпилированных языком), но возникают проблемы в режиме отладки. TextWindow (консоль) не работает в режиме отладки. Он неактивен, и пользователь не может писать в него. Код использует API-интерфейсы Win32 для отображения консоли, а затем использует метод класса System.Console для взаимодействия с ней. В проектах WinForms и WPF это будет взаимодействовать с окном вывода, а не с окном консоли. Это исключение, которое я получаю, когда пытаюсь прочитать ключ: System.InvalidOperationException: 'Невозможно прочитать ключи, если какое-либо приложение не имеет консоли или когда ввод консоли был перенаправлен из файла.

Изменить: Я нашел решение этой проблемы: Я обнаружил, что окно консоли не работает, когда я запускаю проект sVB в VS .NET в режиме отладки, но если я запускаю его без отладки или запускаю sVB.EXE вне VS .NET, окно консоли работает, и это меня устраивает. Итак, проблема 1 уже решена, а проблема 2 еще требует решения.

Проблема 2: Окно консоли завершает весь процесс при закрытии, и я не могу найти способ предотвратить это. Читал здесь подобные темы, но подходящего решения не нашел. Например, отключение кнопки закрытия не является полным решением, поскольку пользователь все равно может нажать Ctrl+C. Я также попытался использовать SetConsoleCtrlHandler для перехвата события закрытия, но мне не удалось отменить завершение процесса. Обратите внимание, что закрытие процесса во время работы в режиме отладки закрывает сам sVB! Это также проблема при запуске любого файла app.exe, поскольку закрытие консоли, когда другие окна открыты, закроет их все!

Есть ли какое-либо решение этих проблем? А если нет, могу ли я использовать обычное окно для TextWindow, и если да, то как заставить выполнение кода ждать возврата методов Read до тех пор, пока пользователь не отправит свои данные в такое окно? Спасибо.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Запретить окну консоли убить процесс
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Запретить окну консоли убить процесс
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Запретить окну консоли убить процесс
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Убить процесс chromedriver в Selenium/Java
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Python Fintech Import заставляет macOS (Sequoia) убить процесс (Exc_BAD_ACCESS)
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»