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

Как узнать раскладку клавиатуры другого приложения
21.01.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter
Сегодня разберем, как можно узнать раскладку клавиатуры, которая активна в окне того или иного приложения. Также она может называться идентификатор языка ввода. С оконными приложениями все просто. Зная хэндл окна, через GetWindowThreadProcessId получаем идентификатор процесса, которому принадлежит исследуемое окно, а затем с помощью функции GetKeyboardLayout получаем код раскладки клавиатуры, которая активна в этом окне. Для консольных окон немного сложнее, так как они не реагируют на GetKeyboardLayout. Но это можно сделать при помощи недокументированной функции GetConsoleKeyboardLayoutName, которая возвращает код раскладки клавиатуры в виде строки. Просто так работать с консолью нельзя, для этого надо предварительно приаттачиться к процессу консольного окна, а после получения нужных данных отключиться от него.Code (Assembler) : Убрать нумерацию
- ; Получить активное окно
- invoke GetForegroundWindow
- ; Получить идентификатор процесса
- invoke GetWindowThreadProcessId,eax,pID
- mov ebx,eax
- ; Это консольное окно?
- invoke AttachConsole,[pID]
- or eax,eax
- jz .loc_gui
- .loc_console:
- ; Получить раскладку консольного окна
- invoke GetConsoleKeyboardLayoutName,buff
- or eax,eax
- jnz @f
- ; Не получилось, отключиться от консоли
- invoke FreeConsole
- ; Попробовать получить раскладку как у оконного приложения
- jmp .loc_gui
- @@:
- ...
- ; В buff строка с кодом раскладки типа "00000419"
- ...
- ; Просто отключиться от консоли
- invoke FreeConsole
- jmp .loc_done
- .loc_gui:
- ; Получить идентификатор раскладки клавиатуры
- invoke GetKeyboardLayout,ebx
- and eax,0xFFFF
- ...
- ; В EAX код раскладки
- ...
- .loc_done:
- ...
Читать статью целиком »
Просмотров: 1579 | Комментариев: 10

Добавляем вкладки в Проводник Windows
19.01.2020 | Категория: Software | Автор: ManHunter

Добавляем вкладки в Проводник Windows
Очередная улучшалка для любителей стандартного Проводника Windows - программа Clover. Она добавляет в окно Проводника вкладки, внешне напоминающие вкладки в браузере Chrome. Таким образом в одном окне Проводника может быть одновременно открыто несколько папок. Поддерживаются версии от Windows XP до Windows 10 всех разрядностей. Также программа Clover совместима с другими системными надстройками, например, с Classic Shell.
Читать статью целиком »
Просмотров: 3725 | Комментариев: 8

Список ошибок обновления Windows
10.01.2020 | Категория: Software | Автор: ManHunter

Список ошибок обновления Windows
Как я уже неоднократно говорил, система Windows очень неинформативна, когда дело касается описания ошибок. Обычно в лог или в диалоговое окно просто выводится числовой код ошибки, по которому нереально определить, что же вообще произошло. Приходится лазить в гуглояндексы, шерстить MSDN в поиске хоть какой-то информации, связанной с этим кодом. Здесь я выкладываю коды ошибок с их строковыми представлениями и, по возможности, с человекопонятным описанием. За основу взята табличка с сайта winitpro.ru, за что им большое спасибо. Всякую ерунду я почистил, оставил только более-менее значимую информацию. Сразу предупреждаю, что даже в таком виде без определенных навыков воспользоваться ей будет сложно, но хотя бы будет примерно понятно, в какую сторону направлять поиски.
Читать статью целиком »
Просмотров: 2812 | Комментариев: 12

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

Отслеживание изменения системного времени
Если ваша программа работает с системным временем, то хорошей практикой будет возможность отслеживать факт его изменения. Это может быть как ручное изменение настроек даты и времени через Панель управления, так и программное изменение времени функциями типа SetSystemTime или SetLocalTime, сути не меняет. Соответственно, при наступлении такого события ваша программа должна переустановить какие-то свои внутренние таймеры, проконтролировать и пересчитать интервалы между процессами и т.п.
Читать статью целиком »
Просмотров: 1697 | Комментариев: 0

Программное выключение нескольких мониторов
04.11.2019 | Категория: Образ мышления: Assembler | Автор: ManHunter

Программное выключение нескольких мониторов
На технических форумах в этих ваших интернетах периодически поднимается тема о программном выключении мониторов. Предлагаются разные решения, чаще всего просто бездумно скопированные с других сайтов или более-менее адаптированные под требуемый язык программирования. В свое время я тоже делал что-то подобное. Сегодня хотелось бы провести глобальную работу над ошибками и выдать "на гора" действительно правильное и рабочее решение этой задачи. Заодно я постараюсь подробно рассказать, что не так с другими предлагаемыми решениями.
Читать статью целиком »
Просмотров: 3989 | Комментариев: 49
