http://www.thescripts.com/forum/thread559878.html
tienes dos vías distintas:
a) ejecutando el comando SHUTDOWN del sistema operativo,
b) llamando a la función ExitWindows_Ex de la API de Windows.
Slds - octavio
"Andres Collado" <colla...@hotmail.com> wrote in message
news:9B166906-A7A5-4611...@microsoft.com...
"Octavio Hernandez" wrote:
> Aquí:
>
> http://www.thescripts.com/forum/thread559878.html
>
> tienes dos vías distintas:
> a) ejecutando el comando SHUTDOWN del sistema operativo,
> b) llamando a la función ExitWindows_Ex de la API de Windows.
>
> Slds - octavio
>
>
Lo estoy haciendo asi:
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern int ExitWindowsEx(IntPtr lParam,IntPtr dwReserved);
ExitWindowsEx((IntPtr)2, (IntPtr)0);
Pero no me hace nada.
En mi blog tienes un código en C++ que puedes meter en un ensamblado
C++/CLI y luego usarlo desde C#.
http://geeks.ms/blogs/rfog/archive/2007/05/22/reiniciar-windows-desde-net.aspx
En Mon, 07 Jan 2008 11:15:01 +0100, Andres Collado
<colla...@hotmail.com> escribió:
--
Microsoft Visual C++ MVP
========================
Mi blog sobre programación: http://geeks.ms/blogs/rfog
Mi blog sobre literatura: http://rfog.blogsome.com
Libros, ciencia ficción y programación
========================================
La luciérnaga brilla cuando vuela, la mente también.
-- Bailey.
Si te esperas un poco te pongo el reboot en un ensamblado compatible con
C#...
En Mon, 07 Jan 2008 11:30:35 +0100, RFOG
<zephryn...@quitame.gmail.com> escribió:
> Hola a todos. ¿como puedo reniciar windows desde c#?
> Gracias de antemano.
Hecho.
Joer con el tipo de proyecto construyendo bajo un Vista x64...
En las opciones de proyecto te ajustas el tipo de plataforma (ahora, sin
tocar nada, está todo en x86) y la versión del .NET que quieras y
recompilas (ojo, hay que ajustarlo en los dos proyectos). En el raíz del
zip tienes el ensamblado ya hecho por si no quieres complicarte la vida.
De todos modos, el proyecto sirve para mostraros cómo hacer interop
C++/CLI y lo fácil que es frente al de atributos del C#. Es decir, a veces
podría ser interesante hacerse un ensamblado en C++/CLI y luego usarlo en
C# en lugar de hacer toda la parafernalia de los atributos.
public enum ShutdownAction
{
Logoff=0x00,
PowerOff=0x02,
Reboot=0x08,
RestartApps=0x40,
};
using System;
using zxShutdown;
namespace textShutdown
{
class Program
{
static void Main(string[] args)
{
if (Shutdown.SystemShutdown(ShutdownAction.Logoff))
Console.WriteLine("Vamos a hacer un logoff");
else
Console.WriteLine("No se pudo hacer un logff");
}
}
}
El uso es muy fácil: Se hace una llamada a Shutdown.SystemShutdown()
pasando el enum deseado.
No olvideis añadir la referencia zxShutdown en la lista de referencias.
La solución se puede bajar de aquí:
http:/rfog.cmact.com/ProyectosDEMO/zxShutdown.zip
Ya haré una entrada para el blog.
En Mon, 07 Jan 2008 12:26:03 +0100, Andres Collado
De todos modos hoy he tenido mi idea: voy a hacer un ensamblado genérico
que tenga algunos de las cosas que voy publicando en mi blog... para usar
desde C# y no sólo desde C++/CLI.
Estad atentos.
En Mon, 07 Jan 2008 14:54:06 +0100, Andres Collado