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