{判断是哪类操作系统,以确定关机方式}
function GetOperatingSystem: string;
varosVerInfo: TOSVersionInfo; //就这句运行就通不过了
begin
result:='';
osverInfo.dwOsVersionInfoSize:=SizeOf(TOSVerionInfo);
if GetVersionEx(osVerInfo) then
case osVerInfo.dwPlatformId of VER_PLATFORM_WIN#_NT:
begin
result:='Windows NT/2000/XP'
end;
VER_PLATFORM_WIN32_WINDOWS:
begin
Result:='Windows 95/98/98SE/Me';
end;
end;
end;
function GetOperatingSystem: string;
varosVerInfo: TOSVersionInfo; //就这句运行就通不过了
begin
result:='';
osverInfo.dwOsVersionInfoSize:=SizeOf(TOSVerionInfo);
if GetVersionEx(osVerInfo) then
case osVerInfo.dwPlatformId of VER_PLATFORM_WIN#_NT:
begin
result:='Windows NT/2000/XP'
end;
VER_PLATFORM_WIN32_WINDOWS:
begin
Result:='Windows 95/98/98SE/Me';
end;
end;
end;
TOSVersion = (osUnknown, os95, os95OSR2, os98, os98SE, osNT3, osNT4, os2K, osME,osXP); Function IsNT(var OS:string): boolean;//判断是否是NT系统
Function GetOS :TOSVersion; //获得操作系统 //获取操作系统
function GetOS;
var
OS :TOSVersionInfo;
begin
ZeroMemory(@OS,SizeOf(OS));
OS.dwOSVersionInfoSize:=SizeOf(OS);
GetVersionEx(OS);
Result:=osUnknown;
if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then
begin
case OS.dwMajorVersion of
3: Result:=osNT3;
4: Result:=osNT4;
5: begin
if OS.dwMinorVersion>=1 then
Result:=osXP
else
Result:=os2K;
end;
end;
end
else
begin
if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then
begin
Result:=os95;
if (Trim(OS.szCSDVersion)='B') then
Result:=os95OSR2;
end
else
if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then
begin
Result:=os98;
if (Trim(OS.szCSDVersion)='A') then
Result:=os98SE;
end
else
if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then
Result:=osME;
end;
end; //判断是否时NT系统
function IsNT(var OS:string): boolean;
var
OSVI :TOSVersion;
begin
OS:='不知道';
OSVI:=GetOs;
if OSVI=osNT3
then OS:='Window NT3';
if OSVI=OSNT4
then OS:='Window NT4';
if OSVI=os2K
then OS:='Winodw 2000';
if OSVI=os95
then OS:='Window 95';
if OSVI=os95OSR2
then OS:='Window 97';
if OSVI=os98
then OS:='Winodw 98';
if OSVI=os98SE
then OS:='Winodw 98SE';
if OSVI=osME
then OS:='Winodw ME';
Result:=GetOS in [osNT3,osNT4,os2K,osXP];
end;
begin
result := true;
if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then
exit
else
if Win32Platform = VER_PLATFORM_WIN32_NT then
result := false;
end;
谢谢,按zsy_good(只要坚定不移的走下去,那一定会成功)的可以了不过还想问一下,这句又是错在哪?
怎么按书上的敲代码,运行都通不过:({定时关机函数,各参数的意义如下
computer:计算机名;Msg:显示的提示信息;
Time:时间延迟;force:是否强制关机;
Reboot:是否重启动}
function TimedShutDown(Computer:string;Msg:string;Time:word;force:boolean;
Reboot:Boolean):Boolean;
var
rl:Cardinal;
hToken:cardinal;
tkp:TOKEN_PRVILEGES; //这里就通不过了
begin
{获得用户关机特权,仅对Windows NT/2000/XP}
OpenProcessToken(GetCurrentProcess,TOKEN_ASJUST_PRIVILEGES or TOKEN_QUERY,hToken);
if LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.privieges[0].Luid) then
begin
tkp.privileges[0].attributes:=SE_PRIVILEGE_ENABLED;
tkp.privilegeCount:=1;
AdjustTokenPrivileges(hToken,False,tkp,0,nil,rl);
end;
result:=InitiateSystemShutdown(PChar(Computer),Pchar(Msg),Time,Fore,Reboot)
end;
function GetOperatingSystem: string;
var
osVerInfo: TOSVersionInfo; //就这句运行就通不过了
begin
result:='';
osverInfo.dwOsVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(osVerInfo) then
case osVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT:
begin
result:='Windows NT/2000/XP'
end;
VER_PLATFORM_WIN32_WINDOWS:
begin
Result:='Windows 95/98/98SE/Me';
end;
end;
end;
tkp:TOKEN_PRVILEGES; 就通不过了
555555.5.55555.5.5555
MM大力只能帮你up了!