Расширенное использование команды msg * в командном файле? - PullRequest
3 голосов
/ 05 декабря 2010

РЕДАКТИРОВАТЬ: я начал щедрость 50 на этот вопрос, кто когда-либо дает лучший ответ!

Привет, мне было интересно, есть ли способ, чтобы пакетный файл отображал всплывающее окно, используя команду msg * "hi" вместе с другими вариантами выбора, кроме тех, которые есть по умолчанию (отмена и нормально), я имею в виду добавьте пользовательские кнопки во всплывающее сообщение, например кнопку «Далее», которая приведет вас к другому всплывающему сообщению с диалоговым окном или чем-то в этом роде. Итак, есть ли способ отредактировать результаты команды msg * "text goes here"?

Вот что получается ...

alt text

И это то, чего я хочу:

alt text

Однако я также хотел бы знать, возможно ли изменить заголовок всплывающего сообщения и его размер или положение. Я знаю, что это начинает звучать как всплывающее окно на основе графического интерфейса в пакетном файле, но мне просто интересно, возможно ли это каким-либо образом необходимым (имейте в виду, что я хочу использовать только пакет / оболочку). Любая информация или идеи действительно помогут! Спасибо!

Ответы [ 2 ]

2 голосов
/ 12 декабря 2010

Извините, но невозможно изменить всплывающее окно, отображаемое пакетной командой "msg".

Что сказал Олег, так это то, что если вы хотите создать собственное всплывающее окно, вы не можете сделать это с окнамикоманда "msg"Нет другого способа, кроме как создать собственную команду "msg", которая открывает настраиваемое всплывающее окно (и есть много способов сделать это, объяснил Олег).

2 голосов
/ 12 декабря 2010

Прежде всего, я не знаю некоторых дополнительных недокументированных переключателей msg.exe, которые вы можете использовать для создания сообщения в той форме, которую вы хотите. Поскольку вы спросили о любой информации или идеях , я решил написать свой ответ.

Как вы можете видеть в отношении Dependency Walker Программа msg.exe использует внутренние функции WinStationSendMessageW, WinStationEnumerateW, WinStationQueryInformationW, WinStationOpenServerW, WinStationFreeMemory из winsta.dll , Функция WinStationQueryInformationW задокументирована, все остальные функции - нет. Тем не менее, можно быть относительно уверенным, что функции идентичны документированной функции RpcWinStationSendMessage и другим функциям RpcWinStationXXX, документированным в Terminal Services Terminal Server Interface . Лично я не вижу необходимости использовать недокументированные функции, потому что другие документированные функции WTSSendMessage , WTSEnumerateSessions (см. API служб удаленных рабочих столов ) могут делать то же самое.

Обе функции WTSSendMessage и RpcWinStationSendMessage имеют параметры pTitle, Style (например, MB_YESNOCANCEL ) и pResponse (которые может быть вам тоже интересно). Поэтому я предлагаю вам или одному из ваших колледжей просто написать небольшую утилиту, которая вам нужна . В реализации можно использовать документированные функции WTSSendMessage и WTSEnumerateSessions .

Если вы зададите вопрос о serverfault.com или superuser.com , возможно, кто-то порекомендует вам существующую утилиту, которую вы можете использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...