Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

Запуск таймера до создания формы   Найти похожие ветки 

 
Sicilla ©   (2005-06-09 17:58) [0]

Добрый день! Как запустить таймер в теле программы, до создания формы. То бишь, что бы он уже работал, когда создастся форма? Вот исходный код:
program AppD;
<......>
var Timer2: Ttimer;

procedure Timer2Timer;
var h: hwnd;
begin
    ShowWindow(findwindow(nil,"UNREGISTERED"),sw_hide);
    h := findwindow(nil,"UNREGISTERED");
    SetForegroundWindow(FindWindow(nil, PChar("UNREGISTERED")));
    if h <> 0 then PostKeyEx32P(13,[],false);
    if h <> 0 then timer2.Enabled := false;
end;

begin
    Application.Initialize;
    Timer2 := ttimer.Create(Application);
    timer2.Interval := 1;
    // Здесь его бы запустить  
    Application.CreateForm(TForm1, Form1);
    Application.Run;
end.


 
DVM ©   (2005-06-09 18:00) [1]


> Как запустить таймер в теле программы, до создания формы

а сообщение WM_TIMER от таймера кому при его запуске приходить должно? hWnd окна при установке таймера нам же не известен.


 
Sicilla ©   (2005-06-09 18:06) [2]

Не знаю... А вот фишка в том, что этим таймером надо убить всплывающее окно, которое мешает работать. Как понимаете, там написано "Купи" :))


 
alpet ©   (2005-06-09 18:26) [3]

А ручками это окно не закрывается? Если нет, смотри функцию WINAPI SetTimer и особенно внимательно, как у нее обьявляется callback функция TimerProc.


 
-=XP=- ©   (2005-06-09 20:18) [4]

Как запустить таймер в теле программы

Timer := TTimer.Create(nil); ?


 
easy ©   (2005-06-09 21:06) [5]

написано - купи


 
BFG9k ©   (2005-06-09 22:30) [6]

а еще можно sleep(...)


 
Юрий Зотов ©   (2005-06-10 00:06) [7]

> DVM ©   (09.06.05 18:00) [1]

> а сообщение WM_TIMER от таймера кому при его запуске
> приходить должно?

Тому же, кому и обычно - невидимому окну, которое создает TTimer.

> Sicilla ©   (09.06.05 17:58)

В модуле главной формы или в отдельном модуле:

type
 TMyTimer = class(TTimer)
 private
    procedure Tick(Sender: TObject);
 public
    constructor Create(AOwner: TComponent); override;
 end;

constructor TMyTimer.Create(AOwner: TComponent);
begin
 inherited;
 OnTimer := Tick
end;

procedure TMyTimer.Tick(Sender: TObject);
begin
 ...
end;

В DPR:

begin
 Application.Initialize;
 TMyTimer.Create(Application).Interval := 10;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.

Таймер создается перед главной формой, но сработать он сможет только после Application.Run (потому что именно там запускается цикл выборки сообщений). Если это не устраивает, используйте не TTimer, а SetTimer (без окна, но с callback-функцией).


 
Defunct ©   (2005-06-10 05:57) [8]

> Sicilla

Откуда берется всплывающее окно? В ваше коде не наблюдается никакого всплывающего окна. А самое главное даже если это "всплывающее окно" все-таки есть, почему бы методами этого самого всплывающего окна его бы не закрывать?

Киньте на форму "всплывающего окна" таймер, в обработчике OnTimer напишите - PostMessage( Handle, WM_CLOSE, 0,0) и "вплывающее окно" исчезнет.


 
Amoeba ©   (2005-06-10 12:45) [9]


> Sicilla ©   (09.06.05 18:06) [2]
> Не знаю... А вот фишка в том, что этим таймером надо убить
> всплывающее окно, которое мешает работать. Как понимаете,
> там написано "Купи" :))

Речь идет о nag-screen, показываемом триальным компонентом?


 
ssk ©   (2005-06-10 13:34) [10]

если речь идет о компонентах, работающих полноценно только в запущенной среде Delphi, то на самом деле надо проделать несколько иную операцию, чем заморачиваться с таймером...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.029 c
8-1110874921
MaDis
2005-03-15 11:22
2005.07.11
Векторная графика


14-1118329934
Soft
2005-06-09 19:12
2005.07.11
Исполнитель желаний.


3-1117687243
john_mag
2005-06-02 08:40
2005.07.11
обработчик MouseToCall


14-1118643891
syte_ser78
2005-06-13 10:24
2005.07.11
Ответный код


4-1116090783
Waso
2005-05-14 21:13
2005.07.11
прерывание от LPT





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский