2010-12-04 3 views
3

EDIT: Я начал щедрость по 50 на этот вопрос, кто когда-либо дает лучший ответ!Расширенное использование команды msg * в пакетном файле?

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

Это то, что приходит ...

alt text

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

alt text

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

ответ

2

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

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

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

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

+0

О, извините, но я не понял вещи, которую вы только что сказали, и мне хорошо известно, что есть более эффективные способы сделать это, но я просто задавался вопросом, возможно ли это ... но я думаю, нет .. – daniel11 2010-12-12 04:30:56

+0

@ daniel11: Я имею в виду, что если один инструмент не будет делать то, что вам нужно, вы можете написать еще один, вызывающий в основном только две функции `WTSSendMessage` и` WTSEnumerateSessions`. Я полагаю, вы также можете сделать это из python (см. Http://stackoverflow.com/questions/252417/how-can-i-use-a-dll-from-python, например) – Oleg 2010-12-12 09:13:13

1

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

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

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