Russian Qt Forum
Ноябрь 25, 2024, 09:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Системное время.  (Прочитано 3159 раз)
Jeka
Гость
« : Август 23, 2013, 16:32 »

Добрый день! Необходимо иметь возможность изменения системного времени Windows 7. Делаю это следующим образом:
В из основной программы запускаю другую маленькую программульку состоящую из окошка и кнопки, по кнопке выполняется функция:
Код:
void MainWindow::set_time()
{
    SYSTEMTIME * my_time = new SYSTEMTIME;
    my_time->wDay = 19;
    my_time->wMonth = 8;
    my_time->wYear = 2013;
    my_time->wHour = 18;
    my_time->wMinute = 30;
    my_time->wSecond = 0;
    if (SetSystemTime(my_time))
    {
        MessageBoxA(NULL,"Set OK","Time", MB_OK);
    }
    else
    {
        MessageBoxA(NULL,"Set FALSE","Time", MB_OK);
    }
    delete my_time;
}

Все работает, все ок, но хочу что то простое без гуя и кнопки в один файл - вроде этого:

Код:

#include <windows.h>
using namespace std;

int main(int argc, char *argv[])
{       
    SYSTEMTIME * my_time = new SYSTEMTIME;
    my_time->wDay = 19;
    my_time->wMonth = 8;
    my_time->wYear = 2013;
    my_time->wHour = 18;
    my_time->wMinute = 30;
    my_time->wSecond = 0;
    if (SetSystemTime(my_time))
    {
        MessageBoxA(NULL,"Set OK","Time", MB_OK);
    }
    else
    {
         // Выводим окошко с ошибкой
        void *cstr;
        FormatMessageW(
                    FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
                    NULL,
                    GetLastError(),
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    (LPTSTR) &cstr,
                    0,
                    NULL
                    );
        MessageBoxW(NULL,(wchar_t*)cstr,L"Time", MB_OK);
        LocalFree(cstr);

        // Просто месседж бокс
        MessageBoxA(NULL,"Set FALSE","Time", MB_OK);
    }
    delete my_time;

    return 0;
}

но эта программа не работает и ничего не изменяет, выдает ошибку "Параметр задан неверно", подскажите почему?



Записан
neversleep
Гость
« Ответ #1 : Август 23, 2013, 16:43 »

Там еще есть поле wMilliseconds.
Записан
Jeka
Гость
« Ответ #2 : Август 23, 2013, 16:52 »

Там еще есть поле wMilliseconds.

Помогло!!! Спасибо!
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #3 : Август 25, 2013, 00:30 »

а под linux случайне не в курсе как решить эту задачу не из-под root пользователя?)
Записан
Fat-Zer
Гость
« Ответ #4 : Август 25, 2013, 01:43 »

а под linux случайне не в курсе как решить эту задачу не из-под root пользователя?)
также как и в винде — ни как... нужно авторизоваться...
можно ещё написать setuid'ный хелпер или демон, запускаемый от root'а, но это уже костыли и потенциальная дыра...
« Последнее редактирование: Август 25, 2013, 01:47 от Fat-Zer » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.061 секунд. Запросов: 23.