也不能注销,不能重起计算机了?/
这个问题如何解决!!!
请高手发标!!
这个问题如何解决!!!
请高手发标!!
解决方案 »
- 这个as函数在delphi7中怎么实现啊。
- 已经知道dos程序的文件名,怎么终止这个进程
- 请教:怎么在dbgrid中的列中,为ibquery查询结果显示序号?
- 高手救命啊!在线等,急啊!!!!!
- 简单问题:用Tidftp控件上传数据怎样检验上传是否成功?
- 我有个问题要问————在线等待??!!!!
- 我初学,请问窗体的高度怎么设置成1200,现在只能设成612,我不知道改那个属性。请高手赐教!
- 超简单问题:button1.click如何写成'button'+'1'.click
- 高手帮帮忙,找一个本地数据库程序改远程执行的方法
- 怎样选择listbox中所有的项?
- 寻找 .dwg 控件 up有分
- 开始学习Delphi 请推荐你们最喜欢帮助最大的Delphi书
procedure WMQueryEndSession(var Msg:TMessage);
message WM_QueryEndSession; 在实现部分加上下列过程procedure TForm1.WMQueryEndSession(var Msg:TMessage);begin form1.Close;Msg.Result:=1;end;
还有,请把你的邮箱地址留下来好不好。。谢谢了
我的QQ是:9421662
如果用hzl88688(hzl88688) 老兄提到的方法,程序是能关闭,但是以上关机、重启、等不能正常。
也就是说,需要关闭两次计算机才能关闭!
如何解决这个BUG。这是NMStrmServ1控件的BUG。但是我听说有人解决过这个问题。不知道在2000下是如何解决的?
还想知道是不是在DELPHI 7中能解决这个问题··
我现在给你贴一段代码,别忘了给我加分,另.unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Psock, NMSTRM;type
TForm1 = class(TForm)
NMStrmServ1: TNMStrmServ;
private
{ Private declarations }
procedure WMQueryEndSession(var Msg:TMessage);
message WM_QueryEndSession; procedure ShutDown;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
procedure TForm1.WMQueryEndSession(var Msg:TMessage);begin Msg.Result:=1;
form1.Close;
shutdown;
end;function GetWinVersion: String;
var
VersionInfo : TOSVersionInfo;
OSName : String;
begin
// set the size of the record
VersionInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo ); if Windows.GetVersionEx( VersionInfo ) then
begin
with VersionInfo do
begin
case dwPlatformId of
VER_PLATFORM_WIN32s : OSName := 'Win32s';
VER_PLATFORM_WIN32_WINDOWS : OSName := 'Windows 95';
VER_PLATFORM_WIN32_NT : OSName := 'Windows NT';
end; // case dwPlatformId
Result := OSName + ' Version ' + IntToStr( dwMajorVersion ) + '.' + IntToStr( dwMinorVersion ) +
#13#10' (Build ' + IntToStr( dwBuildNumber ) + ': ' + szCSDVersion + ')';
end; // with VersionInfo
end // if GetVersionEx
else
Result := '';
end; procedure tform1.ShutDown;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; // Borland forgot this declaration
var
hToken : THandle;
tkp : TTokenPrivileges;
tkpo : TTokenPrivileges;
zero : DWORD;
begin
if Pos( 'Windows NT', GetWinVersion) = 1 then // we've got to do a whole buch of things
begin
zero := 0;
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );
Exit;
end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );
Exit;
end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)
// SE_SHUTDOWN_NAME
if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[ 0 ].Luid ) then
begin
MessageBox( 0, 'Exit Error', 'LookupPrivilegeValue() Failed', MB_OK );
Exit;
end; // if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[0].Luid )
tkp.PrivilegeCount := 1;
tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );
if Boolean( GetLastError() ) then
begin
MessageBox( 0, 'Exit Error', 'AdjustTokenPrivileges() Failed', MB_OK );
Exit;
end // if Boolean( GetLastError() )
else
ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
end // if OSVersion = 'Windows NT'
else
begin // just shut the machine down
ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
end; // else
end;end.