 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
_Leo Invitado
|
Publicado: Dom 28 Oct, 2001 1:56 am Asunto: Apagar cualquier versión de Windows |
|
|
// Devuelve false si ha ocurrido algún problemabool apagarWindows(void) { OSVERSIONINFO osvi; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx( &osvi ); if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) { //--- Si estamos en NT/2000/XP obtenemos el permiso necesario del sistema HANDLE hToken; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return false; LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) return false; } //--- Apagamos if (!ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0)) return false; return true; } --- Probado con BCB5 en Windows 2000 y XP, aunque teóricamente no debería dar problemas en otras versiones, seria bueno que quien pueda probarlo en otras versiones lo confirme.
|
|
| Volver arriba |
|
 |
Ciklon Cdt

Registrado: 27 Nov 2002Mensajes: 22Ubicación: Argentina
|
Publicado: Jue 20 Feb, 2003 3:17 am Asunto: |
|
|
Hola gente del foro les cuento que probe esta funcion con Builder 4 y win XP o 2000 y funciona perfectamente, ahora sobre 98 lo cuelgay en Me solo reiniciae el explorador. Si alguien sabe como corregirlo...
Saludos |
|
| Volver arriba |
|
 |
Spider_Neo Cdt


Registrado: 02 Sep 2002Mensajes: 20Ubicación: La Piedad, Michoácan, MEXICO.
|
Publicado: Sab 07 Jun, 2003 7:25 am Asunto: |
|
|
A mi me paso lo mismo en Win98 y ME, lo que hize fue lo siguiente:
AnsiString linea="C:\WINDOWS\RUNDLL32.EXE USER.EXE,EXITWINDOWS";
WinExec(linea.c_str(),0);
y con eso apaga me windows 98 y ME.
__________
Salu2,
Javier Torres. |
|
| Volver arriba |
|
 |
pablo_emiliob Master


Registrado: 19 Sep 2005Mensajes: 211Ubicación: Barranquilla - Colombia
|
Publicado: Jue 27 Abr, 2006 12:03 am Asunto: |
|
|
para iniciar sesion en ves de apagar es:
Sustituyendo EWX_POWEROFF por EWX_LOGOFF _________________ __________________________
C++ RULZ FO' EVA' |
|
| Volver arriba |
|
 |
max Lt

Registrado: 12 Mar 2005Mensajes: 89Ubicación: Argentina Prov B.A Mar del Plata
|
Publicado: Jue 27 Abr, 2006 2:58 pm Asunto: |
|
|
Holas yo e uitilizado para apagar reiniciar y cerrar cesion en desde win95 hasta windows 64(y lo he probado!!!!!!!!) y me funciona lo mas bien
aqui les va
apagar:
| Código: |
switch(MessageBox(Handle,"Esta Seguro Que Desea Apagar La Pc???","Confirmacion",MB_YESNO | MB_ICONWARNING))
{
case ID_YES:ExitWindowsEx(1, 0xffffffff);
case ID_NO:Abort();
} |
reiniciar:
| Código: |
switch(MessageBox(Handle,"Esta Seguro Que Desea Reiniciar La Pc???","Confirmacion",MB_YESNO | MB_ICONWARNING))
{
case ID_YES:ExitWindowsEx(2, 0xffffffff);
case ID_NO :Abort(); //Cancel()
} |
cerrar secion:
| Código: |
switch(MessageBox(Handle,"Esta Seguro Que Desea Cerra Sesion ","Confirmacion",MB_YESNO | MB_ICONWARNING))
{
case ID_YES:ExitWindowsEx(0, 0xffffffff);
case ID_NO :Abort(); //Cancel()
} |
_________________ Salu2 |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mar 28 Ene, 2014 12:31 pm Asunto: |
|
|
Ni caso,
Simplemente no estaba con acceso administrador, nada mas, ya funciona.
Un saludo.
Carlos
****************************************
Hola amigos,
Cerrar sesion siempre me ha funcionado bien, pero ahora pruebo en Windows Server 2008 R2 y no va.
Alguien sabe por que?
Hay que cambiar algo?
Saludos.
Carlos _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Vie 28 Mar, 2014 4:14 pm Asunto: |
|
|
Comprobado,
Si el usuario no es administrador no funciona, sabéis como hacer que funcione siendo un usuario normal? estoy haciendo que accedan como usuarios normales por escritorio remoto y al salir cierren automáticamente la sesión, pero si es un usuario no funciona.
Un saludo.
Carlos _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Lun 11 Sep, 2017 5:02 pm Asunto: Modificado con 3 opciones |
|
|
Probado con Windows 10 64bits Creators y con los 3 MODOS y funciona.
Gracias LEO...
| Código: |
//Función para Apagar, Reiniciar o Cerrar Sesion Windows
bool __fastcall TfV::ApagarWindows(String MODO)
{
OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx( &osvi );
if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
//Si estamos en NT/2000/XP obtenemos el permiso necesario del sistema
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return false;
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if(GetLastError() != ERROR_SUCCESS)
return false;
}
if(MODO == "Apagar")
{
if(!ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0))
return false;
}
else
if(MODO == "Reiniciar")
{
if(!ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0))
return false;
}
else
if(MODO == "Cerrar Sesion")
{
if(!ExitWindowsEx(EWX_LOGOFF | EWX_FORCE, 0))
return false;
}
return true;
}
//---------------------------------------------------------------------------
|
_________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|