Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Листинги / Листинги / 29-03-CreateWaitableTimer

.cpp
Скачиваний:
5
Добавлен:
24.03.2016
Размер:
1.79 Кб
Скачать
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include <iostream.h>

#define _SECOND 10000000   // одна секунда для ожидающего таймера

int main()
{
  HANDLE  hTimer;          // ожидающий таймер

  _int64  qwTimeInterval;  // время задержки для таймера

  // создаем ожидающий таймер
  hTimer = CreateWaitableTimer(NULL, FALSE, "demo_timer");
  if (hTimer == NULL)
    return GetLastError();

  // время задержки для таймера = 2 секунды
  qwTimeInterval = -2 * _SECOND;

  // инициализируем таймер
  if (!SetWaitableTimer(
    hTimer,  // дескриптор таймера
    (LARGE_INTEGER*)&qwTimeInterval,  // временной интервал
    0,       // не периодический таймер
    NULL,    // процедуры завершения нет
    NULL,    // параметров к этой процедуре нет
    FALSE    // режим сбережения энергии не устанавливать
    ))
  {
    cout << "Set waitable timer failed." << endl
      << "The last error code: " << GetLastError() << endl;

    return 0;
  }

  // создаем новый консольный процесс
  char lpszAppName[] = "C:\\DemoProcess.exe";

  STARTUPINFO si;
  PROCESS_INFORMATION piApp;

  ZeroMemory(&si, sizeof(STARTUPINFO));
  si.cb = sizeof(STARTUPINFO);

  if (!CreateProcess(lpszAppName, NULL, NULL, NULL, FALSE,
      CREATE_NEW_CONSOLE, NULL, NULL, &si, &piApp))
  {
    cout << "The new process is not created." << endl
      << "Check a name of the process." << endl
      << "Press any key to finish." << endl;

    cin.get();

    return 0;
  }

  // ждем завершения созданного процесса
  WaitForSingleObject(piApp.hProcess, INFINITE);
  // закрываем дескрипторы этого процесса в текущем процессе
  CloseHandle(piApp.hThread);
  CloseHandle(piApp.hProcess);

  // закрываем таймер
  CloseHandle(hTimer);

  return 0;
}
Соседние файлы в папке Листинги