Я использую Tobii Eyetracker для проекта на c #.Цель состоит в том, чтобы отправить определенный ключевой ввод (т. Е. F5 для обновления) в окно, на которое в данный момент смотрят.
const UInt32 WM_KEYDOWN = 0x0100;
const int VK_F5 = 0x74;
Hook.GlobalEvents().OnCombination(new Dictionary<Combination, Action> {
{Combination.FromString("Shift+Alt+L"), () => {
// get IntPtr of gazed at window and sets it active, this works
IntPtr newWindow = WindowFromPoint(new Point(xCord,yCord));
SetForegroundWindow(newWindow);
SetActiveWindow(newWindow);
// should send "F5" to the window thats gazed at
PostMessage(newWindow, WM_KEYDOWN, VK_F5, 0);
}
}
});
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
Ввод захватывается с помощью пакета NuGet globalMouseKeyHook и работает.Но PostMessage отправляет команду F5 только в том случае, если другое окно активно и ранее получены входные данные.Таким образом, оно не обновляет текущее окно (даже если оно остается активным), а также не обновляет другое окно, если предыдущее окно не получило никаких входных данных (даже если новое окно правильно установлено как активное).