![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хэндлы и хуки [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.