2016-11-07 7 views
0

У меня есть небольшой скрипт powershell, который позволяет мне быстро настроить будильник для себя. Он в основном просто ждет указанное количество минут, а затем звонитПочему «msg * alarm» исчезает через некоторое время?

msg * alarm!

Это хорошо работает - появляется окно с сообщением. Единственная проблема заключается в том, что она исчезает через некоторое время - поэтому, если я не нахожусь за своим столом, я пропущу окно с сообщениями.

Согласно документации, found here, это поведение, когда я не указываю значение времени.

/time: seconds: Указывает время, в течение которого отправленное сообщение отображается на экране пользователя. Как только достигнут срок, сообщение исчезнет. Если лимит времени не установлен, сообщение остается на экране пользователя, пока пользователь не увидит сообщение и не нажмет OK.

Однако это не так, и оно исчезает. Прямо сейчас, я должен указать для него достаточно большое число.

msg * /time:999999 alarm! 
+0

хорошо кто-то может объяснить, почему это плохой вопрос ? – Diskdrive

+0

Это не вопрос программирования/развития. Это вопрос о поведении системной утилиты Windows. –

+0

@Bill_Stewart - правда? вопросы о командах командной строки теперь недоступны для этого сайта? В этом есть тег для этого, и этот вопрос имеет более 300+ upvotes (http://stackoverflow.com/questions/8055371/how-to-run-two-commands-in-one-line-in-windows-cmd) – Diskdrive

ответ

2

трассировка вызова с cdb показывает следующие функции интереса при запуске msg.exe и передавая его максимальное значение тайм-аута 999999:

command: msg * /time:999999 alarm

Значение таймаута f423f(999999) пропускается в ShowMessageBox через регистр rax.

WINSTA!WinStationSendMessageW+0x353: 
000007fe`fbf1ec93 e874deffff  
call WINSTA!CSmartSession::ShowMessageBox (000007fe`fbf1cb0c) 
rax=00000000000f423f rbx=0000000000000000 rcx=0000000000000010 

Запуск msg.exe без какого-либо значения тайм-аута показывает 3c(60) передается функции ShowMessageBox.

command: msg * alarm

WINSTA!WinStationSendMessageW+0x353: 
000007fe`fbf1ec93 e874deffff  
call WINSTA!CSmartSession::ShowMessageBox (000007fe`fbf1cb0c) 
rax=000000000000003c rbx=0000000000000000 rcx=0000000000000010 

Я думаю, что документация не уточненный (если он вообще был)

+0

Hi Lieven - просто интересно, что это за команда cdb, которую вы используете для отслеживания? – Diskdrive

+0

Я использовал этот «cdb -c» .while (1) {tc; r} "msg.exe */time: 999999 alarm >> msgtrace.txt', и он выполнил эту работу, но я уверен, что он может быть оптимизирован во многих отношениях. Цикл while не должен быть необходимым, например, мне пришлось убить отладчика в конце из-за цикла while, ... –

 Смежные вопросы

  • Нет связанных вопросов^_^