Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хэндлы и хуки [Win95/98]


elfy ©   (2003-01-12 00:26:00) 

Здравствуйте все!!!

Хочу задать 2 вопроса:

Есть хэндл окна, как получить его заголовок?(не через GetWindowText - на чужие окна не работает...)

Как правильно ставить SHELL хук на изменение заголовка окна?

Заранее большое спасибо


R4D][   (2003-01-12 17:22:00) [1]

Дык ты не инициализировал galfa:
GetMem(Galfa,255);
GetWindowText(wParam, Galfa, 255);
FreeMem(Galfa);
А вообще мне больше по вкусу массивы символов, как в моем примере, глюков меньше.


elf_123   (2003-01-12 16:08:00) [2]

Не знаю...

А вот такой код вываливается в ошибку проги-оболочки:

function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var f: TextFile;
galfa: PChar;
...
GetWindowText(wParam, Galfa, 255);

wParam - 100% хэндл для ШеЛ ХУКА


R4D][   (2003-01-12 13:59:00) [3]

>Есть хэндл окна, как получить его заголовок?(не через GetWindowText - на чужие окна не работает...)

Как это не работает:
Пример: Пойдем от обратного: у меня открыто окно с заголовком "Интернет"(ради эксперимента создай папку с именем Интернет и открой ее в Explorer"e), находим его хэндл и передаем его в качестве первого параметра в GetWindowText: во втором параметре получаем тот же "Интернет", вот кусок кода:
...
var
nb: array [0..255] of Char;
...
GetWindowText(FindWindow(nil,"Интернет"),nb,255);
MessageBox(0,nb,"",mb_ok);


elf_123   (2003-01-12 13:40:00) [4]

Спасибо, но ВМ_ГТТЕКСТ тоже не пашет ;)


Оливейра   (2003-01-12 01:14:00) [5]

Опять скосячил.
WH_GETMESSAGE вместо WH_MSGFILTER / WH_SYSMSGFILTER


Оливейра   (2003-01-12 01:12:00) [6]

1) WM_GETTEXT
2) Так же, как и прочие хуки :)
WH_MSGFILTER / WH_SYSMSGFILTER на WM_SETTEXT;
если родитель окна не 0 - вываливаемся;
адрес MSG - в lParam.


Наверх

Титульная страница Поиск, карта сайта Написать письмо