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

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

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;


Наверх

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