Win32API Как мое окно может следовать за существующим окном - PullRequest
0 голосов
/ 21 декабря 2010

Всем профессионалам Win32. Допустим, мы завершили существующее приложение с окном. Задача - написать еще одно приложение с (моим) окном. Мое окно должно всегда выравнивать его левый край к правому краю существующего окна, пока пользователь перемещает существующее окно по экрану (мое окно не может перемещаться пользователем).

Условие: а) Существующее окно не может быть разделено на подклассы б) Крюки Windows не имеют значения.


Да, выглядит правильно. Я бы не задавал этот вопрос, если бы это не стало проблемой. Забыл сказать, что ОС - это Vista 2, а приложение - IE. Я пытаюсь сделать приложение, которое следует за главным окном IE, выровнять его по краю. Подклассы IE не разрешены, и SetWindowsHook не работает правильно под обычным пользователем (когда пользователь имеет права администратора, приложение работает нормально). Таким образом, все вы говорите о работе под Windows до Vista.

И похоже, что нет тривиального способа решить эту задачу. Спасибо всем.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2010

Если вы не хотите / не можете подкласс или установить глобальные хуки, вы можете посмотреть на следующее:

  • Реализуйте свой код в DLL
  • Вызовите CreateRemoteThread по адресу LoadLibrary и вашемуИмя DLL для внедрения вашей DLL в целевой процесс
  • В DllMain библиотеки DLL вы можете установить SetWindowHook только в потоке, который владеет окном.Это локальная ловушка, она не требует специальных привилегий и очень хороша для системы.
  • В вашей функции ловушки обработайте WM_WINDOWPOSCHANGED в HWND главного окна и соответствующим образом настройте окно.
0 голосов
/ 21 декабря 2010

Я думаю, что вы не можете без крючка. SetWindowLong позволяет вам установить WndProc, но это не будет работать, если окно принадлежит другому приложению.

...