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

Сообщение Re[3]: Кликнуть в скрытое окно от 06.08.2019 7:11

Изменено 06.08.2019 7:12 Mystic Artifact

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

CC>В том числе попробовал посоветованные выше IAccessible, SetWindowLong() и сильно отрицательные координаты. Что-то ничто не помогает.

Сильно-отрицательные координаты (при постоянном видимом окне) как раз должны бы работать. Что если вообще сделать нормально видимым — принимает ли оно ввод? А если оставить пару пикселов?

C>Теперь уже буду пробовать другие упомянутые выше советы, типа Sciter. Вообще сторонние либы я не очень-то хотел, ибо там обычно заморочки с лицензированием.

С встраиванием IE проблем сильно больше. традиционные: непонятно какая версия (ну это уже не актуально), неясное (глобальное) конфигурирование, например, звук навигации, и дикие воркэраунды через изменение реестра.

C>Там стандартнейший и простейший IWebBrowser2 (этот проект), я несколько сомневаюсь, что там есть такое. Но таки да, подозрения эти обоснованы!

C>Тем не менее SetWindowLong() тоже не помог. Может, я где-то накосячил в другом месте.
SetWindowLong нейтрализуется с помощью GetWindowLong на вызываемой стороне.


C>ЗЫ. Нагуглил еще AttachThreadInput()

Тут, по идее это лишнее, если IE создает окно связанное с твоим потоком. Если же со своим — тогда стоит покопать в этом направлении.

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

CC>В том числе попробовал посоветованные выше IAccessible, SetWindowLong() и сильно отрицательные координаты. Что-то ничто не помогает.

Сильно-отрицательные координаты (при постоянном видимом окне) как раз должны бы работать. Что если вообще сделать нормально видимым — принимает ли оно ввод? А если оставить пару пикселов?

C>Теперь уже буду пробовать другие упомянутые выше советы, типа Sciter. Вообще сторонние либы я не очень-то хотел, ибо там обычно заморочки с лицензированием.

С встраиванием IE проблем сильно больше. традиционные: непонятно какая версия (ну это уже не актуально), неясное (глобальное) конфигурирование, например, звук навигации, и дикие воркэраунды через изменение реестра.

C>Там стандартнейший и простейший IWebBrowser2 (этот проект), я несколько сомневаюсь, что там есть такое. Но таки да, подозрения эти обоснованы!

C>Тем не менее SetWindowLong() тоже не помог. Может, я где-то накосячил в другом месте.
SetWindowLong нейтрализуется с помощью GetWindowLong на вызываемой стороне.


C>ЗЫ. Нагуглил еще AttachThreadInput()

Тут, по идее это лишнее, если IE создает окно связанное с твоим потоком. Если же со своим — тогда стоит покопать в этом направлении.

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

PPS: Не меняет ли IE размер своего окна на 0х0 в случае, если окно прячется?