Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Windows 10. Обсуждение работы (XIII)

Модерирует : KLASS, IFkO

KLASS (04-02-2020 17:33): Продолжение в Windows 10. Обсуждение работы (XIV)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

iglezz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Disclaimer: в WinAPI откровенно слаб, могу ошибаться в терминах и остальном :)
 
Для сокращения:
TLB = TrueLaunchBar
DWK = Disable Windows Keys plugin
 
Скитания по интернету в поисках инфы по теме и созерцание дизассемблированного кода плагина в IDA навели на такие мысли:
 
Глобальный hotkey делается функцией RegisterHotKey(handle окна, id, модификатор, клавиша) а удаляется, соответственно, UnregisterHotKey(handle окна, id).
 
Хоткеи Win+# зарегистрированы модулем, реализующим таскбар с кнопкой пуск и прочим, с именем класса "Shell_TrayWnd".
Чтобы освободить нужные нам хоткеи мы должны работать в потоке этого модуля, отсюда и требование панели TLB с кнопкой DWK быть на панели задач, а не отдельным плавающим окошком.
 
Его handle найти легко
id сложнее и это я пытаюсь понять (пока безуспешно)
 
Вот так выглядит псевдокод интересного нам участка:

Код:
int __fastcall sub_180002A20(__int64 a1)
{
  __int64 v1; // rdi
  HWND v2; // rax
  HWND v3; // rsi
  _DWORD *v4; // rdi
  int *v5; // rbx
 
  v1 = a1;
  v2 = FindWindowW(L"Shell_TrayWnd", 0i64); // находим хэндл
  v3 = v2;
  if ( v2 )
  {
    v4 = (_DWORD *)(v1 + 640); // какая-то магия :)
    v5 = (int *)&unk_1800950C8; // какая-то магия :)
    do
    {
      // Профит !!
      if ( *v4 )  
        LODWORD(v2) = UnregisterHotKey(v3, *v5);
      else
        LODWORD(v2) = RegisterHotKey(v3, *v5, *(v5 - 2), *(v5 - 1));
      v5 += 3;
      ++v4;
    }
    while ( (__int64)v5 < (__int64)&qword_1800951A0 );
  }
  return (int)v2;
}

 
 

Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 00:38 11-11-2019 | Исправлено: iglezz, 00:43 11-11-2019
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Windows 10. Обсуждение работы (XIII)
KLASS (04-02-2020 17:33): Продолжение в Windows 10. Обсуждение работы (XIV)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru