![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Инициализация модулей [D5, Win2k]
Анатолий © (2004-08-10 16:04:00)Можно ли сделать так, чтобы подгружаемые модули, прописанные в разделе uses не инициализировались перед началом работы программы при запуске, а инициализировались по желанию программиста?
Или по-другому, можно ли исполнить свой код гарантированно перед инициализацией некоторых модулей?
Например:
инициализация модуля module1
исполняется некоторый мой код
инициализация модуля module2
..
инициализация модуля moduleN
Анатолий (2004-08-10 17:16:00) [1]Спасибо, добрый человек. Я как-раз доходил уж до этого. Но ты меня опередил :).
Спасибо всем, этой проблемы больше нет.
icWasya (2004-08-10 17:04:00) [2]ну дык и пиши
project MyProject;
uses
UnitSetThreadDesktop in 'UnitSetThreadDesktop.pas',
forms,
unit1 in 'unit1.pas' {Form1},
unit2 in 'unit2.pas' {Form2};
begin
...
end;
а в секции инициализации UnitSetThreadDesktop делай то, что тебе нужно. Или что?
Анатолий (2004-08-10 16:30:00) [3]Я задавал этот вопрос недавно в другом аспекте на API конференции. Вкратце: мне нужно сменить текущий десктоп на интерактивный для приложения, запущенного с неинтерактивным логоном. Я использую SetThreadDesktop. Но функция отрабатывает, только если в в старом десктопе программа не создала ни одного объекта - окна или хука. Я использую некоторые стандартные модули VCL (править их не могу да и некрасиво). При инициализации, некоторые из них создают в десктопе окна. Например, в модуле Dialogs в секции initialization используется RegisterWindowMessage и т.п.
Если бы можно было сделать такую последовательность инициализации (я имею в виду не последовательность в разделе uses, а реальную последовательность процедур):
инициализация SysUtils,
инициализация Windows, //окна не создаются
инициализация "мой код подключается к новому десктопу"
инициализация Dialogs //могут создаваться окна и хуки
инициализация Forms
...
Как бы так сделать?
Sun bittern (2004-08-10 16:16:00) [4]Initialization
Finalization
???
Sandman25 (2004-08-10 16:08:00) [5]Можно. Но это плохая идея. Можно поподробней?
TUser (2004-08-10 16:07:00) [6]А не поможет ли изменение порядка перечисления модулей в исходниках проекта? Если да - то код инициализации первого модуля пропиши свой код.