Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1091634622
SPE-Line
2004-08-04 19:50
2004.08.22
Иконки для программ


1-1091171279
BRemB
2004-07-30 11:07
2004.08.22
Главное меню приложения


14-1090834103
Vlad Oshin
2004-07-26 13:28
2004.08.22
Позвоните им..


1-1091506205
Eagle8
2004-08-03 08:10
2004.08.22
Popup в трее


14-1091585711
Думкин
2004-08-04 06:15
2004.08.22
С днем рождения! 4 августа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский