Форум: "Основная";
Текущий архив: 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