全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4330
推到 Plurk!
推到 Facebook!

請問要如何使Windows自動關閉程式及關機

答題得分者是:pgdennis
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-14 09:34:05 IP:211.75.xxx.xxx 未訂閱
有時候開著電腦而人卻必須要離開,但是在人回來之前想先把電腦關閉。 似乎可以用ExitWindowsEx來關閉電腦,可以直接使用嗎? 若要先關閉執行中程式,有什麼函式是可以找出所有在執行中的程式、關閉執行中的程式?
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-14 11:29:19 IP:218.163.xxx.xxx 未訂閱
引言: 有時候開著電腦而人卻必須要離開,但是在人回來之前想先把電腦關閉。 似乎可以用ExitWindowsEx來關閉電腦,可以直接使用嗎? 若要先關閉執行中程式,有什麼函式是可以找出所有在執行中的程式、關閉執行中的程式?
文件裡面有提到這個參數,試試看 EWX_FORCE Forces processes to terminate. When this flag is set, Windows does not send the messages WM_QUERYENDSESSION and WM_ENDSESSION to the applications currently running in the system. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency 永遠追不上技術更新的速度~~< src="http://140.134.4.20/~g8905202/pucca.gif">
------
星期一,二...無窮迴圈@@
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-14 12:25:17 IP:61.221.xxx.xxx 未訂閱
pprayer你好: //2000用 ExitWindowsEx( EWX_FORCE or EWX_POWEROFF , 0 ); //98用 Winexec(Pchar('rundll32 shell32.dll,SHExitWindowsEx 9'),SW_Hide);
------
======================
昏睡~
不昏睡~
不由昏睡~
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-14 17:00:04 IP:211.75.xxx.xxx 未訂閱
感謝兩位的回答。 我在Win2000上面試 ExitWindowsEx(EWX_FORCE ,0) 會關閉所有程式回到登入畫面 用 ExitWindowsEx(EWX_SHUTDOWN ,0) 或 ExitWindowsEx(EWX_POWEROFF ,0) 則...沒有反應,我不知道怎麼形容,該行程式碼有跑過,但是跑過之後什麼也沒發生。 在Help裡面提到: Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. 跟這個有關係嗎?
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-15 10:07:21 IP:218.163.xxx.xxx 未訂閱
應該是這樣 http://home.kimo.com.tw/bruce0829/share.htm BCB的  
 以程式控制 Windows 2000 關機    //-------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
&hToken);    LookupPrivilegeValue(null, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,
false,
&tkp,
0,
(PTOKEN_PRIVILEGES)null,
0);    // 下面八個動作中任選一種執行 ....    // 一般關閉,關閉前會詢問其它執行中的程式是否存檔
//ExitWindowsEx(EWX_LOGOFF,0); // 登出, 重新登入使用者
//ExitWindowsEx(EWX_REBOOT,0); // 重新開機
//ExitWindowsEx(EWX_SHUTDOWN,0); // 結束作業系統,出現"您可以放心關機畫面"
//ExitWindowsEx(EWX_POWEROFF,0); // 結束作業系統,並關閉電源(僅支援ATX 規格)    // 強制關閉,其它執行中的應用程式資料並不會被儲存
//ExitWindowsEx(EWX_LOGOFF | EWX_FORCE,0); // 登出, 重新登入使用者
//ExitWindowsEx(EWX_REBOOT | EWX_FORCE,0); // 重新開機
//ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,0); // 結束作業系統
//ExitWindowsEx(EWX_POWEROFF | EWX_FORCE,0); // 結束作業系統,並關閉電源 (僅支援ATX 規格)
}    
永遠追不上技術更新的速度~~
------
星期一,二...無窮迴圈@@
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-18 09:11:18 IP:211.75.xxx.xxx 未訂閱
引言: 應該是這樣 http://home.kimo.com.tw/bruce0829/share.htm BCB的
 以程式控制 Windows 2000 關機    //-------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
&hToken);    LookupPrivilegeValue(null, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,
false,
&tkp,
0,
(PTOKEN_PRIVILEGES)null,
0);    
對不起,到這邊為止我一直無法看懂,可否麻煩解釋一下 像是tkp,OpenProcessToken,LookupPrivilegeValue,AdjustTokenPrivileges 這些對應到Delphi的話是什麼呢? 發表人 - pprayer 於 2003/07/18 09:13:55
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-18 15:03:03 IP:218.163.xxx.xxx 未訂閱
另外一個delphi範例http://www.infojet.cz/program/delphi/tips/tip0016.html,修改如下,在win98,winxp pro測試ok
function SetPrivilege( sPrivilegeName:string;bEnabled:boolean ) : boolean;
var
  TPPrev,
  TP         : TTokenPrivileges;
  Token      : THandle;
  dwRetLen   : DWord;
begin
  Result := False;      OpenProcessToken(
    GetCurrentProcess,
    TOKEN_ADJUST_PRIVILEGES
    or TOKEN_QUERY,
    Token );      TP.PrivilegeCount := 1;
  if( LookupPrivilegeValue(
        Nil,
        PChar( sPrivilegeName ),
        TP.Privileges[0].LUID ) )then
  begin
    if( bEnabled )then
    begin
      TP.Privileges[0].Attributes  :=
        SE_PRIVILEGE_ENABLED;
    end else
    begin
      TP.Privileges[0].Attributes  :=
        0;
    end;        dwRetLen := 0;
    Result := AdjustTokenPrivileges(
                Token,
                False,
                TP,
                SizeOf( TPPrev ),
                TPPrev,
                dwRetLen );
  end;      CloseHandle( Token );
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  SetPrivilege('SeShutdownPrivilege',true);
  ExitWindowsEx(EWX_REBOOT or EWX_FORCE,0);
end; 
永遠追不上技術更新的速度 發表人 - pgdennis 於 2003/07/18 15:19:48
------
星期一,二...無窮迴圈@@
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-19 10:05:12 IP:61.221.xxx.xxx 未訂閱
pprayer你好: 關於 
引言:我在Win2000上面試 ExitWindowsEx(EWX_FORCE ,0) 會關閉所有程式回到登入畫面 用 ExitWindowsEx(EWX_SHUTDOWN ,0) 或 ExitWindowsEx(EWX_POWEROFF ,0) 則...沒有反應,我不知道怎麼形容,該行程式碼有跑過,但是跑過之後什麼也沒發生。
那是因為你不夠權限,可以讓windows允許你的關機指令 因此
引言: function SetPrivilege( sPrivilegeName:string;bEnabled:boolean ) : boolean; .. .... ...... ........ end;
就是要拿雞毛當令箭,告訴win我有權限關機...
------
======================
昏睡~
不昏睡~
不由昏睡~
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-19 20:01:19 IP:61.216.xxx.xxx 未訂閱
//看範例A來的~
// 不錯的函數喔~實現關機功能 支援>    < src="http://delphi.ktop.com.tw/download/upload\33223_qoo.gif">網海無涯,學無止境!
        
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-07-19 20:09:26 IP:61.216.xxx.xxx 未訂閱
額外參考資料:    http://www.ccidnet.com/tech/guide/2000/09/25/58_1136.html    網海無涯,學無止境!
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-07-24 15:41:11 IP:211.75.xxx.xxx 未訂閱
感謝各位前輩指點,可惜只能選一個給分。 希望其他人不要介意。
系統時間:2024-05-02 11:58:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!