Как моделировать завершение работы Windows для отладки?

Не ясно, чего вы собираетесь достичь.

По крайней мере, Ваш код

{
   path: RouteSegment1.value1/RouteSegment2.value1,
   component: RouteSegment2Component,
},

должен быть записан как

{
    path: RouteSegment1.value1,
    component: RouteSegment1Component,
    children: [
      {
        path: RouteSegment2.value1,
        component: RouteSegment2Component
      }
    ]
  }
48
задан EricLaw 2 July 2013 в 16:50
поделиться

3 ответа

В инструментах тестирования логотипа Microsoft для Windows есть инструмент под названием Restart Manager (rmtool.exe), который можно использовать для отправки сообщений о выключении и перезапуске на процесс. Инструменты тестирования логотипов можно загрузить здесь:

http://download.microsoft.com/download/d/2/5/d2522ce4-a441-459d-8302-be8f3321823c/LogoToolsv1.0.msi

Тогда вы можете имитировать завершение работы вашего процесса:

rmtool.exe -p [PID] -S

где [PID] - это идентификатор процесса. Согласно документу «Сценарии сертификационных тестов Vista Logo»

сообщения о завершении работы Restart Manager:

a. WM_QUERYENDSESSION с LPARAM = ENDSESSION_CLOSEAPP (0x1): приложения GUI должны немедленно ответить (TRUE), чтобы подготовиться к перезапуску.

б. WM_ENDSESSION с LPARAM = ENDSESSION_CLOSEAPP (0x1): приложение должно завершиться в течение 5 секунд (20 секунд для служб).

с. CTRL_SHUTDOWN_EVENT: консольные приложения должны немедленно завершиться.

59
ответ дан 26 November 2019 в 18:58
поделиться

Я верю, когда Windows закрывается, он отправляет "WM_QueryEndSession" во все приложения. Для моделирования завершения работы Windows, Вы могли создать немного приложения, которое просто делает PostMessage с этим сообщением к Вашему приложению и видит то, что происходит. Windows может отправить больше сообщений, чем это для фактического закрытия приложения (как WM_CLOSE), но каждый раз, когда приложение получает сообщение "WM_QueryEndSession", это означает, что приложение собирается вытянуть коврик из-под него.

8
ответ дан Jon Tackabury 26 November 2019 в 18:58
поделиться

Вы могли использовать SystemEvents. Событие SessionEnding, которое запущено, когда пользователь выходит из системы или закрывается. Будьте осторожны при использовании его, хотя, некоторые ресурсы, как гарантируют, не будут доступны. Например, мое приложение должно было поразить сервер, когда оно закрывалось для отмечания время ухода с работы пользователя (приложение табельных часов), но сетевая плата иногда уже отключается, когда это событие имеет место. Так как Вы просто делаете очистку, это должно хорошо работать.

0
ответ дан jamesmillerio 26 November 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: