Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
6-88103
nvv_fr
2003-02-05 04:02
2003.03.27
Net Send какой порт юзает?


1-88058
tim5
2003-03-15 13:36
2003.03.27
Удаление файлов.


14-88190
Tux
2003-03-10 22:44
2003.03.27
COM+ - забодал.


14-88201
ilya53
2003-03-11 09:17
2003.03.27
API


3-87806
Roki
2003-03-05 11:43
2003.03.27
Как добавить в системную таблицу isc4.gbd кирилицу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский