Apagar equipo por completo

04/11/2004 - 19:29 por Juany | Informe spam
Hola a todos!
Tengo una función para apagar un equipo, pero ésta función en algunos
equipos la apaga por completo y en otros equipos manda el mensaje "Puede
apagar su equipo con seguridad", mi pregunta es: Se debe al bios de la
maquina?, o le hace falta algo a mi función?
Si alguien me puede ayudar mucho se los agradeceré.

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa

Preguntas similare

Leer las respuestas

#1 Ducky
08/11/2004 - 21:27 | Informe spam
*FUNCTION APAGA( tlShutdownRequested, tlInteractiveShutdown )
* Por defecto - Cierra todas las aplicaciones y reinicia Windows sin preguntar.
* Obtenida de UniversalThread
* Parámetros:
* tlShutdownRequested - .T. Cierra Windows, .F. (default) Reinicia Windows
* tlInteractiveShutdown - .T. Muestra el cuadro de diálogo para preguntar si cerramos
Windows, .F. (default) No pregunta nada y cierra Windows
* Esta función permite cerrar o reiniciar Windows desde VFP; hace las llamadas
necesarias
* a funciones API de Windows para ajustar los privilegios necesarios en las plataformas
Windows NT 4.0 o Windows 2000
* si se puede. La función devuelve .F. si no puede hacer los ajustes necesarios para
garantizar que el privilegio
* llamado SE_SHUTDOWN_NAME sea establecido. En Windows 9x no es necesario establecer
este privilegio.
* Probado en las plataformas WinNT 4.0 SP6, Win2K Pro, Win98 y WinME.
* Probado en VFP 5.0, VFP 6.0 y VFP 7.0 SP1.
* Definición de constantes
#DEFINE se_shutdown_name "SeShutdownPrivilege" && Nombre del privilegio de Windows NT
y 2000
#DEFINE se_privilege_enabled 2 && Flag para activar privilegios
#DEFINE token_query 2 && Token para consultar el estado
#DEFINE token_adjust_privilege 0x20 && Token para ajustar privilegios
#DEFINE ewx_logoff 0
#DEFINE ewx_shutdown 1 && Apagar Windows
#DEFINE ewx_reboot 2 && Reiniciar Windows
#DEFINE ewx_force 4 && Forzar el cierre de las aplicaciones
#DEFINE ewx_poweroff 8
#DEFINE ewx_forceifhung 16
#DEFINE sizeoftokenprivilege 16

* API de Windows para ejecutar ShutDown - Todas las versiones
DECLARE ExitWindowsEx IN WIN32API INTEGER uFlags, INTEGER dwReserved && API call to shut
down Windows

* Comprobamos la versión de Windows para saber si hay que establecer privilegios
IF ('4.0' $ OS() OR '5.0' $ OS() OR 'NT' $ OS())
* APIs necesarias para manipular los permisos de los procesos

* Devuelve el LUID privilegio específico - changes each time Windows restarts
DECLARE SHORT LookupPrivilegeValue IN ADVAPI32 ;
INTEGER lpSystemName, ;
STRING @ lpPrivilegeName, ;
STRING @ pluid

* Obtiene el hToken con los permisos de un proceso
DECLARE SHORT OpenProcessToken IN Win32API ;
INTEGER hProcess, ;
INTEGER dwDesiredAccess, ;
INTEGER @ TokenHandle

* Ajusta otros privilegios de un proceso vía un hToken específico
DECLARE INTEGER AdjustTokenPrivileges IN ADVAPI32 ;
INTEGER hToken, ;
INTEGER bDisableAllPrivileges, ;
STRING @ NewState, ;
INTEGER dwBufferLen, ;
INTEGER PreviousState, ;
INTEGER @ pReturnLength

* Obtiene el Handle de un proceso
DECLARE INTEGER GetCurrentProcess IN WIN32API

LOCAL cluid, nhtoken, ctokenprivs, nflag

cluid = REPL(CHR(0),8) && Identificador Unico Local de 64 bits de un privilegio

IF lookupprivilegevalue(0, se_shutdown_name, @cluid) = 0
RETURN .F. && Privilegio No definido en el proceso
ENDIF

nhtoken = 0 && Token de un proceso usado para manipular los privilegios del mismo

IF openprocesstoken(getcurrentprocess(), token_query + token_adjust_privilege ,
@nhtoken) = 0
RETURN .F. && El sistema operativo no puede garantizar los privilegios
necesarios
ENDIF

* Se crea la estructura TOKEN_PRIVILEGES , los 4 primeros bytes DWORD indican
permisos,
* seguidos de un array(arreglo) de 8 bytes con los LUIDs y los últimos 4 bytes son
los atributos
* de los permisos.
ctokenprivs = CHR(1) + REPL(CHR(0),3) + cluid + CHR(se_privilege_enabled) +
REPL(CHR(0), 3)
IF adjusttokenprivileges(nhtoken, 0, @ctokenprivs, sizeoftokenprivilege, 0, 0) = 0
RETURN .F. && Privilegio denegado o no permitido
ENDIF
ENDIF

*CLOSE ALL && Cierra todas las tablas de VFP
FLUSH && Fuerza la escritura en disco de los Buffers
*CLEAR EVENTS && Cancela eventos pendientes
*ON SHUTDOWN && Reestablece el proceso SHUTDOWN


* Se comprueban los parámetros pasados a la funcion
* DO CASE
* CASE tlShutdownRequested AND tlInteractiveShutdown
* nFlag = EWX_SHUTDOWN
* CASE tlShutdownRequested
* nFlag = EWX_SHUTDOWN + EWX_FORCE
* CASE tlInteractiveShutdown
* nFlag = EWX_REBOOT
* OTHERWISE
* nFlag = EWX_REBOOT + EWX_FORCE
* ENDCASE

nflag = ewx_shutdown

=exitwindowsex(nflag, 0) && Fuerza el Cierre o Reinicio de Windows
* Declaracion de llamadas a la API (las se se usaran posteriormente)

QUIT && Sale de VFP
ENDFUNC

"Juany" escribió en el mensaje
news:
Hola a todos!
Tengo una función para apagar un equipo, pero ésta función en algunos
equipos la apaga por completo y en otros equipos manda el mensaje "Puede
apagar su equipo con seguridad", mi pregunta es: Se debe al bios de la
maquina?, o le hace falta algo a mi función?
Si alguien me puede ayudar mucho se los agradeceré.


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#2 Juany
09/11/2004 - 18:25 | Informe spam
Hola Ducky

Gracias por tomarte la molestia en mandarme el codigo, es el mismo código
que tengo, pero mi duda era de que en algunos se apaga por completo y en
otros equipos manda el mensage "Ahora puede apagar su equipo con
seguridad" y es en el s.o. Win XP.

De antemano muchas gracias

Saludos


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#3 Jorge Mota
10/11/2004 - 03:41 | Informe spam
eso ya es cuestion del tipo de motherboard que tiene
creo que es algo de AT y ATX no te puedo decir a ciencia
cierta, pero es algo que no soporta tu motherboard y por eso
muestra ese mensaje.

Saludos.


En , Juany escribió:

Hola Ducky

Gracias por tomarte la molestia en mandarme el codigo, es el mismo código
que tengo, pero mi duda era de que en algunos se apaga por completo y en
otros equipos manda el mensage "Ahora puede apagar su equipo con
seguridad" y es en el s.o. Win XP.

De antemano muchas gracias

Saludos


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway





Jorge Mota
Microsoft Visual FoxPro MVP
Guatemala
Respuesta Responder a este mensaje
#4 Manuel Castellanos
25/11/2004 - 02:43 | Informe spam
Saludos Juany, lo que tienes que hacer es ir al administrador de
dispositivos (ojala sepas donde), en el menu de la ventana en mención, busca
algo que diga mostrar dispositivos ocultos o algo asi, busca algo que diga
ACPI y lo habilitas (creo que el problema es que esta deshabilitado sino
haces lo contrario), luego pruebas y nos cuentas a todos ok...

"Juany" escribió en el mensaje
news:
Hola a todos!
Tengo una función para apagar un equipo, pero ésta función en algunos
equipos la apaga por completo y en otros equipos manda el mensaje "Puede
apagar su equipo con seguridad", mi pregunta es: Se debe al bios de la
maquina?, o le hace falta algo a mi función?
Si alguien me puede ayudar mucho se los agradeceré.


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#5 carol
29/01/2012 - 22:56 | Informe spam
Ducky escribió el 08/11/2004 21:27 :
*FUNCTION APAGA( tlShutdownRequested, tlInteractiveShutdown )
* Por defecto - Cierra todas las aplicaciones y reinicia Windows sin
preguntar.
* Obtenida de UniversalThread
* Parámetros:
* tlShutdownRequested - .T. Cierra Windows, .F. (default) Reinicia Windows
* tlInteractiveShutdown - .T. Muestra el cuadro de diálogo para
preguntar si cerramos
Windows, .F. (default) No pregunta nada y cierra Windows
* Esta función permite cerrar o reiniciar Windows desde VFP; hace las
llamadas
necesarias
* a funciones API de Windows para ajustar los privilegios necesarios en las
plataformas
Windows NT 4.0 o Windows 2000
* si se puede. La función devuelve .F. si no puede hacer los ajustes
necesarios para
garantizar que el privilegio
* llamado SE_SHUTDOWN_NAME sea establecido. En Windows 9x no es necesario
establecer
este privilegio.
* Probado en las plataformas WinNT 4.0 SP6, Win2K Pro, Win98 y WinME.
* Probado en VFP 5.0, VFP 6.0 y VFP 7.0 SP1.
* Definición de constantes
#DEFINE se_shutdown_name "SeShutdownPrivilege" && Nombre
del privilegio de Windows NT
y 2000
#DEFINE se_privilege_enabled 2 && Flag para activar
privilegios
#DEFINE token_query 2 && Token para
consultar el estado
#DEFINE token_adjust_privilege 0x20 && Token para ajustar
privilegios
#DEFINE ewx_logoff 0
#DEFINE ewx_shutdown 1 && Apagar Windows
#DEFINE ewx_reboot 2 && Reiniciar Windows
#DEFINE ewx_force 4 && Forzar el cierre de
las aplicaciones
#DEFINE ewx_poweroff 8
#DEFINE ewx_forceifhung 16
#DEFINE sizeoftokenprivilege 16

* API de Windows para ejecutar ShutDown - Todas las versiones
DECLARE ExitWindowsEx IN WIN32API INTEGER uFlags, INTEGER dwReserved &&
API call to shut
down Windows

* Comprobamos la versión de Windows para saber si hay que establecer
privilegios
IF ('4.0' $ OS() OR '5.0' $ OS() OR 'NT' $ OS())
* APIs necesarias para manipular los permisos de los procesos

* Devuelve el LUID privilegio específico - changes each time Windows
restarts
DECLARE SHORT LookupPrivilegeValue IN ADVAPI32 ;
INTEGER lpSystemName, ;
STRING @ lpPrivilegeName, ;
STRING @ pluid

* Obtiene el hToken con los permisos de un proceso
DECLARE SHORT OpenProcessToken IN Win32API ;
INTEGER hProcess, ;
INTEGER dwDesiredAccess, ;
INTEGER @ TokenHandle

* Ajusta otros privilegios de un proceso vía un hToken
específico
DECLARE INTEGER AdjustTokenPrivileges IN ADVAPI32 ;
INTEGER hToken, ;
INTEGER bDisableAllPrivileges, ;
STRING @ NewState, ;
INTEGER dwBufferLen, ;
INTEGER PreviousState, ;
INTEGER @ pReturnLength

* Obtiene el Handle de un proceso
DECLARE INTEGER GetCurrentProcess IN WIN32API

LOCAL cluid, nhtoken, ctokenprivs, nflag

cluid = REPL(CHR(0),8) && Identificador Unico Local de 64 bits de un
privilegio

IF lookupprivilegevalue(0, se_shutdown_name, @cluid) = 0
RETURN .F. && Privilegio No definido en el proceso
ENDIF

nhtoken = 0 && Token de un proceso usado para manipular los
privilegios del mismo

IF openprocesstoken(getcurrentprocess(), token_query + token_adjust_privilege ,
@nhtoken) = 0
RETURN .F. && El sistema operativo no puede garantizar los
privilegios
necesarios
ENDIF

* Se crea la estructura TOKEN_PRIVILEGES , los 4 primeros bytes DWORD indican
permisos,
* seguidos de un array(arreglo) de 8 bytes con los LUIDs y los últimos
4 bytes son
los atributos
* de los permisos.
ctokenprivs = CHR(1) + REPL(CHR(0),3) + cluid + CHR(se_privilege_enabled) +
REPL(CHR(0), 3)
IF adjusttokenprivileges(nhtoken, 0, @ctokenprivs, sizeoftokenprivilege, 0, 0)
= 0
RETURN .F. && Privilegio denegado o no permitido
ENDIF
ENDIF

*CLOSE ALL && Cierra todas las tablas de VFP
FLUSH && Fuerza la escritura en disco de los Buffers
*CLEAR EVENTS && Cancela eventos pendientes
*ON SHUTDOWN && Reestablece el proceso SHUTDOWN


* Se comprueban los parámetros pasados a la funcion
* DO CASE
* CASE tlShutdownRequested AND tlInteractiveShutdown
* nFlag = EWX_SHUTDOWN
* CASE tlShutdownRequested
* nFlag = EWX_SHUTDOWN + EWX_FORCE
* CASE tlInteractiveShutdown
* nFlag = EWX_REBOOT
* OTHERWISE
* nFlag = EWX_REBOOT + EWX_FORCE
* ENDCASE

nflag = ewx_shutdown

=exitwindowsex(nflag, 0) && Fuerza el Cierre o Reinicio de Windows
* Declaracion de llamadas a la API (las se se usaran posteriormente)

QUIT && Sale de VFP
ENDFUNC

"Juany" escribió en el mensaje
news:
Hola a todos!
Tengo una función para apagar un equipo, pero ésta
función en algunos
equipos la apaga por completo y en otros equipos manda el mensaje "Puede
apagar su equipo con seguridad", mi pregunta es: Se debe al bios de la
maquina?, o le hace falta algo a mi función?
Si alguien me puede ayudar mucho se los agradeceré.


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway




Donde debo copiar este codigo..?? xq si lo copio en el evento click de algun boton me da un error...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida