Информация об изменениях

Сообщение Re[5]: Кликнуть в скрытое окно от 06.08.2019 21:26

Изменено 06.08.2019 21:33 Mystic Artifact

Re[5]: Кликнуть в скрытое окно
Здравствуйте, Cannol, Вы писали:

MA>> PS: В дополнение ко всему IE наверняка еще и вызывает что-то на подобии GetKeyState для определения состояния клавиш-модификаторов, в том числе и мышиных (VK_LBUTTON). Он вполне может реагировать на внешние события как триггер обработки клавиатуры/мышки, ставить в очередь, и дочитывать реальное/текущее состояние для фильтрации событий совсем чуток погодя. Таким образом если вы пробрасываете настоящие нажатия — оно будет/должно работать, а если синтезируете события полностью программно, то не будет.

C>Намекните, пожалуйста, что за настоящие нажатия имеются в виду? На уровне драйвера мыши?
Имелось ввиду — нажатие на настоящей мышки. Если просто послать сообщение, то это состояние никак не изменится.
Вот из документации к GetKeyboardState:

An application can call this function to retrieve the current status of all the virtual keys. The status changes as a thread removes keyboard messages from its message queue. The status does not change as keyboard messages are posted to the thread's message queue, nor does it change as keyboard messages are posted to or retrieved from message queues of other threads. (Exception: Threads that are connected through AttachThreadInput share the same keyboard state.)

Я просто это сказал к слову, т.к. практически любая обработка событий клавиатуры/мышки сопряжена с этими или подобными вызовами.

Но это вообще не очень похоже на текущую проблему. Это бы скорее всего проявлялось, в том, что JS события не наполнены до конца, или там комбинации какие-нибудь не учитываются.
Re[5]: Кликнуть в скрытое окно
Здравствуйте, Cannol, Вы писали:

MA>> PS: В дополнение ко всему IE наверняка еще и вызывает что-то на подобии GetKeyState для определения состояния клавиш-модификаторов, в том числе и мышиных (VK_LBUTTON). Он вполне может реагировать на внешние события как триггер обработки клавиатуры/мышки, ставить в очередь, и дочитывать реальное/текущее состояние для фильтрации событий совсем чуток погодя. Таким образом если вы пробрасываете настоящие нажатия — оно будет/должно работать, а если синтезируете события полностью программно, то не будет.

C>Намекните, пожалуйста, что за настоящие нажатия имеются в виду? На уровне драйвера мыши?
Имелось ввиду — нажатие на настоящей мышки. Если просто послать сообщение, то это состояние никак не изменится.
Вот из документации к GetKeyboardState:

An application can call this function to retrieve the current status of all the virtual keys. The status changes as a thread removes keyboard messages from its message queue. The status does not change as keyboard messages are posted to the thread's message queue, nor does it change as keyboard messages are posted to or retrieved from message queues of other threads. (Exception: Threads that are connected through AttachThreadInput share the same keyboard state.)

Я просто это сказал к слову, т.к. практически любая обработка событий клавиатуры/мышки сопряжена с этими или подобными вызовами.

Но это вообще не очень похоже на текущую проблему. Это бы скорее всего проявлялось, в том, что JS события не наполнены до конца, или там комбинации какие-нибудь не учитываются.

ADD: Ну да, в моём отрывке как раз сказано обратное , что состояние меняется с тем как сообщения удаляются из очереди сообщений. Это не совсем то, что я сказал... Но исходя из того, что лично видел я в коде одного другого браузера — они используются как попало и где попало, пока не примут какую-то внятную внутреннюю форму.