Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2009, 08:36   #1
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Вопрос TTImer без формы.

Доброго времени суток !

Нужен таймер , но в приложени без формы )

Как бы его создать ( что указать в timer1.Create(self); )
Код:
program p;
uses windows,ExtCtrls;
var
Msg: TMsg;
Timer1:TTimer;
Begin
timer1.Create(self);//на self ругается , а компонентов нету в проекте ... что указать и еси не трудно как должна выглядеть процедура ontimer в таком проекте?

//Дальше идет код, который заставит программу висеть в
//памяти вечно и не будет сильно загружать систему
while GetMessage(Msg, HInstance, 0, 0) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end.
Спасибо !
Lime вне форума Ответить с цитированием
Старый 29.09.2009, 08:48   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

а если используй функцию времени как событие 1 секунда...
dampirik вне форума Ответить с цитированием
Старый 29.09.2009, 09:26   #3
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

пользуйтесь поиском по форуму!

Код:
procedure Proc;
begin
  //Сдесь код который надо выполнять
end;

//Нажатие на кнопку

begin
  SetTimer(0,1,50,@Proc);
//0 хендл окна
//1 - хендл таймера
//50 - интервал таймера
//адресс процедуры @Proc
end;

//Уничтожить api - таймер
KillTimer(form1.Handle,1);
uberchel вне форума Ответить с цитированием
Старый 29.09.2009, 10:06   #4
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Вопрос

Код:
program Th;
uses windows,dialogs;
var
Msg: TMsg;

procedure proc1;
begin
messagebox(0,pchar('1'),pchar('2'),mb_ok);
end;

Begin
SetTimer(0,1,1000,@proc1);

//Дальше идет код, который заставит программу висеть в
//памяти вечно и не будет сильно загружать систему
while GetMessage(Msg, HInstance, 0, 0) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end.
- Как бы проверить тик таймера наглядным образом? так не получается .
Lime вне форума Ответить с цитированием
Старый 29.09.2009, 10:37   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как бы проверить тик таймера наглядным образом?
Тоесть? у тебя что proc1; не срабатывает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2009, 10:49   #6
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Печаль

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тоесть? у тебя что proc1; не срабатывает?
Именно , по идее должно вылетать сообщение а его не видно , хотя программа как и положено продолжает работать ...
Lime вне форума Ответить с цитированием
Старый 29.09.2009, 10:55   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
messagebox(GetForegroundWindow,pchar('1'),pchar('2'),mb_ok);
типичная ошибка...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2009, 11:08   #8
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Читайте MSDN.
Цитата:
SetTimer Function
The SetTimer function creates a timer with the specified time-out value.

Syntax

UINT_PTR SetTimer(
HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
Parameters

hWnd
[in] Handle to the window to be associated with the timer. This window must be owned by the calling thread. If a NULL value for hWnd is passed in along with an nIDEvent of an existing timer, that timer will be replaced in the same way that an existing non-NULL hWnd timer will be.
nIDEvent
[in] Specifies a nonzero timer identifier. If the hWnd parameter is NULL, and the nIDEvent does not match an existing timer then it is ignored and a new timer ID is generated. If the hWnd parameter is not NULL and the window specified by hWnd already has a timer with the value nIDEvent, then the existing timer is replaced by the new timer. When SetTimer replaces a timer, the timer is reset. Therefore, a message will be sent after the current time-out value elapses, but the previously set time-out value is ignored. If the call is not intended to replace an existing timer, nIDEvent should be 0 if the hWnd is NULL.
uElapse
[in] Specifies the time-out value, in milliseconds.
Windows NT/2000/XP: If uElapse is greater than USER_TIMER_MAXIMUM, the timeout is set to 1.

Windows 2000/XP: If uElapse is less than USER_TIMER_MINIMUM, the timeout is set to USER_TIMER_MINIMUM.

Windows Server 2003: If uElapse is greater than USER_TIMER_MAXIMUM, the timeout is set to USER_TIMER_MAXIMUM.

Windows XP SP2/Windows Server 2003 SP1: If uElapse is less than USER_TIMER_MINIMUM, the timeout is set to USER_TIMER_MINIMUM. If uElapse is greater than USER_TIMER_MAXIMUM, the timeout is set to USER_TIMER_MAXIMUM.

lpTimerFunc
[in] Pointer to the function to be notified when the time-out value elapses. For more information about the function, see TimerProc. If lpTimerFunc is NULL, the system posts a WM_TIMER message to the application queue. The hwnd member of the message's MSG structure contains the value of the hWnd parameter.
Цитата:
TimerProc Function
The TimerProc function is an application-defined callback function that processes WM_TIMER messages. The TIMERPROC type defines a pointer to this callback function. TimerProc is a placeholder for the application-defined function name.

Syntax

VOID CALLBACK TimerProc(
HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
);
Parameters

hwnd
[in] Handle to the window associated with the timer.
uMsg
[in] Specifies the WM_TIMER message.
idEvent
[in] Specifies the timer's identifier.
dwTime
[in] Specifies the number of milliseconds that have elapsed since the system was started. This is the value returned by the GetTickCount function.
Код:
procedure TimerProc(Handle:HWND;uMsg:DWORD;idEvent:DWORD;dwTime:DWORD);
begin
  //SameCode
end;
...
begin
  SetTimer(0, 0, 200, @TimerProc);
end;
Добавлено:
Пусть будет... ))) Этот пост расширит возможности автора в воплощении идей. )
Познавая других, мы познаем себя.
С'est la vie...

Последний раз редактировалось SuperVisor; 29.09.2009 в 11:13.
SuperVisor вне форума Ответить с цитированием
Старый 29.09.2009, 11:16   #9
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Радость

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
messagebox(GetForegroundWindow,pchar('1'),pchar('2'),mb_ok);
типичная ошибка...
Ну я так прикинул а чей хэндл указать? окна ведь нету ...
Просто попробовал привер выше , изначально думал создть TTimer и с ним работать ...

Спасибо , почитаю !

ЗЫ:Еслиб оно ещё работало быстрее , та-же справка в D2009 - а оно мой неслабый комп грузит нехило) Система справки как в MS C# да и VS наверно ... подтормаживает ( В D6 D7 быстрая справка была а тут прямо таки не тянет )

ЗЗЫ: Автор темы смотрел содержимое поста выше перед созданием темы ) - оно в справке было)

А ведь
Код:
messagebox(GetForegroundWindow,pchar('1'),pchar('2'),mb_ok);
- тоже без результатов
Обычно использую
Код:
showmessage('test');
-ещё проще ...

Последний раз редактировалось Lime; 29.09.2009 в 11:24.
Lime вне форума Ответить с цитированием
Старый 29.09.2009, 11:27   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
грузит нехило
Притормози его маненько:
Код:
while GetMessage(Msg, HInstance, 0, 0) do
begin
 TranslateMessage(msg);
 DispatchMessage(msg);
 sleep(10);
end;
end.
Цитата:
тоже без результатов
А че у меня все ок?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа без формы Чугусов Общие вопросы Delphi 3 14.02.2009 14:56
как подключить новый модуль без формы к проекту?? Yala Общие вопросы Delphi 1 04.05.2008 08:01
приложение без формы, событие при завершении ERASERROR Общие вопросы Delphi 10 22.02.2008 14:10
Программа без оболочки/формы/GUI aqwapaq Общие вопросы Delphi 5 12.02.2008 12:04
Приложение без формы Wiggle Общие вопросы Delphi 12 18.04.2007 20:20