خاموش کردن يک کامپيوتر در شبکه
بوسيله دو تابع زير شما ميتونيد يک کامپيوتر در شبکه خاموش کنيد. يا به عبارت ديگه خاموش کردن يک کامپيوتر با اتصال در شبکه. تابع shut براي خاموش کردن و تابع abortshut براي لغو فرمان خاموش کردن. در هر دو تابع پارامتر System نام کامپيوتري در شبکه است که مي خواهيد خاموش کنيد.


Code:

const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
var
hdlg: DWORD = 0;

procedure shut(system, nachricht: string; force, reboot: Boolean; countdown: Integer);
var
otoken, hToken: THandle;
tp: TTokenPrivileges;
h: DWORD;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
otoken := htoken;
LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, tp.Privileges[0].luid);
tp.privilegecount := 1;
tp.privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
h := 0;
AdjustTokenPrivileges(hToken, False, tp, 0, PTokenPrivileges(nil)^, h);
InitiateSystemShutdown(PChar(system), PChar(nachricht), countdown, force, reboot);
tp.privilegecount := 1;
tp.privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
h := 0;
AdjustTokenPrivileges(oToken, False, tp, 0, PTokenPrivileges(nil)^, h);
CloseHandle(hToken);
end;

procedure abortshut(system: string);
var
hToken: THandle;
tp: TTokenPrivileges;
h: DWORD;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(PChar(system), SE_SHUTDOWN_NAME, tp.Privileges[0].luid);
tp.privilegecount := 1;
tp.privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
h := 0;
AdjustTokenPrivileges(hToken, False, tp, 0, PTokenPrivileges(nil)^, h);
CloseHandle(hToken);
abortSystemShutdown(PChar(system));
end;