繁體
|
簡體
Sclub交友聊天~加入聊天室當版主
(檢舉)
分享
新浪微博
QQ空间
人人网
腾讯微博
Facebook
Google+
Plurk
Twitter
Line
標題:
[VB.NET] 另類的遠端關機方法
[打印本頁]
作者:
mhfo
時間:
2016-4-11 16:31
標題:
[VB.NET] 另類的遠端關機方法
原文
摘要:
先前討論過遠端關機的方法,需在電腦上啟動群組原則編輯器來設定。
卻發現家用版的作業系統上沒那個東西,而無法使用。
於是便想了這個法子。
VB.NET 有一個非常好用的 FileSystemWatcher
我們設定 FileSystemWatcher 監控電腦的某一個資料夾。
當這個資料夾被存入某個特定名稱的檔案,
便會引發 FileSystemWatcher 的事件,來進行關機的動作。
你可以把以下程式碼編譯為執行檔,放在電腦的開機啟動夾。
做這個動作之前,先在 C 槽開一個 Temp 資料夾。
然後在這個資料夾上按共用,把它分享出去,
假設這台電腦的名稱是 abc
這個路徑名稱便是 \\abc\Temp
我們在別台電腦上只要把 shutdown.txt 存入 \\abc\Temp 這個路徑,
便會觸發關機的動作。
如果你不會寫程式,可以直接下載我做好的執行檔。
程式碼如下:
Public Class Form1
' -----------------------------------
' 宣告路徑及檔名。
' 也可將路徑及檔名存在 ini 檔。
' 程式啟動時再讀進來。
' -----------------------------------
Dim obs_path As String = "c:\temp"
Dim obs_filename As String = "shutdown.txt"
Dim obs_fullname As String = obs_path + "\" + obs_filename
' -----------------------------------
Private Sub Form1_FormClosing(ByVal sender As Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs) _
Handles Me.FormClosing
' 程式結束時消滅 TrayIcon
NotifyIcon1.Dispose()
Me.Dispose()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Try
' --------------------------------
' 程式一開始先砍掉監控的檔案。
' --------------------------------
My.Computer.FileSystem.DeleteFile(obs_fullname)
Catch ex As Exception
End Try
' -----------------------------------
' 指定要監控的路徑和檔名。
' -----------------------------------
Try
FileSystemWatcher1.Path = obs_path
FileSystemWatcher1.Filter = obs_filename
Catch ex As Exception
MsgBox(ex.Message)
End
End Try
' -----------------------------------
' 程式載入後隱藏畫面。
' 測試時可先將下列 3 行 mark 起來。
' -----------------------------------
Me.ShowInTaskbar = False
Me.WindowState = FormWindowState.Minimized
Me.Visible = False
' -----------------------------------
End Sub
Private Sub FileSystemWatcher1_Changed(ByVal sender As System.Object, _
ByVal e As System.IO.FileSystemEventArgs) _
Handles FileSystemWatcher1.Changed
' -----------------------------------
' 當您指定的檔案被塞入受監控的位置。
' 會引發 FileSystemWatcher1_Changed
' e.Name 就是引發此事件的檔案名稱。
' -----------------------------------
If e.Name = obs_filename Then
Try
' --------------------------------
' 關機前先砍掉監控的檔案。
' --------------------------------
My.Computer.FileSystem.DeleteFile(obs_fullname)
Application.DoEvents()
' /t 後面的數字代表幾秒後開始關機。
Shell("shutdown /s /f /t 0")
Catch ex As Exception
End Try
End If
End Sub
End Class
複製代碼
歡迎光臨 魚骨頭的雲端圖書館 (http://mhfo.hotbbs.info/)
Powered by Discuz! 7.0.0