Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Таймер в консольном приложении

29.01.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter

Таймер в консольном приложении

Продолжаем раскрывать возможности консоли. Сегодня это будет выполнение действий через определенные интервалы, то есть, проще говоря, таймеры. В некоторых интернетах всплывает информация, что, мол, таймеры в консольных приложениях не поддерживаются или для этого надо городить какие-то жуткие конструкции типа отдельных потоков с проверкой времени. На самом деле консоль прекрасно работает с функцией SetTimer, только надо ее, как говорится, правильно готовить.

Читать статью целиком »
Просмотров: 392 | Комментариев: 2

Обработка событий в консоли

26.01.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter

Обработка событий в консоли

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

Читать статью целиком »
Просмотров: 559 | Комментариев: 2

Ввод пароля в консоли

01.07.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter

Ввод пароля в консоли

Не знаю как вам, а мне очень не нравится метод ввода пароля в никсовой консоли. Введенные символы не показываются даже замаскированными, ввод не реагирует на вставку пароля из буфера обмена, а главное, нельзя удалять ошибочно введенный символ. Я понимаю, безопасность, все дела, но неудобно же! И решил я сделать свой вариант ввода пароля для консольных приложений. Чтобы и "звездочки" показывались, и вставка работала, и символы можно было удалять. Вот что у меня получилось.

Читать статью целиком »
Просмотров: 1129 | Комментариев: 4

Получение данных из консольного окна другого приложения

02.11.2018 | Категория: Образ мышления: Assembler | Автор: ManHunter
Мы уже умеем перехватывать ввод и вывод консольных приложений, но этот способ работает только для тех процессов, которые мы сами запустили. Но иногда надо получать информацию из консольных приложений, которые уже были запущены в системе или могут быть запущены в дальнейшем, но не нами. А еще бывают консольные приложения, вывод которых невозможно перенаправить и, соответственно, невозможно получить описанным ранее способом. Для них также придется использовать способ из этой статьи.

Для начала как всегда несколько структур, которые изначально не описаны в FASM. Они нам понадобятся для работы с консольным окном:
  1. struct  COORD
  2.         X dw ?
  3.         Y dw ?
  4. ends
  5.  
  6. struct  SMALL_RECT
  7.         Left   dw ?
  8.         Top    dw ?
  9.         Right  dw ?
  10.         Bottom dw ?
  11. ends
  12.  
  13. struct CONSOLE_SCREEN_BUFFER_INFO
  14.         dwSize              COORD
  15.         dwCursorPosition    COORD
  16.         wAttributes         dw ?
  17.         srWindow            SMALL_RECT
  18.         dwMaximumWindowSize COORD
  19. ends
Теперь немного теории. Любое приложение, даже GUI, может создать собственную консоль или приаттачиться к уже существующей. Для аттача достаточно знать только идентификатор консольного процесса. После этого получаем стандартный хэндл вывода, используемый в этой консоли, параметры консольного окна (количество строк и столбцов), а потом единственной функцией ReadConsoleOutputCharacter забираем из консольного окна все содержимое.

Читать статью целиком »
Просмотров: 1370 | Комментариев: 0

Перехват Ctrl+C и Ctrl+Break в консольных программах

29.03.2018 | Категория: Образ мышления: Assembler | Автор: ManHunter

Перехват Ctrl+C и Ctrl+Break в консольных программах

В отличие от оконных приложений, у консольных программ не так много возможностей по обработке разных нештатных ситуаций, например, внепланового завершения работы. Это может быть нажатие комбинаций Ctrl+С, Ctrl+Break или закрытие окна консоли. Правильно написанное приложение должно уметь обрабатывать подобные ситуации и корректно завершать работу, то есть успеть сохранить какие-то промежуточные данные, освободить занятые ресурсы или уведомить пользователя, что его действия контрпродуктивны.

Читать статью целиком »
Просмотров: 2692 | Комментариев: 3

prev 01 02
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2022
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.17 сек. / MySQL: 3 (0.074 сек.) / Память: 4.75 Mb
Наверх