Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Инициализация модулей   Найти похожие ветки 

 
Анатолий   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
1-1092090365
mouse_web
2004-08-10 02:26
2004.08.22
Заставка перед загрузкой программы


14-1091557132
AlexG
2004-08-03 22:18
2004.08.22
Для чего нужен маршалинг?


4-1089703480
alik-os
2004-07-13 11:24
2004.08.22
Remote Administator


3-1091013617
shulgin_dmitrii
2004-07-28 15:20
2004.08.22
FireBird+BLOB+Dynamic Array - не работает ...


14-1091624567
by
2004-08-04 17:02
2004.08.22
Методики разработки ПО