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

Вниз

Время   Найти похожие ветки 

 
Steep ©   (2007-02-23 12:21) [0]

Как лучше всего сделать будильник?
т.е. я хочу на определенное время повесить событие
неужели просто в таймере каждую секунду сверять время?
Или есть лучшие способы Которые меньше жрут систему?
Например как-нить через системный таймер?


 
Palladin ©   (2007-02-23 12:27) [1]

Timer1.Interval:=сколько надо - сколько сейчас


 
tytus ©   (2007-02-23 12:29) [2]

Я делел так через системную ловушку SetWinEventHook.
Ненужно никаких dll, как в SetWindowHookEx...
Напиши конкретно, какое событие тебе надо., а я сейчас откопаю код...


 
Steep ©   (2007-02-23 12:34) [3]

ну например я хотел сделать для себя простенький будильник.
т.е. в определенное время должен заорать mp3 фаил


 
Steep ©   (2007-02-23 12:38) [4]

Timer1.Interval:=сколько надо - сколько сейчас

интересно...
А если комп вырубят и снова врубят
Просто пересчитывать таймер?


 
tytus ©   (2007-02-23 12:39) [5]

private
HookID:integer;

implementation

function SetShellHook(Activate:BOOL):BOOL;stdcall;export;
begin
Result:=false;
if Activate then
begin
 MainFm.HookID:=SetWinEventHook(EVENT_OBJECT_CREATE,EVENT_OBJECT_VALUECHANGE,
 0,@ShellProc,0,0,WINEVENT_OUTOFCONTEXT or WINEVENT_SKIPOWNTHREAD);
 Result:=(MainFm.HookID<>0);
end else begin
 if MainFm.HookID<>0 then Result:=UnhookWinEvent(MainFm.HookID);
 end;
end;

function ShellProc(hWinEventHook:integer;event:DWORD;hwnd:HWND;idObject:ULONG;
 idChild:ULONG;dwEventThread:DWORD;dwmsEventTime:DWORD):boolean;stdcall;
var
 WndName,WndClass:string;
 buf:PChar;
begin
if (not(idObject=$FFFFFFF7))and(not(MainFm.OnStart))then
begin
 if event=EVENT_OBJECT_NAMECHANGE then
 begin
   GetMem(buf,255);
   FillCHar(buf^,255,0);
   if GetClassName(hwnd,buf,255)>0 then WndClass:=StrPas(buf)
     else
       WndClass:="*****";
   if GetWindowText(hwnd,buf,255)>0 then WndName:=StrPas(buf)
     else
       WndName:="*****";
   FreeMem(buf);
   if (WndClass="TrayClockWClass")and(WndName=MainFm.TimeStart) then
   begin
..пишешь что тебе нужно
   end;
 end;
end;
Result:=true;
end;

MainFm.TimeStart - время которое тебе нужно. Если до 10 часов - то пиши 9:59.

FormCreate
SetShellHook(true);

FormDestoy
SetShellHook(false);


 
Steep ©   (2007-02-23 12:42) [6]

tytus ©  Спасиб большое попробую!


 
tytus ©   (2007-02-23 12:44) [7]

PS
Насчет Которые меньше жрут систему точно не скажу, но наверное
если ограничить диапазон событий
EVENT_OBJECT_CREATE и EVENT_OBJECT_DESTROY (они рядом, посмотри Windows.pas) - то можно сказать что меньше.
Хотя я ставил EVENT_MIN и EVENT_MAX - все нормально.
Почитай на родном сайте MSDN там описани константы событий, даже те, которые не вошли в Windows.pas Delphi7.


 
tytus ©   (2007-02-23 12:47) [8]

if event=EVENT_OBJECT_NAMECHANGE then
можно EVENT_OBJECT_VALUECHANGE


 
Leonid Troyanovsky ©   (2007-02-23 12:49) [9]


> Steep ©   (23.02.07 12:21)  


at 6:00 /interactive "Гимн.mp3"

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-02-23 12:57) [10]


> tytus ©   (23.02.07 12:39) [5]

Per aspera ad astra

--
Regards, LVT.


 
Steep ©   (2007-02-23 12:59) [11]

> Steep ©   (23.02.07 12:21)  
at 6:00 /interactive "Гимн.mp3"

> tytus ©   (23.02.07 12:39) [5]
Per aspera ad astra

????????????


 
tytus ©   (2007-02-23 13:02) [12]

>
Leonid Troyanovsky ©   (23.02.07 12:57) [10]
Через тернии к звёздам - Google.ru


 
Leonid Troyanovsky ©   (2007-02-23 13:05) [13]


> Steep ©   (23.02.07 12:59) [11]

Запусти cmd.exe.
Введи строку at /?
Нажми Enter.

--
Regards, LVT.

Per aspera ad astra - через тернии  - к звездам.
Лат. пословица.


 
Steep ©   (2007-02-23 13:12) [14]

at не знал про сию команду :)
Спасибо!

а cmd запускаем через
ShellExecute(handle, nil, "cmd.exe", {параметры}, nil, SW_SHOWNORMAL);

Но так я могу запустить только команду..
т.е. можно запустить winamp с параметрами?


 
Steep ©   (2007-02-23 13:15) [15]

Так это через каую службу эта фича работает?
У меня пишет служба не запущена..
Хотя планировщик вроде работает


 
Leonid Troyanovsky ©   (2007-02-23 13:26) [16]


> Steep ©   (23.02.07 13:12) [14]

> at не знал про сию команду :)

Это не команда. At.exe - консольный клиент Schedule.

> а cmd запускаем через

Т.е., cmd здесь и не нужен, пускай at.exe

> Но так я могу запустить только команду..
> т.е. можно запустить winamp с параметрами?

Видимо, как обычно: winamp.exe "гимн.mp3".
Только, пути надо прописывать полностью.
И кавычить их, на всякий случай.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-02-23 13:31) [17]


> Steep ©   (23.02.07 13:15) [15]
> Так это через каую службу эта фича работает?
> У меня пишет служба не запущена..


net start Schedule
или
net start "Планировщик заданий"

--
Regards, LVT.


 
Steep ©   (2007-02-23 13:34) [18]

Видимо, как обычно: winamp.exe "гимн.mp3".
Только, пути надо прописывать полностью.

Спасибо конечно, но при вводе at мне пишет данная служба не запущена!



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

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

Наверх





Память: 0.48 MB
Время: 0.04 c
15-1172066499
Двоишник
2007-02-21 17:01
2007.03.18
Assembler - программирование циклических процессов


11-1150927801
[e]Bu$ter
2006-06-22 02:10
2007.03.18
ComboBox: странно выглядит при использовании mainfest a


2-1172170402
Torin2
2007-02-22 21:53
2007.03.18
недоступно меню


3-1166435221
mezozoy
2006-12-18 12:47
2007.03.18
структура базы данных


2-1172663875
tan
2007-02-28 14:57
2007.03.18
Работа с OpenOffice.





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