//.... SYSTEMTIME New_ST; GetSystemTime(&New_ST); printf("%02d \n", New_ST.wHour); //посмотрим, каким было системное время
New_ST.wHour = 10; //изменим часы SetSystemTime(&New_ST);
GetSystemTime(&New_ST); //посмотрим результат printf("%02d", New_ST.wHour); getch(); //....
Скажи пожалуйста, правильно ли я использую функцию? меня смущают получаемые результаты: например реальное время 18:... результаты работы: до - 14, после 12...
Автор: volvo 13.09.2008 22:56
Цитата
меня смущают получаемые результаты: например реальное время 18:... результаты работы: до - 14, после 12...
GetSystemTime возвращает время UTC, так что совсем не проблема, что это не будет совпадать с твоим, локальным временем. А вот то, что после SetSystemTime у тебя не возвращается то же время, которое установлено только что - это уже хуже... И после SetSystemTime и после GetSysTime получи коды ошибки (GetLastError), и убедись что ошибок не было (я надеюсь, привилегия SE_SYSTEMTIME_NAME доступна под твоей учетной записью?)...
Автор: 18192123 14.09.2008 0:49
Цитата(volvo @ 13.09.2008 19:56)
И после SetSystemTime и после GetSysTime получи коды ошибки (GetLastError), и убедись что ошибок не было...
SYSTEMTIME New_ST; GetSystemTime(&New_ST); printf("%02d \n", New_ST.wHour); //посмотрим, каким было системное время printf("(%d)\n", GetLastError());
New_ST.wHour = 10; //изменим часы SetSystemTime(&New_ST); printf("(%d)\n", GetLastError());
GetSystemTime(&New_ST); //посмотрим результат printf("%02d", New_ST.wHour); printf("(%d)\n", GetLastError());
В каждом из случаев вызова GetLastError() - код ошибки 2....
Автор: volvo 14.09.2008 2:07
Цитата
В каждом из случаев вызова GetLastError() - код ошибки 2....
При чем здесь ошибка №2? Это ж "ERROR_FILE_NOT_FOUND: The system cannot find the file specified." Какой именно файл не найден, спрашивается? Кстати, в первом случае у тебя GetLastError() вызывается для операции printf, а не для GetSystemTime. Нужно вызывать получение кода ошибки сразу после проверяемой операции.
Пока думается только о том, что у тебя вызывается не глобальная Get/SetSystemTime, а одноименная функция из какого-нибудь namespace... Попробуй:
Пока думается только о том, что у тебя вызывается не глобальная Get/SetSystemTime, а одноименная функция из какого-нибудь namespace... Попробуй:
результаты первого(новый параметр 14) и второго запуска (19) запуска на картиночке...
и получается, что 2-й раз изменения не происходят...
ээ...а насчёт привилегий я не знаю...как можно проверить??
Эскизы прикрепленных изображений
Автор: volvo 14.09.2008 23:40
Цитата
а насчёт привилегий я не знаю...как можно проверить??
"Пуск" -> "Выполнить" -> cmd -> whoami /PRIV
(проверял под Windows XP SP3, в SP2 этого может еще не быть). А вообще, если ты работаешь под админским аккаунтом, то привилегии все у тебя есть, если под ограниченным пользовательским - тогда имеет смысл проверить...
Автор: 18192123 14.09.2008 23:45
Цитата(volvo @ 14.09.2008 20:40)
если ты работаешь под админским аккаунтом
именно под ним..
Автор: 18192123 19.09.2008 21:54
То же самое задание попыталась реализовать в С++ Builder6 В Edit1 вводится системное время, которое нужно установить...
SYSTEMTIME New_ST; char msgbuf[4096]; New_ST.wHour = StrToInt(Edit1->Text); //изменим часы ::SetSystemTime(&New_ST); //контроль ошибок FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), msgbuf, sizeof(msgbuf), NULL ); Edit2->Text=msgbuf; // выдаёт ошибку "Параметр задан неверно" и соответственно никаких изменений времени не //происходит
В чём может быть причина??
Автор: volvo 20.09.2008 15:03
Цитата
В чём может быть причина??
В том, что остальные поля (кроме wHour) содержат некорректные значения (ты ж их не инициализируешь никак). Если тебе надо изменить показания часов, надо сначала из прочитать, правда?