Jak zamknąć system tylko tak, aby nie zatrzymał się na żadnym komunikacie typu: "istnieje połączenie sieciowe" lub "program czeka na twoja rekcje"...???
zamknięcie systemu bez względu na otworzone programy i połączenia sieciowe...
POZDRAWIAM!
Jak zamknąć system tylko tak, aby nie zatrzymał się na żadnym komunikacie typu: "istnieje połączenie sieciowe" lub "program czeka na twoja rekcje"...???
zamknięcie systemu bez względu na otworzone programy i połączenia sieciowe...
POZDRAWIAM!
ExitWindowsEx z flagą EWX_Force, poza tym: FAQ, Artykuły, Gotowce, wyszykiwarka
ExitWindowsEx z flagą EWX_Force, poza tym: FAQ, Artykuły, Gotowce, wyszykiwarka
dobra dzieki, już wiem trzeba dodać flagi :)
rundll32 krnl386.exe, exitkernel bodajże. zamyka natychmiast windowsa, bez jakichkolwiek pytań i bez wyłączania komputera ATX
rundll32 krnl386.exe, exitkernel bodajże (...)
Brutal exit wygląda tak:
<font color="darkblue">rundll.exe kernel,exitkernel</span>
Używam go zawsze do wychodzenia z trybu awaryjnego - nie zapisuje przesunięcia ikon na pulpicie (po awaryjnym zawsze wszystkie są ściśnięte do 640x480 :-8)
rundll.exe kernel,exitkernel
Jak dokładnie tego użyć? Mogę prosić o gotową procedurkę, bo nie mogę wymyślić [wstyd]
A i jeszcze coś: Chce żeby to działało na XP.
Pozdrawiam!
shutdown -f -t 00
shutdown -f -t 00
Dzięki, ale chodziło mi o "Brutalne" zamykanie win'a.
rundll.exe kernel,exitkernel
Jak dokładnie tego użyć?
Ja to odpalam skrótem, ale masz 2 wyjścia - nie testowałem więc nie wiem, które zadziała i które lepsze.
1)
ShellExecute
odpalasz rundll.exe z parametrem "kernel,exitkernel"
2)
krnl := LoadLibrary("kernel.dll");
proc := GetProcAddress(krnl, "exitkernel");
i odpalasz proc
Może lepszym sposobem na Twój problem będzie po prostu hibernacja ? Po co od razu zamykać system na siłę ?
procedure SuspendOrHibernate( ASuspend,AForce : Boolean );
var
iVersionInfo: TOSVersionInfo;
iToken : cardinal;
iPriveleg : TTokenPrivileges;
iaresult : cardinal;
begin
FillChar (iPriveleg, SizeOf (iPriveleg), #0);
iVersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(iVersionInfo);
if iVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then begin
Win32Check( OpenProcessToken (GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, iToken) );
Win32Check( LookupPrivilegeValue (NIL,'SeShutdownPrivilege',
iPriveleg.Privileges[0].Luid) );
iPriveleg.PrivilegeCount := 1;
iPriveleg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
Win32Check(AdjustTokenPrivileges(iToken,False,iPriveleg,
Sizeof(iPriveleg), iPriveleg, iaresult));
end;
Win32Check( SetSystemPowerState( ASuspend, AForce ) );
end;
Użycie :
SuspendOrHibernate(false,false);
Qrde próbuje i nie mogę...
Możecie mi powiedzieć, co jest nie tak w tej procedurze?
ShellExecute(handle, 'open', 'rundll.exe', 'kernel, exitkernel', nil, sw_hide)
Nie chcę być nachalnym, ale proszę o pomoc.
Qrde próbuje i nie mogę...
Możecie mi powiedzieć, co jest nie tak w tej procedurze?
ShellExecute(handle, 'open', 'rundll.exe', 'kernel, exitkernel', nil, sw_hide)
wychodzi Ci błąd? to chyba zadeklarować w części uses ShellApi;
sorry, nie zalogowałem się przedtem...i stąd ten Anonim :)
Nie, to nie to. Chodzi o to, że procedurka nic nie robi!! Klikam i nic. Może ma związek to, że pracuje na win XP. POMOCY!!