Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Полезная фенька - рулезный GetOpenFileName в ваших проектах ;-) 02.04.02 08:54
Автор: HandleX <Александр М.> Статус: The Elderman
|
Народ! Может надо кому?
В MSDN есть статья некоего чела в рубрике C++ Q&A на тему как заюзать новые диалоговые окна открытия\сохранения файлов в стиле WinME\Win2k, и желательно без правки исходников.
Знаете - к примеру, в WinME открываем Блокнот, выбираем из меню "открыть" - и... грызём ногти от зависти ;-)
Там в этой статье говорилось о том, что всё не так просто - изменился формат структуры (она увеличилась на 3 32-битных параметра), передаваемой в эту функцию, и простым добавлением флага не обойтись.
Дык я решил Subj весьма просто - написал DLL, которая вешает Hook на вызов всех GetOpenFileNameA в любой DLL, загруженной в процесс, передавать нужно её ModuleBase (HInstance)). В частности, HInstance может быть и от моего .exe (400000H). ;-)
А в API Hook сидит код, который заводит новую структуру, суёт в неё старую, выставляет новый параметр размера структуры и алаверды!
А потом в старую структуру суёт полученные после вызова GetOpenFileName результаты. Билл Гейтс с Борландом с их новыми версиями компиляторов\библиотек пока отдыхают!
Более того, енто можно юзать к примеру в Clarion или ещё какой-нибудь среде разработки, где есть возможность подключать внешние DLL.В старые проекты придётся добавить максимум три строки ;-)
Десять строк на Delphi - использовал библиотеку JEDI и их объекты по API Hooking. Размер DLL - 80Kb. Могу дать исходники.
|
|
|