Новичок
			
			
				
					
				
			
		- Статус
- Оффлайн
- Регистрация
- 8 Фев 2023
- Сообщения
- 1
- Реакции
- 0
Всем привет. Делаю простенький оверлей для доты на Imgui с бэкендом d3d11 и заметил, что после инжекта ввод с клавиатуры и мыши в доте не работает, пока не сделать Alt+Tab из игры и в игру. Хук стандартный (MinHook обернутый в классы с деструкторами), WindowProc выглядит вот так:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Функция вызывается:
	
	
		
			
		
		
	
	
		 
	
		
	
Основу для кода брал с опенсорсного чита (
Предполагаю, что это как-то может быть связано с вызовом ::GetForegroundWindow.
Буду благодарен за любые идеи, почему так происходит и как это фиксить.
				
			
			
				C++:
			
		
		
		extern auto ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) -> LRESULT;
auto WINAPI WinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) -> LRESULT
{
  namespace m = d2a::managers;
  static auto input_fix_flag = std::once_flag();
  m::IO::ref_mut().process(wparam, msg);
  if(not m::Draw::ref().show_ui())
    return ::CallWindowProcA(m::Draw::ref_mut().d3d11_data_mut().oWndProc, hwnd, msg, wparam, lparam);
  ::ImGui_ImplWin32_WndProcHandler(hwnd, msg, wparam, lparam);
  std::call_once(input_fix_flag, [hwnd, msg, wparam, lparam]() {
    llog::trace("fixing input");
    ::CallWindowProcA(
      m::Draw::ref_mut().d3d11_data_mut().oWndProc,
      hwnd,
      msg,
      wparam,
      lparam
    );
    llog::debug("fixing input......................... OK");
  });
  return 1;
} 
	Основу для кода брал с опенсорсного чита (
	Пожалуйста, авторизуйтесь для просмотра ссылки.
, спасибо автору за такие исходники) и понемногу переписываю ее на более безопасный вариант кода, у него тоже висит issue с этой проблемой (
	Пожалуйста, авторизуйтесь для просмотра ссылки.
).Предполагаю, что это как-то может быть связано с вызовом ::GetForegroundWindow.
Буду благодарен за любые идеи, почему так происходит и как это фиксить.
 
				 
 
		 
 
		 
 
		 
 
		 
 
		