Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Power off/Stand by/ Hibernate 
:(
    Опции темы
devmstr
  Дата 4.5.2005, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Как установить время, через которое комп. уснет, выключится и т.д.
Желательно используя Power Schemes, так как висеть в памяти дополнительной программой не хотелось бы.
Помогите пожалуста. Проект горит..


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
AISIN
Дата 5.5.2005, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: 1
Всего: 1



magician Обычный таймер устанавливаешь.
Код
 
В ClasWizard в меню View
WM_INITDIALOG
BOOL ....::OnInitDialog(){
int i;
i=SetTimer(1,500,NULL);
if(i==0){
//ERRRor
}
return TRUE;
}
void ....::OnTimer(UINT nIDEvent(){
PostMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,2L);
//не забудь убить таймер ато будет запускаться эта функция каждые 500 //милисек кажется KillerTimer() как то так!!!
}

Вроде ничего не перепутал
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
devmstr
Дата 5.5.2005, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



AISIN
Спасибо, конечно но тут такая проблема. Вообщем все таки хотелось бы используя средства Windows, в смысле чтобы самому в памяти не висеть.
Вообщем мне нужно выключить(stand by, hibernate) комп, после некоторого промежутка времени, во время которого пользователь за компом не работал.
В принципе все хорошо, это использование hook, вообщем проблем нет, Но!
Данная программа должна работать и тогда, когда пользователь не залогинен - сервис.
Вообщем можно конечно и так, но что-то мне подсказывает, что есть более простой способ, с использованием самой Windows.


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
AISIN
Дата 5.5.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: 1
Всего: 1



magician
Если надо будет включить монитор то исправишь на 1L
Cмотри какoй интересный листинг нашел.
Код


// The caption of our message box
TCHAR g_szCaption[] = TEXT("Timed Message Box");


// How many seconds we'll display the message box
int g_nSecLeft = 0;


// This is STATIC window control ID for a message box
#define ID_MSGBOX_STATIC_TEXT    0x0000ffff


//////////////////////////////////////////////////////////////////////////////


VOID WINAPI MsgBoxTimeout(PVOID pvContext, BOOLEAN fTimeout) {

   // NOTE: Due to a thread race condition, it is possible (but very unlikely)
   // that the message box will not be created when we get here.
   HWND hwnd = FindWindow(NULL, g_szCaption);

   if (hwnd != NULL) {
      // The window does exist; update the time remaining.
      TCHAR sz[100];
      wsprintf(sz, TEXT("You have %d seconds to respond"), g_nSecLeft--);
      SetDlgItemText(hwnd, ID_MSGBOX_STATIC_TEXT, sz);

      if (g_nSecLeft == 0) {
         // The time is up; force the message box to exit.
         EndDialog(hwnd, IDOK);
      }
   } else {

      // The window does not exist yet; do nothing this time.
      // We'll try again in another second.
   }
}


//////////////////////////////////////////////////////////////////////////////


int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {

   chWindows9xNotAllowed();

   // How many seconds we'll give the user to respond
   g_nSecLeft = 10;

   // Create a multishot 1 second timer that begins firing after 1 second.
   HANDLE hTimerQTimer;
   CreateTimerQueueTimer(&hTimerQTimer, NULL, MsgBoxTimeout, NULL, 
      1000, 1000, 0);

   // Display the message box
   MessageBox(NULL, TEXT("You have 10 seconds to respond"), 
      g_szCaption, MB_OK);

   // Cancel the timer & delete the timer queue
   DeleteTimerQueueTimer(NULL, hTimerQTimer, NULL);

   // Let us know if the user responded or if we timed-out.
   MessageBox(NULL, 
      (g_nSecLeft == 0) ? TEXT("Timeout") : TEXT("User responded"), 
         TEXT("Result"), MB_OK);

   return(0);
}


//////////////////////////////// End of File /////////////////////////////////




Это сообщение отредактировал(а) AISIN - 5.5.2005, 15:19
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
devmstr
Дата 7.5.2005, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



AISIN
Спасибо, интерстный код, хотя к сожалению он моей проблемы, тем путем, которым хотелось бы не решает...


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
DeHunter
Дата 8.5.2005, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.11.2004

Репутация: нет
Всего: нет



Можно попробывать запустить shutdown.exe с ключом.
Или с помошью CreateRemoteThread сделать инжект кода в експлорер. Код будет ждать определённое время потом делать ExitWindowsEx
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0737 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.