PDA

View Full Version : خاموش کردن سیستم



فرزاد دلفی باز
سه شنبه 30 تیر 1383, 02:54 صبح
دوستان عزیز چطوری میشه سیستم را ShutDown کرد متشکرم .....

MToloo
سه شنبه 30 تیر 1383, 05:34 صبح
ExitWindowsEx(EWX_SHUTDOWN, 0)
یا

ExitWindowsEx(EWX_POWEROFF, 0)
اگه بتونه shutdown کنه True برمیگردونه وگرنه False.

Mahdi_S_T
سه شنبه 30 تیر 1383, 08:44 صبح
این را هم ببین :
http://www.barnamenevis.org/forum/viewtopic.php?t=11933

فرزاد دلفی باز
سه شنبه 06 مرداد 1383, 02:47 صبح
دوست عزیز Mahdi_S_T کد شما مورد استفاده من قرار گرفت . از شما متشکرم :تشویق:

_alish_
سه شنبه 06 مرداد 1383, 13:24 عصر
با سلام این کد برای تمام ویندوزها کار می کند


function GetWindowsVersion: Word;
var
VerInfo: TOSVersionInfo;
begin
VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo);
GetVersionEx(VerInfo);
Result := VerInfo.dwPlatformID;
{case VerInfo.dwPlatformID of
VER_PLATFORM_WIN32S: Platform is 'Windows 3.1x running Win32s';
VER_PLATFORM_WIN32_WINDOWS: Platform is 'Windows 95/98';
VER_PLATFORM_WIN32_NT: Platform is 'Windows NT';
end;}
end;


procedure ExitWindows32(ShutDownFlag: Word);

function ChangeNTSecurityForShutdown: Boolean;
var
hToken : THandle;
tkp,
Newt : TTokenPrivileges;
retlength : DWORD;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES +
TOKEN_QUERY, hToken) <> False then
begin
{بدست آوردن privilege }
if LookupPrivilegeValue( nil, 'SeShutdownPrivilege',
tkp.Privileges[0].Luid) = True then
begin
tkp.PrivilegeCount := 1; // One to set
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
{ بدست آوردن privilege برای این Proccess }
Result := AdjustTokenPrivileges(hToken, False, tkp,
SizeOf(TTokenPrivileges), Newt,
retlength);
end;
end;
end;

begin
if GetWindowsVersion = VER_PLATFORM_WIN32_NT then
begin
if ChangeNTSecurityForShutdown then
ExitWindowsEx(ShutDownFlag, 0)
else
{نتوانستن برای ست کردن privilege که Security Proccess می باشد. }
MessageDlg('Unable to modify security rights for shutdown privileges.', mtError, [mbOK], 0);
end
else
if GetWindowsVersion = VER_PLATFORM_WIN32_WINDOWS then
ExitWindowsEx(ShutDownFlag, 0);
end;

{/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-}
بعد از این دستور برای اجرا استفاده کنید
ExitWindows32(EWX_SHUTDOWN);
پارامترهای دیگر را در Help ExitWindows32 Delphi ببینید