Java典型模塊與項(xiàng)目實(shí)戰(zhàn)大全(第8章)_IT168文庫.doc_第1頁
Java典型模塊與項(xiàng)目實(shí)戰(zhàn)大全(第8章)_IT168文庫.doc_第2頁
Java典型模塊與項(xiàng)目實(shí)戰(zhàn)大全(第8章)_IT168文庫.doc_第3頁
Java典型模塊與項(xiàng)目實(shí)戰(zhàn)大全(第8章)_IT168文庫.doc_第4頁
Java典型模塊與項(xiàng)目實(shí)戰(zhàn)大全(第8章)_IT168文庫.doc_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第8章 關(guān)機(jī)工具(Timer類+系統(tǒng)命令)第8章 關(guān)機(jī)工具(Timer類+系統(tǒng)命令)在Java語言中,線程的類除了類Thread外,還有類Timer和類TimerTask。因此對于程序員來說,如果想掌握好事件機(jī)制,除了掌握類Thread,還必須要學(xué)習(xí)類Timer和類TimerTask。本章將通過模擬關(guān)機(jī)工具的功能,介紹如何調(diào)用Windows系統(tǒng)命令,還將詳細(xì)介紹線程的類Timer。本章的學(xué)習(xí)目標(biāo)如下:q 掌握關(guān)機(jī)工具項(xiàng)目;q 掌握如何調(diào)用Windows系統(tǒng)命令;q 理解Timer和TimerTask類。8.1 關(guān)機(jī)工具原理關(guān)機(jī)工具項(xiàng)目用來模擬計(jì)算機(jī)的關(guān)機(jī)功能,即Windows系統(tǒng)的關(guān)機(jī)功能,除此之外還將實(shí)現(xiàn)定時關(guān)閉計(jì)算機(jī)的功能等。8.1.1 項(xiàng)目結(jié)構(gòu)框架分析對于關(guān)機(jī)工具項(xiàng)目,除了該項(xiàng)目的界面外,剩下的就是兩個工具類。關(guān)機(jī)工具項(xiàng)目項(xiàng)目目錄如圖8.1所示,該項(xiàng)目中的3個類分別為關(guān)機(jī)工具類CutDownTool.java、定時關(guān)機(jī)工具類CountTimeTool.java和關(guān)機(jī)工具項(xiàng)目界面類CloseComputer.java。圖8.1 項(xiàng)目目錄8.1.2 項(xiàng)目功能業(yè)務(wù)分析本節(jié)將向讀者介紹整個項(xiàng)目要實(shí)現(xiàn)的功能。這些功能包括關(guān)機(jī)工具的初始化、按住鼠標(biāo)功能和放開鼠標(biāo)后的功能。1關(guān)機(jī)工具初始化當(dāng)運(yùn)行關(guān)機(jī)工具項(xiàng)目中的CloseComputer類后,就會出現(xiàn)如圖8.2所示的初始界面。在該界面中將顯示出實(shí)現(xiàn)關(guān)機(jī)的各種方式。圖8.2 關(guān)機(jī)工具初始界面2倒計(jì)時關(guān)機(jī)功能關(guān)機(jī)工具項(xiàng)目要實(shí)現(xiàn)倒計(jì)時關(guān)機(jī)功能,可以在初始化對話框中單擊“倒計(jì)時關(guān)機(jī)”按鈕,彈出時間輸入對話框。在該對話框中輸入相應(yīng)的時間后,單擊“確定”按鈕就會實(shí)現(xiàn)以輸入框中的時間倒計(jì)時關(guān)機(jī)的功能。如果想取消該功能,可以在初始化對話框中單擊“取消關(guān)機(jī)”按鈕,彈出確認(rèn)對話框。在該對話框中單擊“確定”按鈕就可以實(shí)現(xiàn)取消關(guān)機(jī)的功能,具體過程如圖8.3所示。圖8.3 倒計(jì)時關(guān)機(jī)的過程3定時關(guān)機(jī)功能關(guān)機(jī)工具項(xiàng)目要實(shí)現(xiàn)定時關(guān)機(jī)功能,可以在初始化對話框中單擊“定時關(guān)機(jī)”按鈕,彈出時間輸入對話框。在該對話框中輸入相應(yīng)的時間后,單擊“確定”按鈕就會實(shí)現(xiàn)以輸入框中的時間倒計(jì)時關(guān)機(jī)功能。如果想取消該功能,可以在初始化對話框中單擊“取消關(guān)機(jī)”按鈕,彈出確認(rèn)對話框。在該對話框中單擊“確定”按鈕就可以實(shí)現(xiàn)取消關(guān)機(jī)的功能,具體過程如圖8.4所示。圖8.4 定時關(guān)機(jī)的過程8.2 關(guān)機(jī)工具的實(shí)現(xiàn)過程本章通過調(diào)用系統(tǒng)命令和多線程的相關(guān)知識來實(shí)現(xiàn)關(guān)機(jī)工具項(xiàng)目,具體程序架構(gòu)如圖8.5所示,它包含兩個工具類和一個界面類。圖8.5 程序關(guān)系圖8.2.1 關(guān)機(jī)工具的類CloseComputer.java類用來實(shí)現(xiàn)“關(guān)機(jī)工具”項(xiàng)目的界面,所以該類繼承了類JFrame,又由于該類需要實(shí)現(xiàn)事件機(jī)制,所以實(shí)現(xiàn)了接口ActionListener。該類的具體內(nèi)容如代碼8.1所示,UML如圖8.6所示。圖8.6 關(guān)機(jī)工具類圖代碼8.1 關(guān)機(jī)工具類:CloseComputer.javapublic class CloseComputer extends JFrame implements ActionListener /創(chuàng)建成員變量/創(chuàng)建實(shí)現(xiàn)BorderLayout布局的面板對象panel_mainprivate JPanel panel_main = new JPanel(new BorderLayout(5, 10);/創(chuàng)建實(shí)現(xiàn)FlowLayout布局的面板對象panel_subnorthprivate JPanel panel_subnorth = new JPanel(new FlowLayout(3);/創(chuàng)建實(shí)現(xiàn)FlowLayout布局的面板對象panel_subcenterprivate JPanel panel_subcenter = new JPanel(new FlowLayout(1, 5, 5);/創(chuàng)建了3個按鈕對象countdown、time和cancelprivate JButton countdown = new JButton(倒計(jì)時關(guān)機(jī));private JButton time = new JButton(定時關(guān)機(jī));private JButton cancel = new JButton(取消關(guān)機(jī));private JLabel tag; /創(chuàng)建標(biāo)簽對象tagString key; /創(chuàng)建字符串對象keypublic CloseComputer() /構(gòu)造函數(shù)this.getContentPane().add(panel_main);/添加對象panel_main到主窗口里/添加對象panel_subnorth 到對象panel_main窗口里panel_main.add(panel_subnorth, BorderLayout.NORTH);/添加對象panel_subcenter到對象panel_main窗口里panel_main.add(panel_subcenter, BorderLayout.CENTER);/添加標(biāo)簽對象tag到對象panel_subnorth里panel_subnorth.add(tag = new JLabel(請選擇關(guān)機(jī)方式:);/添加3個按鈕到對象panel_subcenter里panel_subcenter.add(countdown);panel_subcenter.add(time);panel_subcenter.add(cancel);/為3個按鈕注冊事件監(jiān)聽器countdown.addActionListener(this);time.addActionListener(this);cancel.addActionListener(this);public static void main(String args) throws Exception /主方法CloseComputer frame = new CloseComputer();/創(chuàng)建CloseComputer對象/設(shè)置窗口關(guān)閉功能frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();frame.setSize(320, 120); /設(shè)置窗口的大小frame.setTitle(關(guān)機(jī)工具); /設(shè)置標(biāo)題frame.setLocation(350, 350);/設(shè)置顯示frame.setVisible(true);frame.setResizable(false);public void countdown() /“倒計(jì)時關(guān)機(jī)”調(diào)用的方法/獲取輸入的信息key = JOptionPane.showInputDialog(this, 請輸入倒計(jì)時關(guān)機(jī)剩余的時間(秒), 輸入框, 1);CountTimeTool.delaytime(Long.parseLong(key);/調(diào)用類CountTimeTool的delaytimepublic void time() /“定時關(guān)機(jī)”調(diào)用的方法Calendar calendar = Calendar.getInstance();/獲取當(dāng)前系統(tǒng)的時間/獲取當(dāng)前的時、分和秒int h = calendar.get(Calendar.HOUR);int m = calendar.get(Calendar.MINUTE);int s = calendar.get(Calendar.SECOND); String a = String.valueOf(h);/轉(zhuǎn)換變量h為字符串int hour, minute, secord; /定義輸入的時、分和秒int類型變量String hourtmp, minutetmp, secordtmp;/定義輸入的時、分和秒string類型變量/為變量hourtmp, minutetmp, secordtmp賦值hourtmp = JOptionPane.showInputDialog(this, 請輸入關(guān)機(jī)的小時(12小時制), 輸入, 1);minutetmp = JOptionPane.showInputDialog(this, 請輸入關(guān)機(jī)的分鐘, 輸入, 1);secordtmp = JOptionPane.showInputDialog(this, 請輸入關(guān)機(jī)的秒鐘, 輸入, 1);/把Sting類型變量轉(zhuǎn)換成int類型變量hour = Integer.parseInt(hourtmp);minute = Integer.parseInt(minutetmp);secord = Integer.parseInt(secordtmp);/通過調(diào)用timesum()方法,計(jì)算出當(dāng)前系統(tǒng)的時間currently_time和輸入的時間set_timelong set_time = timesum(hour, minute, secord);long currently_time = timesum(h, m, s);/獲取設(shè)置時間與系統(tǒng)時間之間的差long discrepancy_time = set_time - currently_time;if (discrepancy_time 0) /當(dāng)設(shè)置時間比系統(tǒng)時間早時try /執(zhí)行關(guān)閉功能Runtime.getRuntime().exec(shutdown -s); catch (IOException e) e.printStackTrace(); else /調(diào)用類CountTimeTool的delaytime()方法CountTimeTool.delaytime(discrepancy_time);JOptionPane.showMessageDialog(this, 恭喜你,設(shè)置成功!, 確認(rèn), 2);/計(jì)算出時間總和,并返回public int timesum(int h, int m, int s) /把時和分變量分別轉(zhuǎn)換成秒int sum = h * 3600 + m * 60 + s;return sum; public void cancel() /“取消關(guān)機(jī)”調(diào)用的方法try /顯示信息框JOptionPane.showMessageDialog(this, 你已經(jīng)成功取消了關(guān)機(jī)操作!, 消息, 2);/執(zhí)行取消關(guān)閉計(jì)算機(jī)命令Runtime.getRuntime().exec(shutdown -a); catch (IOException e) public void actionPerformed(ActionEvent eAction) /事件監(jiān)聽事件String ActionCommand = eAction.getActionCommand();if (eAction.getSource() instanceof JButton) /發(fā)生事件的組件是JButton類型if (倒計(jì)時關(guān)機(jī).equals(ActionCommand) /如果為“倒計(jì)時關(guān)機(jī)”按鈕countdown(); /調(diào)用countdown()方法if (定時關(guān)機(jī).equals(ActionCommand) /如果為“定時關(guān)機(jī)”按鈕time(); /調(diào)用time()方法if (取消關(guān)機(jī).equals(ActionCommand) /如果為“取消關(guān)機(jī)”按鈕cancel(); /調(diào)用cancel()方法【代碼解析】q 上述代碼實(shí)現(xiàn)了關(guān)機(jī)工具項(xiàng)目界面,該用戶界面涉及的具體容器、對象和布局如圖8.7所示。q 上述代碼中,語句“Runtime.getRuntime().exec(shutdown -s)”的意思就是啟動一個新的進(jìn)程執(zhí)行shutdown -s命令。該命令的含義為關(guān)閉計(jì)算機(jī),而命令shutdown -a的含義為取消關(guān)閉計(jì)算機(jī)。圖8.7 布局8.2.2 關(guān)機(jī)工具的工具類CutDownTool.java類主要用來實(shí)現(xiàn)關(guān)閉計(jì)算機(jī)的功能,由于該類需要被定時調(diào)用,所以繼承了TimerTask類,該類的具體內(nèi)容如代碼8.2所示。代碼8.2 關(guān)機(jī)工具類:CutDownTool.javapublic class CutDownTool extends TimerTask /繼承了TimerTask類public void run() /重寫run()方法try /執(zhí)行關(guān)閉計(jì)算機(jī)命令Runtime.getRuntime().exec(shutdown -s); catch (IOException e) e.printStackTrace();【代碼解析】在上述代碼中,首先繼承了TimerTask類,然后重寫該類的run()方法,在該方法中通過執(zhí)行命令shutdown-s實(shí)現(xiàn)了關(guān)閉計(jì)算機(jī)的功能。CutDownTool.java類主要用來實(shí)現(xiàn)定時關(guān)閉計(jì)算機(jī)的功能,即在一定時間后執(zhí)行CutDownTool類,該類的具體內(nèi)容如代碼8.3所示。代碼8.3 定時關(guān)機(jī)工具類:CountTimeTool.javapublic class CountTimeTool public static void delaytime(long dt) long delay = 1000; /間隔變量delayTimer timer = new Timer(); /創(chuàng)建Timer變量CutDownTool w1 = new CutDownTool();/創(chuàng)建CutDownTool對象timer.schedule(w1, delay * dt); /在delay*dt時間段后執(zhí)行w1【代碼解析】上述代碼中為了實(shí)現(xiàn)定時的效果,調(diào)用了類Timer的schedule()方法,表示w1被安排在delay*dt指定的時間后執(zhí)行。8.3 知識點(diǎn)擴(kuò)展關(guān)機(jī)工具項(xiàng)目涉及的知識在關(guān)機(jī)工具項(xiàng)目中,除了涉及用戶界面的知識外,還通過Timer和TimerTask類實(shí)現(xiàn)了多線程,同時還通過調(diào)用系統(tǒng)命令實(shí)現(xiàn)了計(jì)算機(jī)關(guān)閉功能。本節(jié)除了詳細(xì)介紹線程的類Timer和TimerTask外,還將詳細(xì)講解系統(tǒng)命令Shutdown。8.3.1 Timer和TimerTask類在Java語言中如果想實(shí)現(xiàn)每隔一段時間去執(zhí)行某個任務(wù),除了可以使用線程類Thread外,還可以使用包java.util中的類Timer和TimerTask。對于前者首先需要創(chuàng)建后臺進(jìn)程,然后讓其每隔一段時間執(zhí)行,具體實(shí)現(xiàn)時比較麻煩。對于后者,只需要在TimerTask類的run()方法中實(shí)現(xiàn)任務(wù),然后Timer類就會安排其每隔一段時間執(zhí)行,具體實(shí)現(xiàn)時比較簡單。所謂Timer,就是一種定時器工具,用來在一個后臺線程計(jì)劃執(zhí)行指定任務(wù)。它可以計(jì)劃執(zhí)行該任務(wù)一次或反復(fù)多次。所謂TimerTask,其實(shí)質(zhì)是一個抽象類,其子類代表一個可以被Timer計(jì)劃的任務(wù)。下面通過一個具體的類TimerTest來講解Timer和TimerTask類的使用,該類的具體內(nèi)容如代碼8.4所示。代碼8.4 測試類:TimerTest.javapublic class TimerTest extends TimerTask /創(chuàng)建成員變量String index; /創(chuàng)建一個字符串變量Timer myTimer = new Timer(); /創(chuàng)建一個Timer對象public TimerTest(String index) /構(gòu)造函數(shù)this.index = index;public void run() /重寫run()方法System.out.println(index);/反復(fù)執(zhí)行的任務(wù)public void start(int delay, int internal) /實(shí)現(xiàn)反復(fù)執(zhí)行功能/在delay * 1000時間后開始執(zhí)行TimerTest對象,執(zhí)行后每隔internal * 1000反復(fù)執(zhí)行myTimer.schedule(this, delay * 1000, internal * 1000); public void end() myTimer.cancel(); /調(diào)用cancel()方法結(jié)束public static void main(String args) /主方法/創(chuàng)建和設(shè)置myTask1對象TimerTest myTask1 = new TimerTest(線程1執(zhí)行);myTask1.start(0, 3); /調(diào)用start()方法/創(chuàng)建和設(shè)置myTask2對象TimerTest myTask2 = new TimerTest(線程2執(zhí)行);myTask2.start(0, 1); /調(diào)用start()方法try Thread.sleep(6000); /使線程休眠6秒 catch (InterruptedException e) /結(jié)束myTask1.end();myTask2.end();運(yùn)行TimerTest.java類,其控制臺窗口如圖8.8所示。圖8.8 運(yùn)行結(jié)果【代碼解析】q 在上述代碼的眾多方法中,由于繼承了TimerTask類,所以需要重寫run()方法實(shí)現(xiàn)業(yè)務(wù)功能;在啟動線程的start()方法中,通過調(diào)用Timer類的schedule()方法執(zhí)行TimerTest對象;在結(jié)束線程的end()方法中,通過調(diào)用Timer類的cancel()方法結(jié)束線程。q 在上述代碼的主方法main()中,首先創(chuàng)建了兩個線程對象myTask1和myTask2,然后通過start()方法啟動線程,通過end()方法結(jié)束線程,在具體調(diào)用這兩個方法之間,通過Thread.sleep()方法實(shí)現(xiàn)當(dāng)前線程休眠一段時間。最后,通過查看API幫助文檔可以發(fā)現(xiàn),如果想實(shí)現(xiàn)執(zhí)行計(jì)劃、定時任務(wù),首先需要繼承TimerTask類并重寫該類的run()方法來實(shí)現(xiàn)任務(wù)功能,然后通過調(diào)用Timer類的schedule()方法執(zhí)行TimerTask類對象。詳細(xì)介紹如下。1TimerTask類對于TimerTask類,其是擴(kuò)展了Object并實(shí)現(xiàn)了Runnable接口的抽象類,因此在具體編程時,可以在public void run()方法中編寫具體的執(zhí)行任務(wù)。該類擁有幾個重要方法,如下所示。(1)public boolean cancel()該方法用來終止計(jì)時器任務(wù)的執(zhí)行運(yùn)行。%注意:Timer類要求循環(huán)執(zhí)行任務(wù)(TimerTask任務(wù))時,如果該對象正在執(zhí)行,則會在執(zhí)行完之后不會再循環(huán)執(zhí)行;如果還未執(zhí)行或處于停歇期,則不會執(zhí)行。(2)public abstract void run()該方法為計(jì)時器任務(wù)要執(zhí)行的操作。(3)public long scheduledExecutionTime()該方法用來返回計(jì)時器任務(wù)被安排最后執(zhí)行的時間,一般用來確定計(jì)時器任務(wù)的運(yùn)行是否足夠及時,執(zhí)行是否正當(dāng)。2Timer類對于Timer類,主要用來控制TimerTask類的任務(wù)執(zhí)行一次或者定期重復(fù)執(zhí)行,該類擁有4個構(gòu)造函數(shù),分別如下。(1)Timer()該構(gòu)造函數(shù)用來創(chuàng)建一個默認(rèn)的計(jì)時器。(2)Timer(boolean isDaemon)參數(shù)isDaemon指定線程的守護(hù),創(chuàng)建一個指定守護(hù)線程的計(jì)時器。%注意:當(dāng)參數(shù)isDaemon為true時,該計(jì)時器對象相關(guān)線程為后臺進(jìn)程線程,根據(jù)線程知識可以知道,如果應(yīng)用程序中還有程序繼續(xù)運(yùn)行,后臺線程進(jìn)程就不會停止 執(zhí)行。(3)Timer(String name)參數(shù)name為線程的名字,用來創(chuàng)建一個指定名稱的相關(guān)線程的計(jì)時器。(4)Timer(String name, boolean isDaemon)該函數(shù)用來創(chuàng)建一個新計(jì)時器,不僅指定相關(guān)線程的名稱,而且還指定其為后臺線程。在具體創(chuàng)建計(jì)時器對象時,不推薦使用Timer timer = new Timer(true)語句。因?yàn)檫@種方式創(chuàng)建的計(jì)時器對象,在應(yīng)用程序結(jié)束后會自動結(jié)束,非常不利于使用。除了構(gòu)造函數(shù)外,該Timer類還擁有其他幾個重要方法,其中最重要的方法就是各種重載的schedule()方法和scheduleAtFixedRate()方法,分別如下:(1)public void schedule(TimerTask task,Date time)參數(shù)task為所計(jì)時器任務(wù)對象,參數(shù)time為Data類型對象,該方法用來實(shí)現(xiàn)在指定的時間后執(zhí)行計(jì)時器任務(wù)。%注意:如果參數(shù)time為過去時,則任務(wù)task對象會立刻執(zhí)行。(2)public void schedule(TimerTask task, long delay)參數(shù)delay為long類型,該方法用來實(shí)現(xiàn)在指定的時間(毫秒)后執(zhí)行計(jì)時器任務(wù)。(3)public void schedule(TimerTask task, Date firstTime, long period)參數(shù)firstTime為Date類型,表示第一次執(zhí)行的時間;參數(shù)period為long類型,表示間隔的時間(毫秒);該方法用來在firstTime時間后執(zhí)行任務(wù)task,同時在第一次執(zhí)行后每隔period(毫秒)反復(fù)執(zhí)行。每一次重復(fù)的間隔時間會因?yàn)榍耙淮蝨ask的執(zhí)行時間受到影響。(4)public void schedule(TimerTask task,long delay, long period)參數(shù)delay為long類型,該方法用來在firstTime時間(毫秒)后執(zhí)行任務(wù)task,同時在第一次執(zhí)行后每隔period(毫秒)反復(fù)執(zhí)行。每一次重復(fù)的間隔時間會因?yàn)榍耙淮蝨ask的執(zhí)行時間受到影響。%注意:當(dāng)表示時間的參數(shù)為long類型時,表示毫秒。由于long類型的時間并不能保證與時鐘準(zhǔn)確同步,所以擁有l(wèi)ong類型的時間參數(shù)適合短期的保持頻率。(5)public void scheduleAtFixedRate(TimerTask task,Date firstTime, long period)參數(shù)firstTime為Date類型,該方法用來在firstTime時間后執(zhí)行任務(wù)task,同時在第一次執(zhí)行后每隔period(毫秒)反復(fù)執(zhí)行。每一次重復(fù)的間隔時間不會因?yàn)榍耙淮蝨ask的執(zhí)行時間受到影響。(6)public void scheduleAtFixedRate(TimerTask task,long delay,long period)參數(shù)firstTime為long類型,該方法用來在delay時間后執(zhí)行任務(wù)task,同時在第一次執(zhí)行后每隔period(毫秒)反復(fù)執(zhí)行。每一次重復(fù)的間隔時間不會因?yàn)榍耙淮蝨ask的執(zhí)行時間受到影響。當(dāng)需要反復(fù)執(zhí)行的任務(wù)時,如果注重任務(wù)執(zhí)行的平滑度,那么需要使用schedule()方法,如果注重任務(wù)執(zhí)行的頻度,那么需要使用scheduleAtFixedRate()方法。例如,當(dāng)使用schedule()方法時,意味著所有計(jì)時器任務(wù)之間的時間間隔至少為1秒,即如果有一個計(jì)時器任務(wù)因?yàn)槟撤N原因遲到了(未按計(jì)劃執(zhí)行),那么余下的所有計(jì)時器任務(wù)都要延時執(zhí)行。當(dāng)使用scheduleAtFixedRate()方法時,如果有一個計(jì)時器任務(wù)因?yàn)槟撤N原因遲到了(未按計(jì)劃執(zhí)行),那么后面余下的所有計(jì)時器任務(wù)還會以固定的間隔時間執(zhí)行。即schedule()方法會實(shí)現(xiàn)固定延遲執(zhí)行功能,而scheduleAtFixedRate()方法會實(shí)現(xiàn)固定速率執(zhí)行功能。最后還存在一個關(guān)閉Timer類的對象方法,如下所示。public void cancel()該方法用來終止Timer的功能執(zhí)行。%注意:當(dāng)執(zhí)行該方法后,雖然不會對正在執(zhí)行的任務(wù)有影響,但是卻不會再分配其他 任務(wù)。8.3.2 shutdown命令在Windows系統(tǒng)中,shutdown命令能夠?qū)崿F(xiàn)關(guān)閉或重新啟動一臺本地或遠(yuǎn)程計(jì)算機(jī)的功能。本節(jié)不僅講解了shutdown命令,而且還講解了實(shí)現(xiàn)該命令的程序shutdown.exe。對于shutdown命令,其具體語法如下:shutdown /i | /l | /s | /r | /a | /p | /h | /e /f /m /ComputerName /t XXX /d p:XX:YY/cComment上述語法中各個參數(shù)的含義如表8.1所示。表8.1 參數(shù)含義命 令 參 數(shù)含 義/i顯示“遠(yuǎn)程關(guān)機(jī)對話框”/l立即注銷當(dāng)前用戶/s關(guān)閉計(jì)算機(jī)/r關(guān)機(jī)后重新啟動計(jì)算機(jī)/a取消關(guān)機(jī)操作/p僅關(guān)閉本地計(jì)算機(jī)(而不是遠(yuǎn)程計(jì)算機(jī)),沒有超時期或警告/h使本地計(jì)算機(jī)處于休眠狀態(tài)(如果已啟用休眠)/e強(qiáng)制關(guān)閉正在運(yùn)行的應(yīng)用程序而不提前警告用戶/f強(qiáng)制關(guān)閉正在運(yùn)行的應(yīng)用程序而不提前警告用戶/m /ComputerName指定目標(biāo)計(jì)算機(jī)/t XXX將重新啟動或關(guān)機(jī)前超時期限或延遲設(shè)置為XXX秒/d p:XX:YY列出系統(tǒng)重新啟動、關(guān)機(jī)或關(guān)閉電源的原因/cComment對關(guān)機(jī)原因做出詳細(xì)注釋%注意:在具體使用shutdown命令時,用戶必須是Administrators組的成員才能對本地或遠(yuǎn)程管理計(jì)算機(jī)的意外關(guān)機(jī)進(jìn)行批注。在Windows XP系統(tǒng)中存在一個名為shutdown.exe的程序,該程序的具體目錄如圖8.9所示,當(dāng)在運(yùn)行shutdown命令時,其實(shí)就是執(zhí)行該程序。圖8.9 文件目錄下面介紹shutdown命令的幾個具體實(shí)例。(1)如果想讓計(jì)算機(jī)在23:00關(guān)機(jī),可以在運(yùn)行對話框中輸入如下命令:at 23:00 shutdown s當(dāng)執(zhí)行上述命令后,只要到了23點(diǎn),計(jì)算機(jī)就會出現(xiàn)“系統(tǒng)關(guān)機(jī)”對話框,默認(rèn)有30秒鐘的倒計(jì)時來提示保存工作。(2)如果想在1小時后自動關(guān)閉計(jì)算機(jī),即實(shí)現(xiàn)倒計(jì)時關(guān)閉功能,可以在運(yùn)行對話框中輸入如下命令:shutdown s t 3600之所以為3600,是因?yàn)橐环昼姙?0秒,而1小時共3600秒。(3)如果在倒計(jì)時自動關(guān)機(jī)過程中想取消倒計(jì)時自動關(guān)機(jī),可以在運(yùn)行對話框中輸入如下命令:shutdown a(4)如果想打開“遠(yuǎn)程關(guān)機(jī)對話框”,如圖8.10所示,對自動關(guān)機(jī)進(jìn)行設(shè)置,可以在運(yùn)行對話框中輸入如下命令:圖8.10 遠(yuǎn)程關(guān)機(jī)對話框shutdown -i(5)如果想顯示shutdown命令的幫助信息,如圖8.11和圖8.12所示,可以在運(yùn)行對話框中輸入如下命令:shutdown或shutdown /? 圖8.11 顯示幫助信息 圖8.12 顯示幫助信息8.3.3 通過shutdown命令實(shí)現(xiàn)網(wǎng)絡(luò)遠(yuǎn)程關(guān)機(jī)平時經(jīng)常會遇到這種情況,公司下班后常有很多員工不關(guān)電腦,領(lǐng)導(dǎo)發(fā)現(xiàn)后要求解決這個問題。假如你是網(wǎng)管該如何辦呢?有些網(wǎng)管會到每個辦公

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論