k tal amigo esto lo encontré hace un par de días y de pronto te sirva en lo k necesitas, saludos.
Hay una API llamada ExitWindowsEx que sirve para reiniciar o apagar la máquina. Lo que no sé es si andará con XP. Es cuestión de probarla.
Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Parámetros
uFlags Uno o mas de los siguentes indicadores que indican como apagar o reiniciar el ordenador.:
EWX_LOGOFF = 0 Cierra la sesión de forma segura, cerrando los programas.
EWX_SHUTDOWN = 1 Cierra el sistema de forma segura, cerrando todos los programas.
EWX_REBOOT = 2 Realiza un reinicio completo del ordenador.
EWX_FORCE = 4 Fuerza el cierre de las aplicaciones sin preguntarle al usuario si quiere cerrarlo.
EWX_POWEROFF = 8 Cierra el sistema y si es posible apaga el ordenador.
dwReserved Reservado para futuras versiones de Windows. Poner siempre a 0.
Esta información fué extraída de
http://www.silared.com/usuarios/vbasic/api...itWindowsEx.htm