![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 24.02.2013
Сообщений: 7
|
![]()
У меня есть программа, которая создаёт окно, заголовок которого 'Form1'. Используя хуки, мне нужно изменить это окно до того, как это окно появится (например, сделать так, что окно появится с другими координатами).
Проблема в том, что если делать это, учитывая, что Code=HCBT_CREATEWND, то я не могу использовать GetWindowText, чтобы убедиться, что это нужное мне окно с заголовком 'Form1'. Если я использую GetClassName, то получаю класс "Window" (но ведь в системе может быть не одно окно с таким классом). Исправьте пожалуйста код моей dll, чтобы решить эту задачу. Заранее спасибо. Вот код моей dll: Код:
|
![]() |
![]() |
![]() |
#2 | |
Регистрация: 24.02.2013
Сообщений: 7
|
![]()
Удалось узнать заголовок с помощью PCBTCREATEWND(LParam).lpcs.lpszName
Теперь нужно изменить координаты создаваемого окна... В msdn написано: Цитата:
Пытался использовать: MoveWindow, SetWindowPos. Также пробовал делать так: "PCBTCREATEWND(LParam).lpcs.x:= 0" (и тоже самое с y). Но у меня так и не получилось изменить координаты создаваемого окна... Последний раз редактировалось crazygoldbullet; 14.08.2013 в 23:30. |
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 10.08.2013
Сообщений: 67
|
![]()
Не лишним будет проверять еще и какому процессу принадлежит окно(GetWindowThreadProcessId).
Form1 - это болезнь Delphi/C++Builder, там много чего дополнительного напихано в RTL, т.е. после создания окна(о чем информирует HCBT_CREATEWND) RTL delphi/builder`а самостоятельно изменяет положение окна - MoveWindow/SetWindowPos. Рекомендую сначала запоминать нужный хендл(во время HCBT_CREATEWND), потом ловить HCBT_MOVESIZE, проверять хендл и изменять PRECT(LParam).Left := 0 +не забыть флаг какой-то поставить, что начальное положение окна уже изменялось, иначе потом не сдвинуть будет Последний раз редактировалось asmprog; 25.08.2013 в 03:13. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать, чтобы после нажатия кнопки выводилось нужное мне окно? | phantasmagoria | Помощь студентам | 5 | 28.04.2011 23:43 |
Необходимо сделать удаление как в динамическом массиве, сложность в том что массив обычный | Сеня2007 | Помощь студентам | 3 | 22.11.2010 08:31 |
Hook - что это? | VintProg | Общие вопросы Delphi | 2 | 20.06.2010 12:18 |
Что это такое и как это того... | Alex Cones | Общие вопросы Delphi | 2 | 11.10.2009 12:04 |
Как же мне это сделать? DBgrid | khaz | Компоненты Delphi | 4 | 12.02.2007 08:58 |