Форум: "Система";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];
ВнизОтключение в XP????????????? Найти похожие ветки
← →
CRACKISH (2003-01-28 20:20) [0]Люди как сделать так:
Чтобы прога узнавала что за платформа(98,XP), если виндос 98 то такой код для выключения кампа, если XP то такой (нипишите пожалуйста код)??????????
← →
Карлсон (2003-01-28 20:33) [1]а подумать самому не судьба?
если по делу, то просто проверяешь версию виндов, а далее сам додумай.
весь код в ФАК"е
← →
Ich Hasse (2003-01-28 21:53) [2]Вот так получить версию Windows
function GettingWinVer: string;
var
temp1,
temp2,
temp3: integer;
osvi: OSVERSIONINFO;
begin
osvi.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
GetVersionEx(osvi);
temp1:=osvi.dwMajorVersion;
temp2:=osvi.dwMinorVersion;
temp3:=osvi.dwPlatformId;
if temp1=4 then
begin
if temp2=0 then
begin
if temp3=VER_PLATFORM_WIN32_WINDOWS then
Result:="Windows 95";
end;
end;
if temp1=4 then
begin
if temp2=10 then
Result:="Windows 98";
end;
if temp1=4 then
begin
if temp2=90 then
Result:="Windows Me";
end;
if temp1=3 then
begin
if temp2=51 then
Result:="Windows NT 3.51";
end;
if temp1=4 then
begin
if temp2=0 then
Result:="Windows NT 4.0";
end;
if temp1=5 then
begin
if temp2=0 then
Result:="Windows 2000";
end;
if temp1=5 then
begin
if temp2=1 then
Result:="Windows XP";
end;
end;
← →
CRACKISH (2003-01-29 08:33) [3]спасибо! большое!!!!!!!!!!!!!!!!!
← →
CRACKISH (2003-01-29 20:47) [4]А как выключить камп в XP!!!!!!! зарание благодарен!!!!!
← →
DVM (2003-01-29 21:02) [5]http://delphibase.endimus.com/?action=viewtopic&topic=syscontrol
← →
ДМ (2003-01-30 05:18) [6]Код для выключения Виндов, никакую версию проверять не надо...
procedure shutdown;
var
hToken:THandle;
tkp,PrevState:_TOKEN_PRIVILEGES;
k:DWORD;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil, "SeShutdownPrivilege", tkp.Privileges[0].Luid);
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(PrevState), PrevState, k);
ExitWindowsEx(EWX_FORCE+EWX_SHUTDOWN,0);
end;
← →
DVM (2003-01-30 09:29) [7]EWX_FORCE+EWX_SHUTDOWN+EWX_POWEROFF
А то некоторые компы не выключаются, а доходят до заставки
"Теперь питание компьютера..."
← →
Михайлов Антон (2003-01-30 18:36) [8]хе...
вот мой вариант :)
Procedure Shutdown;
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
If Win32Platform = VER_PLATFORM_WIN32_WINDOWS Then
Begin
if not ExitWindowsEx(EWX_Force or
EWX_PowerOff or
EWX_ShutDown, 0) then
MessageBox(0, "An application refused to terminate", "Win32", MB_OK);
end;
If Win32Platform = VER_PLATFORM_WIN32_NT Then
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, "SeShutdownPrivilege",tkp.Privileges[0].Luid);
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength)then
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;
end;
Код не тестировался.... но я думаю работать будет :)
← →
DVM (2003-01-31 16:45) [9]Есть еще вариант, но пока только больше теоретический.
В shell32.dll есть функция выключающая комп. Та, которой Explorer пользуется.
Но она недокументирована.
← →
drpass (2003-01-31 18:35) [10]Вот извращенцы! Вот так будет прекрасно работать в любой системе без всяких проверок:
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, "SeShutdownPrivilege",tkp.Privileges[0].Luid);
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength);
end;
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
:)))
← →
DVM (2003-02-02 01:07) [11]Вот так еще можно:
procedure MSWinShutdownEx(Wnd:hWnd);
type TMSShDwn = procedure(aWnd: hWnd); stdcall;
var MSShDwn: TMSShDwn;
begin
@MSShDwn := GetProcAddress(GetModuleHandle(PChar("shell32.dll")), pchar(60));
MSShDwn(Wnd);
end;
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c