hej
potrzebuję zrobić coś takiego jak w temacie, ale chodzi mi o takie wymuszone zamknięcie, nie interesuje mnie czy sa otwarte jakieś pliki czy coś sie kopiuje itp, wszystkie procesy mają się natychmiastowo zamknąć (oczywiście mogą tam się jakoś pozakańczać jak umieją, ale chodzi mi o to by użytkownik nie musiał nic klikać, żadnego "ok", "tak", czy czegokolwiek)
Próbowałem już kilku sposobów (kod w C#):
- windows API
[DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
private static extern bool ExitWindowsEx(int flg, int rea);
z flagami
private const int EWX_SHUTDOWN = 0x00000001;
private const int EWX_REBOOT = 0x00000002;
private const int EWX_POWEROFF = 0x00000008;
- czegoś takiego (chyba WMI czy jakoś tak)
public static void ShutDownComputer()
{
ManagementBaseObject outParameters = null;
ManagementClass sysOS = new ManagementClass("Win32_OperatingSystem");
sysOS.Get();
// enables required security privilege.
sysOS.Scope.Options.EnablePrivileges = true;
// get our in parameters
ManagementBaseObject inParameters = sysOS.GetMethodParameters("Win32Shutdown");
// pass the flag of 0 = System Shutdown
inParameters["Flags"] = "1";
inParameters["Reserved"] = "0";
foreach (ManagementObject manObj in sysOS.GetInstances())
{
outParameters = manObj.InvokeMethod("Win32Shutdown", inParameters, null);
}
}
3) System.Diagnostics.Process.Start("ShutDown", "/*");
gdzie *
to r lub s
ale wszystkie te sposoby wyświetlają messageboxy itp z jakimiś pytaniami o potwierdzenia, czasem pojawia się komunikat o zamykaniu aplikacji, że nie odpowiada jest pasek postępu i koniec komp i tak się nie wyłącza. Może znacie jakiś inny sposób na takie wyłączenie, albo na pozbycie się tych komunikatów. Lub niech się one i pojawiają, ale żeby komp się wyłączył??
z góry dzięki za pomoc i wszelkie podpowiedzi