SHARKenstein Опубликовано 2 июня, 2003 Жалоба Поделиться Опубликовано 2 июня, 2003 Субж, сам находил кучку исходников для перезагрузки, переключения пользователей, выключения, но срабатывало тока переключение пользователя (LogOff). Я конечно знаю функцию ExitWindowsEx 1,0Тока она почемуто LogOff делает, а машину не вырубает.Помажите люди добрые, а то у меня таймер не завершённый, он под 9х виндой работает, а пд ХР никак не хочет. Ссылка на комментарий Поделиться на другие сайты Поделиться
DIKAR™ Опубликовано 3 июня, 2003 Жалоба Поделиться Опубликовано 3 июня, 2003 Вырубить можно очень легко. Просто выдерни шнур питания компа из розетки. Вот так можно вырубит комп. Ссылка на комментарий Поделиться на другие сайты Поделиться
Rulchik Опубликовано 3 июня, 2003 Жалоба Поделиться Опубликовано 3 июня, 2003 (изменено) DIKAR™ Перестань пороть чушь. Я уже неоднократно взывал к тому, что если нечего сказать — не говори. :D SHARKenstein Попробуй сделать так: dim OpSysSet, objSet OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _ "(Shutdown)}//./root/cimv2").ExecQuery _ ("SELECT * FROM Win32_OperatingSystem" &_ " WHERE Primary=true")For Each obj In OpSysSet obj.Win32Shutdown(8)Next Изменено 3 июня, 2003 пользователем Rulchik Ссылка на комментарий Поделиться на другие сайты Поделиться
SHARKenstein Опубликовано 3 июня, 2003 Автор Жалоба Поделиться Опубликовано 3 июня, 2003 Rulchik, спасибо, ты где такой хитрый, и главное рабочий, код надыбал? Ещё бы как заставить комп различать какая винда установлена (9х или NT (XP)). А то как я понимаю этот код не будет в 98-й винде пахать. Вот я и думаю как бы заставить определить прогу что за система стоит и в зависимости от этого выбрать вариант кода для выключения. Самое главно определить систему, а дальше я и сам справлюсь. ЗЫ. DIKAR™, ты уж совсем... мне программно надо, что бы к компу не надо было бегать, а чтоб он сам отрубался. Ссылка на комментарий Поделиться на другие сайты Поделиться
dmc Опубликовано 3 июня, 2003 Жалоба Поделиться Опубликовано 3 июня, 2003 ExitWindowsEx 1, 0 Первый параметр может принимать значения EWX_LOGOFF EWX_POWEROFF EWX_REBOOT EWX_SHUTDOWN и при необходимости прибавлять флаг EWX_FORCE Второй параметр не используется. Естественно константы нужно объявить в модуле. Перезагружался у тебя потому, что ты использовал флаг EWX_SHUTDOWN, надо использовать EWX_POWEROFF Это есть самый оптимальный код, т.к. Win32 API. Если будешь использовать код выше, не факт что он будет работать под всеми ОС Ссылка на комментарий Поделиться на другие сайты Поделиться
dmc Опубликовано 3 июня, 2003 Жалоба Поделиться Опубликовано 3 июня, 2003 Чтобы определить версию windows, существует API функция GetVersionEx, у нее единственный параметр структура типа OSVERSIONINFO Public Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Ссылка на комментарий Поделиться на другие сайты Поделиться
SHARKenstein Опубликовано 4 июня, 2003 Автор Жалоба Поделиться Опубликовано 4 июня, 2003 dmc EWX_LOGOFFEWX_POWEROFF EWX_REBOOT EWX_SHUTDOWN Ты забыл указать, что это константы и они принимают определённые циферки. Но всё равно, я уже их перепробывал раньше и у меня нифига не вышло, комп делает LogOff и усё тут. На счет функции GetVersionEx, че-то я не понял, как её задавать? Описывается она так понимать так: Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As LongPublic Type OSVERSIONINFOdwOSVersionInfoSize As LongdwMajorVersion As LongdwMinorVersion As LongdwBuildNumber As LongdwPlatformId As LongszCSDVersion As String * 128 End Type А вот как её вызывать, и какой ответ она приносит? Подробнее плиз на счёт её использования. Ссылка на комментарий Поделиться на другие сайты Поделиться
dmc Опубликовано 4 июня, 2003 Жалоба Поделиться Опубликовано 4 июня, 2003 SHARKenstein Насчет того, что это константы я в курсе, а вот то, что ты используешь цифры это зря, написав более менее большую программу или переходя на другой язык, будут проблемки. Чтобы работать со структурой, необходимо dwOSVersionInfoSize присвоить размер самой структуры, т.е. выделить память под нее, а затем можешь использовать как хошь. Вот пример: Private Sub Command1_Click() Dim lpVersionInformation As OSVERSIONINFO lpVersionInformation.dwOSVersionInfoSize = Len(lpVersionInformation) GetVersionEx lpVersionInformation MsgBox lpVersionInformation.dwBuildNumber End Sub При нажатии кнопки выскочит номер билда ОС. Не забудь также объявить все, что нужно в модуле. Ссылка на комментарий Поделиться на другие сайты Поделиться
SHARKenstein Опубликовано 4 июня, 2003 Автор Жалоба Поделиться Опубликовано 4 июня, 2003 dmc Насчет того, что это константы я в курсе, а вот то, что ты используешь цифры это зря, написав более менее большую программу или переходя на другой язык, будут проблемки.Дык на то они и константы, их опредилить надо, т.е. сказать, чему им равняться.GetVersionEx lpVersionInformation С этим я справился, но как из цифр, содержащихся с этих переменных, опредилить какая винда (95,98,NT,2000,Me,XP) ? Ведь в завимости от тога, какая винда, мне надо тот или иной код запускать. Ссылка на комментарий Поделиться на другие сайты Поделиться
dmc Опубликовано 4 июня, 2003 Жалоба Поделиться Опубликовано 4 июня, 2003 http://sharig.webzone.ru/category/windows/...6_win98orNT.htm Ссылка на комментарий Поделиться на другие сайты Поделиться
dmc Опубликовано 4 июня, 2003 Жалоба Поделиться Опубликовано 4 июня, 2003 Кстати насчет выключения компа, можешь использовать API ShellExecute или т.п. и работать с shutdown shutdown -s -f -t 0 .... Ссылка на комментарий Поделиться на другие сайты Поделиться
SHARKenstein Опубликовано 4 июня, 2003 Автор Жалоба Поделиться Опубликовано 4 июня, 2003 Ну вот, после ссылки, хоть понятно стало, где именно и как означается версия виндов. Кажись тема закрыта, пасиб за ответы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Arc Опубликовано 24 октября, 2003 Жалоба Поделиться Опубликовано 24 октября, 2003 Люди умныё как в C++Builder6 сделать так чтобы при определённом условии комп перегружался Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти