Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.27;
Скачать: CL | DM;

Вниз

Отключение в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
3-87857
Lans
2003-03-11 10:08
2003.03.27
Как изменить цвет ячейки в DBGride в зависимости от значения в не


3-87869
ser_ega
2003-03-10 20:10
2003.03.27
База данных


8-88084
stasais
2002-12-07 17:02
2003.03.27
Размер видео-файла на экране


14-88155
Новачок
2003-03-13 10:40
2003.03.27
w2k


1-87959
maximkus
2003-03-17 21:55
2003.03.27
Как отключить сочетание alt+f4 ???