Сообщение 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). Он вполне может реагировать на внешние события как триггер обработки клавиатуры/мышки, ставить в очередь, и дочитывать реальное/текущее состояние для фильтрации событий совсем чуток погодя. Таким образом если вы пробрасываете настоящие нажатия — оно будет/должно работать, а если синтезируете события полностью программно, то не будет.
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 в случае, если окно прячется?
CC>В том числе попробовал посоветованные выше IAccessible, SetWindowLong() и сильно отрицательные координаты. Что-то ничто не помогает.
Сильно-отрицательные координаты (при постоянном видимом окне) как раз должны бы работать. Что если вообще сделать нормально видимым — принимает ли оно ввод? А если оставить пару пикселов?
C>Теперь уже буду пробовать другие упомянутые выше советы, типа Sciter. Вообще сторонние либы я не очень-то хотел, ибо там обычно заморочки с лицензированием.
С встраиванием IE проблем сильно больше. традиционные: непонятно какая версия (ну это уже не актуально), неясное (глобальное) конфигурирование, например, звук навигации, и дикие воркэраунды через изменение реестра.
C>Там стандартнейший и простейший IWebBrowser2 (этот проект), я несколько сомневаюсь, что там есть такое. Но таки да, подозрения эти обоснованы!
C>Тем не менее SetWindowLong() тоже не помог. Может, я где-то накосячил в другом месте.
SetWindowLong нейтрализуется с помощью GetWindowLong на вызываемой стороне.
C>ЗЫ. Нагуглил еще AttachThreadInput()
Тут, по идее это лишнее, если IE создает окно связанное с твоим потоком. Если же со своим — тогда стоит покопать в этом направлении.
PS: В дополнение ко всему IE наверняка еще и вызывает что-то на подобии GetKeyState для определения состояния клавиш-модификаторов, в том числе и мышиных (VK_LBUTTON). Он вполне может реагировать на внешние события как триггер обработки клавиатуры/мышки, ставить в очередь, и дочитывать реальное/текущее состояние для фильтрации событий совсем чуток погодя. Таким образом если вы пробрасываете настоящие нажатия — оно будет/должно работать, а если синтезируете события полностью программно, то не будет.
PPS: Не меняет ли IE размер своего окна на 0х0 в случае, если окно прячется?