Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
@!!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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.019 c
2-1197525966
Uno-84
2007-12-13 09:06
2008.01.13
Проблема при записи в таблицу


6-1177322028
Ypbi4
2007-04-23 13:53
2008.01.13
ClientSocket -- получение ответа на запрос


2-1197361364
Soulless
2007-12-11 11:22
2008.01.13
Изменение фона в Qreport


2-1197872493
К. Павел
2007-12-17 09:21
2008.01.13
Сдвинуть данные в массиве.


15-1196971356
shaman
2007-12-06 23:02
2008.01.13
тормоза под Win2003





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский