如何在win98和win2000下分别实现重新启动的功能 大家好: 我想求得在win98和win2000下实现重新启动的功能,但不知道怎样实现。望大家指点,因急于实现这个功能,最好附上详细代码。 谢谢! 王振亚 2003.10.27 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 98:procedure TForm1.Button1Click(Sender: TObject);begin ExitWindowsEx(EWX_REBOOT or EWX_POWEROFF,0);end;2k:procedure TForm1.Button2Click(Sender: TObject);var st : SYSTEMTIME; hToken : THANDLE; tkp : TOKEN_PRIVILEGES; rr : 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, 0,nil,rr); ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0)end; 感谢楼主和上楼,但怎么来判断这个系统是98还是2K或XP呢??谢谢 获取windows版本unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; _OSVERSIONINFOA = record dwOSVersionInfoSize: DWORD; dwMajorVersion: DWORD; dwMinorVersion: DWORD; dwBuildNumber: DWORD; dwPlatformId: DWORD; szCSDVersion: array[0..127] of AnsiChar; end; _OSVERSIONINFOW = record dwOSVersionInfoSize: DWORD; dwMajorVersion: DWORD; dwMinorVersion: DWORD; dwBuildNumber: DWORD; dwPlatformId: DWORD; szCSDVersion: array[0..127] of WideChar; end; _OSVERSIONINFO = _OSVERSIONINFOA;var VersionInfo: TOSVersionInfo; Platform : String; Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo); GetVersionEx(VersionInfo); Platform := 'Windows '; With VersionInfo Do Begin Case dwPlatformid of 0 : Platform := Platform + IntToStr(dwMajorVersion) + '.'+ IntToStr(VersionInfo.dwMinorVersion); // 3.xx 1 : Platform := Platform + IntToStr(dwMajorVersion) + '.'+ IntToStr(VersionInfo.dwMinorVersion); //W95/98 2 : Platform := Platform + 'NT ' + IntToStr(dwMajorVersion) + '.'+ IntToStr(VersionInfo.dwMinorVersion); //NT 3 Or Higher End; Platform := Platform + ' BuildNumber: ' + IntToStr(dwBuildNumber); End;end;end. delphi中指向结构体的指针 ImageENview载入TIF图片后,图片显示会变扁,请教如何解决 闲聊散分贴 如何使孙子响应消息? 在DBGrid的中的值为何不能写入? outlook Express 能否自动化? TWebbrowser控件的使用 请大家进来看看这段代码。也许你会感兴趣的。 关于Form的菜题,请快点回答,谢了 打印? 用ActiveX修改打印机属性 我是delphi初学者~~~~~~`放分~~~~~~~~~~~
procedure TForm1.Button1Click(Sender: TObject);
begin
ExitWindowsEx(EWX_REBOOT or EWX_POWEROFF,0);
end;2k:
procedure TForm1.Button2Click(Sender: TObject);
var
st : SYSTEMTIME;
hToken : THANDLE;
tkp : TOKEN_PRIVILEGES;
rr : 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, 0,nil,rr);
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0)
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
_OSVERSIONINFOA = record
dwOSVersionInfoSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformId: DWORD;
szCSDVersion: array[0..127] of AnsiChar;
end; _OSVERSIONINFOW = record
dwOSVersionInfoSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformId: DWORD;
szCSDVersion: array[0..127] of WideChar;
end;
_OSVERSIONINFO = _OSVERSIONINFOA;var
VersionInfo: TOSVersionInfo;
Platform : String;
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
GetVersionEx(VersionInfo);
Platform := 'Windows ';
With VersionInfo Do
Begin
Case dwPlatformid of
0 : Platform := Platform + IntToStr(dwMajorVersion)
+ '.'+ IntToStr(VersionInfo.dwMinorVersion); // 3.xx 1 : Platform := Platform + IntToStr(dwMajorVersion)
+ '.'+ IntToStr(VersionInfo.dwMinorVersion); //W95/98
2 : Platform := Platform + 'NT ' + IntToStr(dwMajorVersion)
+ '.'+ IntToStr(VersionInfo.dwMinorVersion); //NT 3 Or Higher End;
Platform := Platform + ' BuildNumber: ' + IntToStr(dwBuildNumber);
End;
end;end.