![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
HooK на WindowCreate ! [D7, Win2k]
DoG © (2004-03-21 16:55:00)Здравствуйте !
Проблема такая! Как отловить WindowCreate Что нить с ним сделать ? Делая так и никак не реагирует может что то забыл :(ето кусок из длл):
function ShellProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var
s : PChar;
begin
if code = HSHELL_WINDOWCREATED then
begin
Hndl2 := TMsg(Pointer(wParam)^).message ;
GetWindowText(Hndl2,S,100);
ShowMessage(s);
end;
Result:= CallNextHookEx(SysHook, Code, wParam, lParam);
end;
GrayFace (2004-03-25 11:26:00) [1]По-моему, надо делать S:=AllocMem(100);
Игорь Шевченко (2004-03-24 10:04:00) [2]DoG © (24.03.04 09:38)
А что, хук на мышь или на сообщения и создание окна это одно и то же ?
КНИГИ ЧИТАТЬ! До полного просветления.
---
LMD
DoG (2004-03-24 09:38:00) [3]Но так ведь работает !function SysMsgProc(code : integer; wParam : Cardinal; lParam : longint) : longint; stdcall;
var
s : PChar;
begin
if code = HC_ACTION then
begin
if TMsg(Pointer(lParam)^).message = WM_RBUTTONDOWN then
begin
GetCursorPos(XY);
ShowMessage(IntToStr(XY.X)+':'+IntToStr(XY.Y));
Hndl := WindowFromPoint(XY);;
ShowMessage(IntToHex(Hndl,2));
SendMessage(Hndl,WM_CHAR,ord('A'),0);
end;
end;
Result:= CallNextHookEx(SysHook, Code, wParam, lParam);
end;
RyDmi (2004-03-23 22:57:00) [4]Удалено модератором
Примечание: Задай свой вопрос в отдельной ветке
Игорь Шевченко (2004-03-23 22:18:00) [5]DoG © (23.03.04 17:02)
1) function ShellProc(code : integer; wParam : Cardinal; lParam
: longint) : longint; stdcall;
2)
> function ShellProc(code : integer; wParam : word; lParam
> : longint) : longint; stdcall;
> var
> s : PChar;
> begin
> if code = HSHELL_WINDOWCREATED then
> begin
> Hndl2 := wParam;//TMsg(Pointer(wParam)^).message ;
> GetWindowText(Hndl2,S,100);
> ShowMessage(s);>
> Result:= CallNextHookEx(SysHook, Code, wParam, lParam);
> end;
Как ты думаешь, что у тебя будет в выделенном фрагменте текста ?
Если ты внутри обработки создания окна создаешь еще одно окно...
DoG (2004-03-23 20:19:00) [6]Удалено модератором
Примечание: Создание пустых сообщений
DoG (2004-03-23 17:02:00) [7]function ShellProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var
s : PChar;
begin
if code = HSHELL_WINDOWCREATED then
begin
Hndl2 := wParam;//TMsg(Pointer(wParam)^).message ;
GetWindowText(Hndl2,S,100);
ShowMessage(s);
Result:= CallNextHookEx(SysHook, Code, wParam, lParam);
end;
procedure hook(switch : Boolean) export; stdcall;
begin
if switch=true then
begin
{ Устанавливаю HOOK, если он не установлен (switch=true). }
SysHook := SetWindowsHookEx(WH_SHELL, @ShellProc, HInstance, 0);
if SysHook <> 0 then
MessageBox(0, 'HOOK1 установлен !', 'Message from Exampel1/Process1', 0)
else
MessageBox(0, 'HOOK1 установить не удалось !', 'Message from Exampel1/Process1', 0);
end
else
begin
if UnhookWindowsHookEx(SysHook) then
MessageBox(0, 'HOOK1 снят !', 'Message from Exampel1/Process1', 0)
else
MessageBox(0, 'HOOK1 снять не удалось !', 'Message from Exampel1/Process1', 0);
SysHook := 0;
end;
end;
exports hook;
begin
end.
Игорь Шевченко (2004-03-22 17:53:00) [8]
> function ShellProc(code : integer; wParam : word; lParam
> : longint) : longint; stdcall;
function ShellProc(code : integer; wParam : Cardinal; lParam
: longint) : longint; stdcall;
DeadMeat (2004-03-22 17:52:00) [9]> DoG © (22.03.04 17:40)
А остальное показать нельзя...??
DoG (2004-03-22 17:40:00) [10]Все равно не работает !
VMcL (2004-03-21 20:54:00) [11]Hndl2 := wParam;