PC에서 실행되는 모든 응용 프로그램에서 키보드 이벤트를 처리하는 C++ 응용 프로그램 (실제로는 사용자가 입력하는 일부 구문을 "catch"하려는 경우)을 만들려고합니다. 내가 만들려고 노력하고있는 무슨의 아주 기본은 이것이다 :Windows API 전역 후크의 무제한 범위
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <windows.h>
using namespace std;
HHOOK hHook;
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
printf("Activated\n");
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
자,이 사람은 세계입니다,하지만 난 실행할 때 내 키보드 입력을 "듣고"하지 않는 것을 알았을 때 여전히 나는 붙어있어 특정 애플리케이션 내 응용 프로그램의 바탕 화면에이 콜백 함수가 전역이므로 원하는 응용 프로그램이 내 응용 프로그램과 동일한 바탕 화면에 속하지 않는 것이 문제라는 것을 알았습니다. 데스크톱 전환 트릭을 구현하려고했지만 Windows API에 익숙하지 않아 모든 노력이 곧 실패했습니다. MSDN 추천은 자습서로 충분하지 않습니다. 내 응용 프로그램을 컴퓨터의 키보드 입력을 어디서나 들려 줄 수있는 방법이 있습니까?
미리 도움 주시면 감사하겠습니다.
이러한 제한 사항으로 인해 사용자 (사용자)가 악성 응용 프로그램 (키로거 등)으로부터 보호받을 수 있습니다. 그들은 그렇게 많이 성공하지는 않습니다 ... – rodrigo
두 번째 데스크탑의 글로벌 후크입니다. – Xearinox
응용 프로그램은 자신의 데스크톱이 아닌 다른 데스크톱에 액세스 할 수 없습니다. 각 데스크톱에 응용 프로그램 복사본이 필요하거나 드라이버를 사용해야합니다. 왜 다른 데스크톱을 연결해야하는지 명확하지 않습니다. 어쩌면 다른 데스크탑에 로그인 한 사람이 매크로 프로그램을 원하지 않을 수도 있습니다. (어쩌면 다른 사람이 당신이 자신의 활동을 키로깅하는 것을 원하지 않는 관리자 일 수 있습니다.) –