Запретить окну консоли убить процесс ⇐ C#
Запретить окну консоли убить процесс
Я добавляю функции отладки в язык 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 до тех пор, пока пользователь не отправит свои данные в такое окно? Спасибо.
Я добавляю функции отладки в язык 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 до тех пор, пока пользователь не отправит свои данные в такое окно? Спасибо.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Python Fintech Import заставляет macOS (Sequoia) убить процесс (Exc_BAD_ACCESS)
Anonymous » » в форуме Python - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-