Хакер » 29.02.2012 (Ср) 17:05
Есть такая функция InitCommonControls. Многие удивляются, что она ничего не делает. Она действительно ничего не делает (состоит из одной инструкции retn).
Суть этой функции для Си(++) программистов в том, что с тех пор, как они поставили её вызов, функция попала в таблицу импорта, и теперь загрузчик в самый момент загрузки (до вызова WinMain) уже разрулит SxS-случай. Так что сишники её могут даже не вызвать на самом деле, достаточно наличия импорта.
К VB-шникам это относится в той же степени, если они импортируют эту функцию через TLB. Если они «импортируют» её через Declare, то функция не попадает в стандартную таблицу импорта, и тогда функцию придётся вызвать (но в самом начале приложения), чтобы это библиотека (comctl32.dll) подгрузилась и SxS-менеджер мог подгрузить «левую» библиотеку, вместо стандартной.
Иными словами, роль этой функции очень специфична — насильно заставить загрузить правильный образ comctl32.dll
Ты позаботился об этом?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.