Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.13;
Скачать: CL | DM;

Вниз

Окно в котором нажа пункт меню. Как узнать?   Найти похожие ветки 

 
@!!ex ©   (2007-12-11 20:47) [0]

Нашел такйо код:
{Добавление своих пунктов меню в системное меню окна}
{поместите
const

My_MenuItem=$4000; (*константу можете по своему обозвать и дать ей другой номер, но есть какие-то номера, которые зарезервированы для виндузом для своих пунктов меню - не попадите на них*)
перед
var

Form1: TForm1;
ОБЯЗАТЕЛЬНО ПОМЕСТИТЕ В СЕКЦИЮ PRIVATE СТРОКУ

procedure HookSysCommand(var message : TwmSysCommand);message wm_SysCommand;
}

procedure TForm1.HookSysCommand(var message : TwmSysCommand);
begin

inherited;
case message.CmdType of
My_MenuItem : ShowMessage("Пункт активизирован");
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var

SysMenu : THandle;
begin

SysMenu := GetSystemMenu(Handle, False);
AppendMenu(SysMenu, mf_SEPARATOR, 0, #0);
AppendMenu(SysMenu, mf_BYPOSITION, My_MenuItem, "Новый пункт");
{appendmenu добавляет новый пункт в конец,
а для вставки своего пункта в другую порядковую позицию воспользуйтесь insertmenu
пример : InsertMenu(SMenu, 1, mf_BYPOSITION, My_MenuItem, "Новый пункт");}
end;

НЕпойму, как узнать Handle окна, в меню которого кликнули.


 
Igor Zorkov ©   (2007-12-11 21:25) [1]

SysMenu := GetSystemMenu(Handle, False);


 
@!!ex ©   (2007-12-11 21:26) [2]

> [1] Igor Zorkov ©   (11.12.07 21:25)

Да я уже разобрался.
Вот теперь копаю как на ВСЕ окна модифицированное меню сунуть.


 
Igor Zorkov ©   (2007-12-11 21:39) [3]

@!!ex ©   (11.12.07 21:26) [2]

var
 Wnd: hWnd;
 buff: array[0..127] of Char;
 SysMenu : THandle;
begin
 Wnd := GetWindow(Handle, gw_HWndFirst);
 while Wnd <> 0 do
 begin
   Wnd:= GetWindow(Wnd, gw_hWndNext);
   SysMenu := GetSystemMenu(Wnd, False);
   AppendMenu(SysMenu, mf_SEPARATOR, 0, #0);
   AppendMenu(SysMenu, mf_BYPOSITION, My_MenuItem, "&#205;&#238;&#226;&#251;&#233; &#239;&#243;&#237;&#234;&#242;");
 end;
end;


 
@!!ex ©   (2007-12-11 21:43) [4]

> [3] Igor Zorkov ©   (11.12.07 21:39)

А появится новое окно, что делать? :)
И как в данном случае определять Handle окна?

P.S.
А зачем buff?


 
Igor Zorkov ©   (2007-12-11 21:52) [5]


> @!!ex ©   (11.12.07 21:43) [4]



> А появится новое окно, что делать? :)


например поставить hook на WH_CBT или сравнивать в таймере, потом добавлять пункт меню


> И как в данном случае определять Handle окна?


var
Wnd: hWnd;



> А зачем buff?


Вкралось случайно


 
@!!ex ©   (2007-12-11 22:00) [6]

> например поставить hook на WH_CBT

а дайте статей на установку хуков, плиз. А то я ничего не нашел конкретного, только общую теорию.


 
Igor Zorkov ©   (2007-12-11 22:05) [7]


> @!!ex ©   (11.12.07 22:00) [6]


http://www.rsdn.ru/article/baseserv/winhooks.xml


 
@!!ex ©   (2007-12-11 22:45) [8]

Да это я читал. ТАм как раз теория. Примеров то нету.


 
THandle ©   (2007-12-11 23:48) [9]

Тут тоже была статья по хукам, по моему даже с какими то примерами.


 
Igor Zorkov ©   (2007-12-12 11:23) [10]


> @!!ex ©   (11.12.07 22:45) [8]


Держи WH_CBTHook.rar

http://ifolder.ru/4525434

Старшие товарищи подскажут что я в этом исходнике неправильно написал, если конечно посмотрят его


 
Igor Zorkov ©   (2007-12-12 11:34) [11]


> Igor Zorkov ©   (12.12.07 11:23) [10]


Ошибка вкралась сюда http://ifolder.ru/4525434

Здесь правильный http://ifolder.ru/4525596


 
@!!ex ©   (2007-12-12 11:49) [12]

> [10] Igor Zorkov ©   (12.12.07 11:23)

Спасибо! Буду разбираться.


 
@!!ex ©   (2007-12-12 11:50) [13]

> [11] Igor Zorkov ©   (12.12.07 11:34)

А что за ошибка? вроде работает..



Страницы: 1 вся ветка

Текущий архив: 2008.01.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
11-1182516150
Nikfel
2007-06-22 16:42
2008.01.13
Алгоритм перебора символов.


4-1182258624
Викетор1985
2007-06-19 17:10
2008.01.13
Как зная имя процесса получить его PID


4-1182091700
spin722
2007-06-17 18:48
2008.01.13
работа с модемом


1-1192255008
Key
2007-10-13 09:56
2008.01.13
"Устаревший стиль объекта"


2-1197379946
alikon1
2007-12-11 16:32
2008.01.13
BDE Query