Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 239
от 12.05.2006, 07:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 315, Экспертов: 29
В номере:Вопросов: 1, Ответов: 5


Вопрос № 42338: Здравствуйте, меня интересуют два вопроса: 1. Какое сообщение надо послать, чтобы отключить компьютер(не просто выйти из ОС, а чтобы и компьютер выключился); 2.1 Как запустить в Windows приложение с параметрами? Мне надо, чтобы мое приложение...

Вопрос № 42.338
Здравствуйте, меня интересуют два вопроса:
1. Какое сообщение надо послать, чтобы отключить компьютер(не просто выйти из ОС, а чтобы и компьютер выключился);
2.1 Как запустить в Windows приложение с параметрами? Мне надо, чтобы мое приложение знало, какие параметры ему передаются и соответственным образом работало.
2.2 Как запустить командную строку в Винде, впечатать туда команду и заставить выполнить напечатанную команду?
Большой респект,
Сафаргалиев Тимур.
Отправлен: 07.05.2006, 06:44
Вопрос задал: NotLame (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, NotLame!
1. Как правило, это делается с помощью функции ExitWindows() с передачей ей параметра EWX_POWEROFF.
2.1. С помощью ShellExecute(). Синтаксис такой (немного упрощён): ShellExecute(0,'open','путь_к_файлу','параметры','рабочий_каталог',1);
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 07.05.2006, 08:08
Оценка за ответ: 4

Отвечает: Николай Б.
Здравствуйте, NotLame!
Мой ответ не поместился в сообщение.
Посмотрите вот здесь: http://new-pro.narod.ru/42338.htm
Ответ отправил: Николай Б. (статус: 6-ой класс)
Ответ отправлен: 07.05.2006, 08:14
Оценка за ответ: 5

Отвечает: estiGi
Здравствуйте, NotLame!
1. ExitWindowsEx (EWX_SHUTDOWN, EWX_FORCEIFHUNG, 0);

2.1. ShellExecute (NULL, "open", "cmd", "cmd /k cd c:\", NULL, SW_SHOWNORMAL);

2.2.
STARTUPINFO si = {NULL};
si.cb = sizeof (STARTUPINFO);
PROCESS_INFORMATION pi = {NULL};
CreateProcess (NULL, "cmd /k cd c:\", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
CloseHandle (pi.hThread);
CloseHandle (pi.hProcess);

3.
cmd с параметром /k или /c - запустить с выполнением команды. Например
cmd /k cd c: - запустить ком. строку и перейти на диск C:
cmd /c cd c: - запустить ком. строку, перейти на диск C: и завершить работу ком. строки
Ответ отправил: estiGi (статус: Студент)
Ответ отправлен: 07.05.2006, 16:01
Оценка за ответ: 5

Отвечает: mix_mix
Здравствуйте, NotLame!
Большинство ответивших забыло, что под NT-системы нужно получать привелегию SE_SHUTDOWN. Ну, а на последок рекомендую функцию NtShutdownSystem из ntdll.dll (учите NativeAPI), вместо ExitWindowsEx. Тогда компьютер выключается немножко побыстрей (где-нибудь за 0.2 сек, без лишних вопросов), правда все RING3 приложения летят в голубую даль, но все RING0 корректно завершаются (драйвера, ядро системы)

Приложение:

Ответ отправил: mix_mix (статус: 3-ий класс)
Ответ отправлен: 07.05.2006, 17:38
Оценка за ответ: 5

Отвечает: Лысков Игорь Витальевич
Здравствуйте, NotLame!
1. Поддерживаю mix_mix - сначала необходимо получить соответствующую привилегию...
Хочу предложить свой вариант завершения Винды (на С)
Параметром передается EWX_POWEROFF - для выключения,
либо EWX_REBOOT -для перегрузки

Приложение:

---------
Удачи!

Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Ответ отправлен: 10.05.2006, 14:51


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное