[VB] 開發螢幕保護程式


月初,老闆在主管會議說,他有一天抽問了三位同事,公司的企業文化那12個字,沒人答得出來。所以老闆要資訊部想辦法讓同仁每天都看得到,每天都被提醒,而且新訊息能迅速被傳達。

一般企業都是從入口網來處理,但老闆不要放入口網,老闆希望在電腦桌面就能看到。

回到辦公室測試 Win10 ,Win10 有動態桌面、登入畫面、螢幕保護程式可以試,登入畫面不支援網路芳鄰路徑,動態桌面、螢幕保護程式都支援,再請同事在 Win7/8x 測試,均可支援。

由於很多人桌面放了一堆捷徑,若使用動態桌面,文字可能會被圖示壓住,上市櫃公司在資訊安全基本要求要設定螢幕保護程式,所以就回報使用螢幕保護程式解決此需求。

PC 比較簡單,基本上隨時都能連上公司檔案伺服器,但是公司有一半以上是 NB ,人都在外面跑,所以變得要寫一個螢幕保護程式來處理。由於不用考慮 Win2k/Win95 ,所以我選擇用 .Net framework 4.0 來開發,這樣 Win 10/8x 可以直接拷貝。

為了方便起見,我直接設定死執行的邏輯:

  1. 每 15 秒換一張圖片
  2. 由本機 %USERPROFILE%\Pictures\[軟體名稱] 載入圖片,由最新圖片往舊圖片撥放,若無圖片,維持黑畫面。
  3. 每次啟動時,撥第二張圖片時,會自動檢查 專用網址產生的 檔案清單。
  4. 比對檔案清單,有新檔下載,移除檔案刪除。
  5. 重新撥放,並持續輪播。

所以有新公告就會第一時間先撥放,然後依序撥放舊的圖片。

參考微軟網址:

https://docs.microsoft.com/zh-tw/troubleshoot/windows/win32/screen-saver-command-line

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms686421(v=vs.85)

序號參數說明
1(無參數)顯示設定對話盒
2/c顯示設定對話盒
3/p <hWnd>在螢幕保護程式設定對話盒的預覽視窗顯示
4/s執行螢幕保護程式
螢幕保護程式的 command line 參數

/c

一開始我在開發測試時,怎樣都無法顯示對話盒,後來透過工作管理員觀察,Win10 的命令列參數根本不是 /c ,而是 /c:nnnnn ,如下圖:

設定畫面
設定畫面

考慮與舊版相容,我在判斷時使用:

Select Case Left(args(0).ToLower, 2)

來判讀。

/p

我在 Windows 預設是 125% (120 DPI) 字型顯示畫面,因此在 VS2019 的 WinForm 預設也變成 125% ,若預設使用 125% ,當透過 Windows API 取得螢幕保護程式設定對話盒時,也要乘上 1.25 才會正確。

Dim rectPreview As RECT

' 取得預覽視窗
rectPreview = GetClientRect(hWndParent)
' 視窗放大 125%
With rectPreview
    .right = 1.25 * .right
    .bottom = 1.25 * .bottom
End With

無參數

無參數我懶得處理,所以我的無參數不會進入 顯示設定對話盒,而是執行螢幕保護程式,若有需要,以後再改,理論上應該不會有人特別直接執行螢幕保護程式。

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

文章分頁導航

One thought on “[VB] 開發螢幕保護程式

  1. 引用通告: [VB] 螢幕保護程式支援多螢幕 | 鄭子璉

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

在 WordPress.com 建立免費網站或網誌.

<span>%d</span> 位部落客按了讚: