HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 09.06.2022, 20:26
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Хочу поймать VK_SHIFT в хуке WndProc, но как я понимаю в комбинации с другой клавишей, например шифт+1 сгенерирует событие восклицательного знака, а не шифта или единицы. Есть ли способ именно в WndProc узнать, что был нажат именно VK_SHIFT даже если они был нажат в комбинации с другой клавишей?
 
Ответить с цитированием

  #2  
Старый 03.02.2023, 08:09
uqowivad
Познающий
Регистрация: 24.05.2019
Сообщений: 34
С нами: 3670669

Репутация: 73
По умолчанию

Этот код сначала проверяет, нажата ли клавиша VK_SHIFT

Затем проверяет параметр wParam, чтобы узнать, какая другая клавиша была нажата в сочетании с VK_SHIFT.

c++:





Код:
LRESULT CALLBACK
WndProc
(
HWND hWnd
,
UINT message
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
message
==
WM_KEYDOWN
)
{
if
(
GetKeyState
(
VK_SHIFT
)
&
0x8000
)
{
// VK_SHIFT Only
if
(
wParam
==
'1'
)
{
// VK_SHIFT + 1
}
else
if
(
wParam
==
'2'
)
{
// VK_SHIFT + 2
}
// code
}
}
// code
}
 
Ответить с цитированием

  #3  
Старый 03.02.2023, 10:41
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Цитата:
Сообщение от uqowivad  

Этот код сначала проверяет, нажата ли клавиша VK_SHIFT
Затем проверяет параметр wParam, чтобы узнать, какая другая клавиша была нажата в сочетании с VK_SHIFT.

c++:





Код:
LRESULT CALLBACK
WndProc
(
HWND hWnd
,
UINT message
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
message
==
WM_KEYDOWN
)
{
if
(
GetKeyState
(
VK_SHIFT
)
&
0x8000
)
{
// VK_SHIFT Only
if
(
wParam
==
'1'
)
{
// VK_SHIFT + 1
}
else
if
(
wParam
==
'2'
)
{
// VK_SHIFT + 2
}
// code
}
}
// code
}

Проверял? На сколько мне подсказывает память там будет восклицательный знак, а не единичка.
 
Ответить с цитированием

  #4  
Старый 03.02.2023, 13:02
uqowivad
Познающий
Регистрация: 24.05.2019
Сообщений: 34
С нами: 3670669

Репутация: 73
По умолчанию

Цитата:
Сообщение от Ya Zaregalsya  

Проверял? На сколько мне подсказывает память там будет восклицательный знак, а не единичка.
Только что проверил - действительно выводит 1
 
Ответить с цитированием

  #5  
Старый 03.02.2023, 14:52
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Цитата:
Сообщение от uqowivad  

Только что проверил - действительно выводит 1
Так, вопрос старенький, чёто туплю. Суть вопроса был в чём, как поймать событие вк шифт если при этом нажаты другие клавиши. Т.е. нужен именно ВК ШИФТ, а не единички или восклицательные знаки, и желательно поймать его в кач-ве события, проблема в том, что в комбинации с цифрами это уже будет не ВК_ШИФТ, а соответствующий символ !"№;%:?*()_+. Костыльное решение проблемы это юзать функи по типу GetKeyState или IsKeyJustPressed в СФ, как я собстно и сделал, но красивее и надёжнее это было бы реализовать именно событием, чтобы ловить как нажатие, так и отжатие шифта.
 
Ответить с цитированием

  #6  
Старый 03.02.2023, 15:01
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

Цитата:
Сообщение от Ya Zaregalsya  

Так, вопрос старенький, чёто туплю. Суть вопроса был в чём, как поймать событие вк шифт если при этом нажаты другие клавиши. Т.е. нужен именно ВК ШИФТ, а не единички или восклицательные знаки, и желательно поймать его в кач-ве события, проблема в том, что в комбинации с цифрами это уже будет не ВК_ШИФТ, а соответствующий символ !"№;%:?*()_+. Костыльное решение проблемы это юзать функи по типу GetKeyState или IsKeyJustPressed в СФ, как я собстно и сделал, но красивее и надёжнее это было бы реализовать именно событием, чтобы ловить как нажатие, так и отжатие шифта.
mod_sa/src/keyhook.cpp at dc9b3b13599a8b6325e566f567b5391b0b2a6dc8 · BlastHackNet/mod_sa

Multi-purpose cheat tool for GTA San Andreas and SA-MP - BlastHackNet/mod_sa

github.com
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.