Форум: "Начинающим";
Текущий архив: 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.043 c