Я хочу определить направление прокрутки другого приложения. Я могу сделать это, если пользователь прокручивает колесико мыши или клавиатуру (клавиши вверх/вниз/влево/вправо) через крючки. Но я не могу зафиксировать то же самое, когда пользователь использует полосы прокрутки, присутствующие в таких приложениях, как Chrome.
Я пробовал ниже собственный метод, но он не работает для многих приложений, таких как Chrome, и работает для Notepad ++, так как он не может обнаруживать полосы прокрутки для Chrome. Я хочу что-то, что работает для всех приложений.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetScrollInfo(IntPtr hwnd, int fnBar, ref SCROLLINFO lpsi);
У меня есть довольно много исследований, но я не смог найти ничего, что могло бы указать мне направления, в которых прокручивается страница. Пожалуйста, дайте мне знать, если потребуется дополнительная информация.
Обновление:
Я пытаюсь использовать автоматизацию пользовательского интерфейса, чтобы получить информацию о полосе прокрутки для Chrome.
Вот как?
Я сделал коллекцию Windows Gui Rectangles, используя EnumChildWindows
, которая также извлекает дочерние элементы управления. Основываясь на положении мыши, выберите дескриптор окна, прямоугольник графического интерфейса которого содержит мою позицию мыши. У дескриптора, который я получил, прямоугольник Gui = клиентская область хрома.
Проблема:
Ниже приведен код. И это дает мне пустую коллекцию в elementCollection
в случае Chrome и успешно возвращает 2 элемента полосы прокрутки в случае Notepad++.
var element = AutomationElement.FromHandle(handle);
if(element != null)
{
Condition condition =
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ScrollBar);
// Find all children that match the specified conditions.
AutomationElementCollection elementCollection =
element.FindAll(TreeScope.SubTree, condition);
}
SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
для имитации движения полосы прокрутки. - person shruti singh   schedule 14.11.2018