Форум программистов, компьютерный форум CyberForum.ru

Будильник - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
Wanee
52 / 52 / 13
Регистрация: 02.02.2011
Сообщений: 428
26.07.2011, 10:16     Будильник #1
Начал делать примитивный будильник и столкнулся с проблемой. Когда комп отправляешь в сон, то будильник не срабатывает. Как сделать чтобы будильник сначала разбудил комп, а потом подал признаки жизни?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <Windows.h>
#include <iostream>
#include <stdlib.h>
#include <conio.h>
using namespace std;
 
void gotoxy(int xpos, int ypos)
{
    COORD scrn;
    HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
    scrn.X = xpos; scrn.Y = ypos;
    SetConsoleCursorPosition(hOuput,scrn);
}
void prin(int x)
{
    if(x < 10)
        cout << '0';
    cout << x;
}
 
void main()
{   
    int c, m, a, b, f, t;
    bool z = true;
    char x[2], y[2], s[6];
 
    SYSTEMTIME st;
    setlocale(LC_ALL, "");
 
    cout << "Введите время: ";
    cin >> s;
 
    x[0] = s[0];
    x[1] = s[1];
    y[0] = s[3];
    y[1] = s[4];
 
    c = atoi(x);
    m = atoi(y);
 
    cout << "Текущие время: \nОсталось: ";
 
    while(z)
    {
        GetSystemTime(&st);
        a = st.wHour + 7;
        b = st.wMinute;
 
        f = c + 24 - a;
        t = m - b;
        if(t < 0)
        {
            f--;
            t += 60;
        }
        if(f > 23)
            f -= 24;
 
        gotoxy(15, 1);
        prin(a);
        cout << ':';
        prin(b);
 
        gotoxy(10, 2);
        prin(f);
        cout << ':';
        prin(t);
 
        if(c == a && m == b)
            z = false;
        Sleep(1000);
    }
 
    cout << "\n\nДля завершения нажмите Enter...";
 
    while(!kbhit())
    {
        cout << '\a';
        Sleep(1000);
    }
}
Время я забиваю к примеру: 23:34
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2011, 10:16     Будильник
Посмотрите здесь:

C++ Будильник
C++ Будильник.
Будильник Delphi
Будильник Delphi
Будильник Java SE
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
26.07.2011, 10:51     Будильник #2
Я думаю систему можно разбудить послав сообщение типа WM_MOUSEMOVE (CLICK и т.д.)в систему или же програмно перегрузить комп, думаю это даже проще реализовать + если он стоял сспящим часов 8 перезагрузка в любом случае не помешает
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
26.07.2011, 11:20     Будильник #3
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
перегрузить комп
Это лишнее будет. Нужно будет дополнительно реализовывать запоминание параметров будильника, автозапуск.
-=ЮрА=-
Заблокирован
Автор FAQ
26.07.2011, 11:31     Будильник #4
Параметры будильника можно заносить в отдельный файл, а при желании можно изголиться и произвести самозапись экзешника, помню пару месяцев назад писал в топике как модифицировать счётчик в самом экзешнике
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
26.07.2011, 11:34     Будильник #5
-=ЮрА=-, можно сделать и не такое. Но сказано же
Цитата Сообщение от Wanee Посмотреть сообщение
примитивный будильник
Wanee
52 / 52 / 13
Регистрация: 02.02.2011
Сообщений: 428
26.07.2011, 11:40  [ТС]     Будильник #6
-=ЮрА=-, что то я не совсем понял что нужно сделать. Вы хотите искусственно нажать клавишу, чтобы пробудить копм?
-=ЮрА=-
Заблокирован
Автор FAQ
26.07.2011, 11:41     Будильник #7
Тогда нужно генерировать события которые будят комп - нажатие клавиатуры, мышь и т.д., по другому простыми способами думаю не реализвать...
Wanee
52 / 52 / 13
Регистрация: 02.02.2011
Сообщений: 428
26.07.2011, 11:44  [ТС]     Будильник #8
Ясно. А как допустим программно нажать клавишу Enter?
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.07.2011, 11:44     Будильник #9
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Тогда нужно генерировать события которые будят комп - нажатие клавиатуры, мышь и т.д.
Только эти события не сгенерируются, потому что комп спит
-=ЮрА=-
Заблокирован
Автор FAQ
26.07.2011, 11:49     Будильник #10
А с эксплорером работать нельзя?Например отловить хэндл рабочего стола и в это окошко сообщение кинуть???
Wanee
52 / 52 / 13
Регистрация: 02.02.2011
Сообщений: 428
26.07.2011, 11:50  [ТС]     Будильник #11
Тогда как?
jonson
 Аватар для jonson
231 / 204 / 61
Регистрация: 18.03.2010
Сообщений: 749
26.07.2011, 11:51     Будильник #12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Я думаю систему можно разбудить послав сообщение
при спящем режиме сее не получится. Т.к в этом состоянии не может работать ни один процесс. Это своего рода выключеный режим. Просто все данные из оперативной памяти выгружаются на винт, для последующего быстрого включения.
Как сделать чтобы будильник сначала разбудил комп
думаю ни как. Тут над смотреть в сторону биоса, что-то типа PowerManagment, и вручную настраивать. Может на низком уровне и возможно манипулировать этими опциями биоса, но лично я в этом оч сомневаюсь.
-=ЮрА=-
Заблокирован
Автор FAQ
26.07.2011, 11:54     Будильник #13
Я бы попробовал вот так(для работы нужен windows.h
C++
1
2
HWND hWnd = GetDesktopWindow();
    SendMessage(hWnd,WM_MOUSEMOVE,0,0);
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
26.07.2011, 11:54     Будильник #14
Цитата Сообщение от jonson Посмотреть сообщение
Просто все данные из оперативной памяти выгружаются на винт
А не про гибернацию вы случаем говорите?
jonson
 Аватар для jonson
231 / 204 / 61
Регистрация: 18.03.2010
Сообщений: 749
26.07.2011, 11:56     Будильник #15
Цитата Сообщение от ITZver Посмотреть сообщение
А не про гибернацию вы случаем говорите?
она самая
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
26.07.2011, 11:58     Будильник #16
Цитата Сообщение от jonson Посмотреть сообщение
она самая
Ну тык, гибернация и сон это разные вещи
Wanee
52 / 52 / 13
Регистрация: 02.02.2011
Сообщений: 428
26.07.2011, 12:00  [ТС]     Будильник #17
Не не, мне нужно из сна вывести.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.07.2011, 12:00     Будильник #18
Цитата Сообщение от ITZver Посмотреть сообщение
Ну тык, гибернация и сон это разные вещи
Да вы что? И в чем же разница?
Или вы тоже путаете спящий режим с ждущим?
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
26.07.2011, 12:06     Будильник #19
Прошу прощения, попутал. До сих пор думал что ждущий режим это когда монитор отключается и компьютер просто уходит в режим меньшего энергопотребления
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2011, 12:08     Будильник
Еще ссылки по теме:

Turbo Pascal Будильник
Будильник Bada C++
C++ Нужна программа Музыкальный будильник!

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
26.07.2011, 12:08     Будильник #20
Вы пишете о биосе и о спящем режиме, хм а что же тогда обрабатывает события щелчка мыши, её движения, кликов по клаве, неужели биос а не ОС???
Yandex
Объявления
26.07.2011, 12:08     Будильник
Ответ Создать тему
Опции темы

Текущее время: 06:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru