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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
3-1116933870
alex_***
2005-05-24 15:24
2005.07.11
MS SQL server


1-1118396545
Ega23
2005-06-10 13:42
2005.07.11
Реализация TDataLink у Борланда: непонятки


1-1119514732
Lera
2005-06-23 12:18
2005.07.11
Хинты.


11-1102605753
stranger_2004
2004-12-09 18:22
2005.07.11
Наследование в МСК


11-1101977494
mdw
2004-12-02 11:51
2005.07.11
Обновление TKOLmdvXLGrid и TKOLmdvDBF