Eugie » 21 июн 2005, 21:39
Sera, лишний раз почитать MSDN бывает полезно - вот ты, например, узнал еще об одном варианте задать hotkey
Я не знаю, как получить список всех hotkey'ев, связанных с объектами Shell. Самый тупой способ - пройтись по всем ярлыкам, вызывая для них IShellLink::GetHotkey(). Очевидно, это будет очень медленно, поэтому предположу, что система дублирует инфу о них в реестре. Где именно - понятия не имею. Но работать это хозяйство может примерно так: при запуске explorer.exe (системный процесс - оболочка Windows) считывает из реестра список всех shell-hotkey'ев и регистрирует их внутри себя через RegisterHotKey(). Теперь все shell-хоткеи пойдут через его очередь и будут обработаны на WM_HOTKEY, т.к. можно считать, что процесс explorer всегда имеется в наличии -обычно его все-таки не убивают
Возможно, все совсем не так. Если у тебя есть время и желание копать дальше - флаг в руки. Узнаешь что-нибудь интересное - поделись информацией.
[b]Sera[/b], лишний раз почитать MSDN бывает полезно - вот ты, например, узнал еще об одном варианте задать hotkey ;)
Я не знаю, как получить список всех hotkey'ев, связанных с объектами Shell. Самый тупой способ - пройтись по всем ярлыкам, вызывая для них IShellLink::GetHotkey(). Очевидно, это будет очень медленно, поэтому предположу, что система дублирует инфу о них в реестре. Где именно - понятия не имею. Но работать это хозяйство может примерно так: при запуске explorer.exe (системный процесс - оболочка Windows) считывает из реестра список всех shell-hotkey'ев и регистрирует их внутри себя через RegisterHotKey(). Теперь все shell-хоткеи пойдут через его очередь и будут обработаны на WM_HOTKEY, т.к. можно считать, что процесс explorer всегда имеется в наличии -обычно его все-таки не убивают :)
Возможно, все совсем не так. Если у тебя есть время и желание копать дальше - флаг в руки. Узнаешь что-нибудь интересное - поделись информацией.