Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284

Оповещение в определенное время

22.11.2012, 13:09. Показов 2770. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача сделать так чтоб при условии ( в заданное время):
C++
1
2
3
4
if ((hour%2==0) && (minute==40) && (second==0))
{
Beep(500,100);
}
выводилось сообщение с текстом "пора..." с кнопкой "ОК" и при этом еще включалось звуковое оповещение ( с помощью Beep) и играло до тех пор пока я не нажму ОК на сообщении. И при этом программа должна дальше работать, а то написал пару вариантов таких что система так загружается что кнопку ОК нажать тяжеловато и все виснет.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2012, 13:09
Ответы с готовыми решениями:

Вывести напоминание в определенное время
нужно вывести сообщение, как только наступит определенное время, выдает ошибку, как исправить

Действие через определенное время
Возник вопрос, как сделать что бы скажем через 1 секунду выполнялось определенное действие? Вот код, но приходится нажимать на кнопку, а...

Запуск некой функции в определенное время
Необходимо чтобы ежедневно в заданное время запускалась определенная функция. Подскажите как это сделать?

11
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
22.11.2012, 13:17
Берешь TTimer и скажем каждую секунду проверяешь свое условие, если совпало играешь бип через функцию-поток Вообщем как то так (код не проверял, но должно работать):
C++
1
2
3
4
5
6
7
8
9
10
11
12
DWORD CALLBACK ThreadF(void*Sender) /// Поток-функция
{   Beep(500,100);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject*Sender)
{   if ((hour%2==0) && (minute==40) && (second==0))
    {
        DWORD ThreadID=NULL; //Идентификатор потока
        HANDLE hThread=::CreateThread(0,0,ThreadF,0,0,&ThreadID); /// ThreadF(void*Sender)-сама функция
        CloseHandle(hThread); //Больше не нужен
    }
}
1
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
22.11.2012, 13:18
При срабатывании открываешь окно с кнопкой ОК.

C++
1
2
 Form9->Show();
 forms *Thr=new forms(false);
Запускается поток

в Потоке код:

C++
1
2
3
  while (Form9->Visible==true){
Beep(500,500);
}
На форме с кнопкой ок по нажатию кнопки делаешь:

C++
1
2
Form9->Visible=false;
Form9->Close();
1
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
22.11.2012, 13:35
Все таки через функцию-поток не получится, придется делать полноценный поток, чтобы его можно было закрыть по нажатию кнопки. А еще ваше условие комп может проскочить, если задумается в роковую секунду и не вызовет проверку. При этом нужно не создать второй поток для бипа.
0
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
22.11.2012, 13:39
Цитата Сообщение от gumi250 Посмотреть сообщение
придется делать полноценный поток
Ну я подразумевал создание полноценного Thread объекта.
Цитата Сообщение от gumi250 Посмотреть сообщение
если задумается в роковую секунду и не вызовет проверку.
Не совсем понял проблемы, проверка делается каждые 500мс или сколько там, после нажатие кнопки "Ок" свойство Visible станет false, даже если задумается и проскочит один раз - второй раз не проскочит. Свойство то не изменилось. Или я что-то не так понял?
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
22.11.2012, 13:51
Не совсем понял проблемы, проверка делается каждые 500мс или сколько там
Комп может подвиснуть на 1 сек. и в эту секунду вообще не делать проверок.
Я так понимаю вы предлагаете создавать поток при событи Form9->onShow
1
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
22.11.2012, 13:54
Цитата Сообщение от gumi250 Посмотреть сообщение
Form9->onShow
Его можно прямо тут:
C++
1
2
3
4
5
6
if ((hour%2==0) && (minute==40) && (second==0))
{
Form9->Show();
 forms *Thr=new forms(false);
 
}
0
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
22.11.2012, 13:56  [ТС]
Дела обстоят так... первый вариант, во так написал
C++
1
2
3
4
5
6
7
8
9
TDateTime CurrTime = Now();
unsigned short hour, minute, second, ms;
CurrTime.DecodeTime(&hour, &minute, &second, &ms);
if ((hour%2==0) && (minute==40) && (second==0))
{
DWORD ThreadID=NULL; //Идентификатор потока
HANDLE hThread=::CreateThread(0,0,ThreadF,0,0,&ThreadID); /// ThreadF(void*Sender)-сама функция
CloseHandle(hThread); //Больше не нужен
}
Остался только вопрос куда воткнуть сообщение и кнопку ок ? как ее сюда привязать ?

Второй вариант
Принцип понятен, но вот куда воткнуть
C++
1
2
3
while (Form9->Visible==true){
Beep(500,500);
}
? Попробовал пару тройку вариантов вообще все напрочь зависает, а и еще на
C++
1
forms *Thr=new forms(false);
ругается...
Я новенький, поэтому мне бы по точнее все писать... а то уже наверно с этим часа 3 сижу пока толку нет...
0
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
22.11.2012, 14:00
Цитата Сообщение от GrukhvinEV Посмотреть сообщение
Я новенький, поэтому мне бы по точнее все писать... а то уже наверно с этим часа 3 сижу пока толку нет..
В общем, в своем проекте кликаешь "New-Other-Thread Object", у тебя добавляется новый Unit%.cpp. И просят ввести имя. Можешь прям так и ввести: forms. Не забываей прописать инклуды. После чего в новосозданом потоке
C++
1
2
3
4
5
6
void __fastcall forms::Execute()
{
  while (Form9->Visible==true){
Beep(500,500);
}
}
1
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
22.11.2012, 14:33  [ТС]
Как все сложно.... у меня русский билдер, но я так понял надо создать новую форму, создал.Сделал на форме кнопку
C++
1
2
3
4
5
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Form2->Visible=false;
Form2->Close();
}
Сделал инклуд. Все нормально Form2 (Unit2.cpp) вызывается из Form1(Unit1.cpp);
Вот ето верно или нет :
C++
1
2
3
4
5
6
void __fastcall Form2::Execute()
{
  while (Form2->Visible==true){
Beep(500,500);
}
}
Или что такое forms ? Не пойму и как под мое имя переписать ?
C++
1
Form2 *Thr=new Form2(false);
.

Добавлено через 2 минуты
А помойму понял,
C++
1
forms *Thr=new forms(false);
это будет наш еще 1 файл Unit%.cpp, это будет что то типа второй отдельной программы ?
Если да, то у меня русская версия, как это называется, как мне найти нужное ?
0
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
22.11.2012, 14:37
Цитата Сообщение от GrukhvinEV Посмотреть сообщение
Если да, то у меня русская версия
Это плохо.

По идее там будет Файл-Новый-Другое-Thread объект

Там выскочит окно где надо будет ввести имя. Это штука называется поток. Почитай про потоки. Это основы основ
0
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
22.11.2012, 16:47  [ТС]
Спасибо. Разобрался, все настроил, работает. Про потоки почитаю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2012, 16:47
Помогаю со студенческими работами здесь

На определенное время показать пользователю окно
Добрый день! Имеется следующая проблема. В моем приложении всплывающие сообщения оформлены в виде не большой прямоугольной формы на которую...

Заливка круга цветом за определенное время по часовой стрелке
Здравствуйте уважаемые форумчане. Программированием занимаюсь давно, но как то так получилось, что раньше не приходилось сталкиваться с...

Зажечь второй ILLed через определенное время после зажигания первого
Здраствуйте!! Есть програмка (включения выключения лампушки с помощью TrackBar) : TForm1 *Form1; ...

Открыть и закрыть файл exe через определенное время
Извините за тупой вопрос. Мне нужно просто открыть экзешник и со временем,например 5 секунд,чтобы сам просто закрылся. То есть просто...

Написать кликер, осуществляющий n-ое количество кликов за определенное время
Всем привет! Нужна помощь... Не опытен в работе С++ Нужно задать координаты мыши допустим в 2 местах после чего программа сделает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru