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

RusFAQ.ru: Win API


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

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

Выпуск № 220
от 03.04.2006, 20:35

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


Вопрос № 38810: Здравствуйте! Я начинающий программист, не судите строго! Объявляю функцию ExitWindowsEx на бейсике (8) вот так: Declare Function ExitWindowsEx Lib "user32.dll" (ByVal Flags As Long, ByVal Reason As Long) As Long Затем вызыв...

Вопрос № 38.810
Здравствуйте!
Я начинающий программист, не судите строго!
Объявляю функцию ExitWindowsEx на бейсике (8) вот так:
Declare Function ExitWindowsEx Lib "user32.dll" (ByVal Flags As Long, ByVal Reason As Long) As Long
Затем вызываю ее так:
Call ExitWindowsEx(&H8, &H1)
Вопросы вот какие:
Во-первых это не работает
Во-вторых, нужен ли второй параметр (причина), а то мой английский немного подкачал?
В-третьих, к сожалению не нашел в МСДН, а сам и не знаю, как перевести hex числа вроде 0х00000001 в коды, которые понимает бейсик, а то я взял по аналогии с одним примерчиком
В-четвертых, правильно ли выбраны типы данных, и сюда же, в МСДН называют параметры объявляемой функции в стиле С++, а я могу называть их как угодно?
Еще, в МСДН есть описание такой функции, как InitiateSystemShutdown, входящей в библиотеку Advapi32.dll. Но фреймворк пишет, что такая точка входа в этой бибилиотеке не найдена! Написание проверил несколько раз.
Отправлен: 29.03.2006, 00:29
Вопрос задал: Ильченко Константин (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-MAN
Здравствуйте, Ильченко Константин!
Для выключения компьютера программадолжна иметь соответствующие привелегии. В примере простая программа, котораю выключает компьютер, правда она на С++, но я думаю вам не составит труда переделать её для бейсика, тем более, если у вас есть MSDN.

Насчёт InitiateSystemShutdown. Эта ф-ция реализована только в Windows NT, 2000, XP, 2003. Я не знаю как в бейсике, но в С++, чтобы её использовать нужно явно указать операционную систему, для которой пишется программа. Это делается таким образом:

#define _WIN32_WINNT 0x0500 //Win 2000
#define _WIN32_WINNT 0x0501 //WinXP

Возможно, в бейсике есть что-то подобное...

Приложение:

Ответ отправил: X-MAN (статус: 4-ый класс)
Ответ отправлен: 29.03.2006, 02:08

Отвечает: Попов Павел Алексеевич
Здравствуйте, Ильченко Константин!

Вот выдержка из MSDN:

BOOL ExitWindowsEx(
UINT uFlags, // shutdown operation
DWORD dwReserved // reserved
);

uFlags может принимать вот эти значения:
EWX_LOGOFF
EWX_POWEROFF
EWX_REBOOT
EWX_SHUTDOWN

EWX_FORCE
EWX_FORCEIFHUNG

второй параметр игнорируется.

Вызов должен быть например такой:

if(ExitWindowsEx(EWX_POWEROFF,NULL)==0)MessageBox(0,"error","errorr",MB_ICONEXCLAMATION|MB_OK);

---------
Что не убивает меня, то делает меня сильнее!
Ответ отправил: Попов Павел Алексеевич (статус: 1-ый класс)
Ответ отправлен: 29.03.2006, 13:13


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.21 от 03.04.2006
Яндекс Rambler's Top100

В избранное