Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как в Windows XP программно выключить компьютер? / 4 сообщений из 4, страница 1 из 1
01.09.2008, 16:05
    #35516349
t03
t03
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Windows XP программно выключить компьютер?
Господа, добрый день!
В Windows 98 программно выключал копм таким вот образом:

DECLARE SHORT ExitWindowsEx IN user32.dll INTEGER uFlags, INTEGER dwReserved
&& закрыть все задачи (и DOS то же) без сохранения и выйти с выключением питания
ExitWindowsEx(5, 0)

а вот в Windows XP это дело не работает - никто не подскажет как в XP программно выключить комп?
...
Рейтинг: 0 / 0
01.09.2008, 16:16
    #35516381
Как в Windows XP программно выключить компьютер?
найти поиском
shutdown.exe

и выполнить из приложения
...
Рейтинг: 0 / 0
01.09.2008, 18:37
    #35516711
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Windows XP программно выключить компьютер?
Смотри ниже вставленый код...
Просто в функцию ExitWindowsEx() подставляешь значения EWX_LOGOFF, EWX_SHUTDOWN, EWX_REBOOT, EWX_POWEROFF взависимости от того что требуется -перезагрузка, выключение...

IF OS(11)='1'
* если нужно работать с привелегиями
DECLARE LONG GetCurrentProcess IN win32api
DECLARE LONG OpenProcessToken IN win32api LONG ProcessHandle,LONG DesiredAccess,LONG @hToken
DECLARE LONG LookupPrivilegeValue IN win32api STRING @lpSystemName,STRING @lpName,STRING @lpLuid
DECLARE LONG AdjustTokenPrivileges IN win32api LONG TokenHandle,LONG DisableAllPrivileges,;
STRING @NewState,LONG BufferLength,STRING @PreviousState,LONG @ReturnLength

TOKEN_ADJUST_PRIVILEGES=32
hToken=0
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,@hToken)

lpSystemName=''
SE_SHUTDOWN_NAME='SeShutdownPrivilege'
lpLuid=SPACE(255)
LookupPrivilegeValue(@lpSystemName,@SE_SHUTDOWN_NAME,@lpLuid)

SE_PRIVILEGE_ENABLED=2
tkp=dth(1)+ALLTRIM(lpLuid)+dth(SE_PRIVILEGE_ENABLED)
PreviousState=.null.
ReturnLength=0
AdjustTokenPrivileges(hToken,0,@tkp,0,@PreviousState,@ReturnLength)
ENDIF

DECLARE LONG ExitWindowsEx IN win32api LONG uFlags,LONG dwReserved
EWX_LOGOFF=0
EWX_SHUTDOWN=1
EWX_REBOOT=2
EWX_POWEROFF=8
ExitWindowsEx(EWX_REBOOT,0)
CLEAR DLLS
*************************************************
* Returns a 4 byte string representing the number
FUNCTION dth
LPARAMETERS lnNum
LOCAL i,ntmp,cRes
cRes=""
FOR i=3 TO 0 STEP -1
ntmp=INT(lnNum/256^i)
lnNum=lnNum-ntmp*(256^i)
cRes=CHR(ntmp)+cRes
ENDFOR
RETURN cRes
***
...
Рейтинг: 0 / 0
02.09.2008, 09:58
    #35517279
t03
t03
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Windows XP программно выключить компьютер?
Большое спасибо johngorn - все заработало!!!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как в Windows XP программно выключить компьютер? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]