![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Время [D7, XP]
Steep © (2007-02-23 12:21:00)Как лучше всего сделать будильник?
т.е. я хочу на определенное время повесить событие
неужели просто в таймере каждую секунду сверять время?
Или есть лучшие способы Которые меньше жрут систему?
Например как-нить через системный таймер?
Steep (2007-02-23 13:34:00) [1]Видимо, как обычно: winamp.exe "гимн.mp3".
Только, пути надо прописывать полностью.
Спасибо конечно, но при вводе at мне пишет данная служба не запущена!
Leonid Troyanovsky (2007-02-23 13:31:00) [2]
> Steep © (23.02.07 13:15) [15]
> Так это через каую службу эта фича работает?
> У меня пишет служба не запущена..
net start Schedule
или
net start "Планировщик заданий"
--
Regards, LVT.
Leonid Troyanovsky (2007-02-23 13:26:00) [3]
> Steep © (23.02.07 13:12) [14]
> at не знал про сию команду :)
Это не команда. At.exe - консольный клиент Schedule.
> а cmd запускаем через
Т.е., cmd здесь и не нужен, пускай at.exe
> Но так я могу запустить только команду..
> т.е. можно запустить winamp с параметрами?
Видимо, как обычно: winamp.exe "гимн.mp3".
Только, пути надо прописывать полностью.
И кавычить их, на всякий случай.
--
Regards, LVT.
Steep (2007-02-23 13:15:00) [4]Так это через каую службу эта фича работает?
У меня пишет служба не запущена..
Хотя планировщик вроде работает
Steep (2007-02-23 13:12:00) [5]at не знал про сию команду :)
Спасибо!
а cmd запускаем через
ShellExecute(handle, nil, 'cmd.exe', {параметры}, nil, SW_SHOWNORMAL);
Но так я могу запустить только команду..
т.е. можно запустить winamp с параметрами?
Leonid Troyanovsky (2007-02-23 13:05:00) [6]
> Steep © (23.02.07 12:59) [11]
Запусти cmd.exe.
Введи строку at /?
Нажми Enter.
--
Regards, LVT.
Per aspera ad astra - через тернии - к звездам.
Лат. пословица.
tytus (2007-02-23 13:02:00) [7]>
Leonid Troyanovsky © (23.02.07 12:57) [10]
Через тернии к звёздам- Google.ru
Steep (2007-02-23 12:59:00) [8]> Steep © (23.02.07 12:21)
at 6:00 /interactive "Гимн.mp3"
> tytus © (23.02.07 12:39) [5]
Per aspera ad astra
????????????
Leonid Troyanovsky (2007-02-23 12:57:00) [9]
> tytus © (23.02.07 12:39) [5]
Per aspera ad astra
--
Regards, LVT.
Leonid Troyanovsky (2007-02-23 12:49:00) [10]
> Steep © (23.02.07 12:21)
at 6:00 /interactive "Гимн.mp3"
--
Regards, LVT.
tytus (2007-02-23 12:47:00) [11]if event=EVENT_OBJECT_NAMECHANGE then
можно EVENT_OBJECT_VALUECHANGE
tytus (2007-02-23 12:44:00) [12]PS
Насчет Которые меньше жрут системуточно не скажу, но наверное
если ограничить диапазон событий
EVENT_OBJECT_CREATE и EVENT_OBJECT_DESTROY (они рядом, посмотри Windows.pas) - то можно сказать что меньше.
Хотя я ставил EVENT_MIN и EVENT_MAX - все нормально.
Почитай на родном сайте MSDN там описани константы событий, даже те, которые не вошли в Windows.pas Delphi7.
Steep (2007-02-23 12:42:00) [13]tytus © Спасиб большое попробую!
tytus (2007-02-23 12:39:00) [14]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:38:00) [15]Timer1.Interval:=сколько надо - сколько сейчас
интересно...
А если комп вырубят и снова врубят
Просто пересчитывать таймер?
Steep (2007-02-23 12:34:00) [16]ну например я хотел сделать для себя простенький будильник.
т.е. в определенное время должен заорать mp3 фаил
tytus (2007-02-23 12:29:00) [17]Я делел так через системную ловушку SetWinEventHook.
Ненужно никаких dll, как в SetWindowHookEx...
Напиши конкретно, какое событие тебе надо., а я сейчас откопаю код...
Palladin (2007-02-23 12:27:00) [18]Timer1.Interval:=сколько надо - сколько сейчас