首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

用 C# 製作字幕式螢幕保護程式

     編輯:關於C#

.scr 檔本質為 .exe,但具獨特行為:全螢幕無邊框、隱藏工作列。本文示範仿 Windows 內建字幕螢幕保護程式的完整開發流程。

環境

  • Windows 2000 Server
  • .NET Framework SDK 正式版

關鍵步驟

1. 視窗屬性設定符合螢保需求

this.FormBorderStyle = FormBorderStyle.None; // 無邊框
this.ShowInTaskbar = false; // 不顯示工作列
this.WindowState = FormWindowState.Maximized; // 最大化佔滿螢幕

2. 字元持續移動

使用 Timer 驅動 Label (顯示字幕) 移動。每 Tick 遞減 X 座標;移出螢幕左側時重置 X 至右邊,並依當前 Y 位置 (頂/中/底) 循環切換 Y 座標。需先取得 Screen.GetWorkingArea(this) 計算工作區尺寸。

Rectangle ssWorkArea = Screen.GetWorkingArea(this);
lblMarquee.Location = new Point(ssWorkArea.Width - iDistance, lblMarquee.Location.Y);
lblMarquee.Visible = true;
iDistance += speed;
if (lblMarquee.Location.X <= -lblMarquee.Width)
{
    iDistance = 0;
    if (lblMarquee.Location.Y == 0) lblMarquee.Location = new Point(lblMarquee.Location.X, ssWorkArea.Height / 2);
    else if (lblMarquee.Location.Y == ssWorkArea.Height / 2) lblMarquee.Location = new Point(lblMarquee.Location.X, ssWorkArea.Height - lblMarquee.Height);
    else lblMarquee.Location = new Point(lblMarquee.Location.X, 0);
}

3. 偵測鍵盤/滑鼠結束螢保

  • 鍵盤:處理 KeyDown 事件直接結束。
  • 滑鼠:啟動時記錄初始座標 ixStart, iyStart;MouseMove 時比較目前座標,有差異即結束。
if (ixStart == 0 && iyStart == 0) { ixStart = e.X; iyStart = e.Y; return; }
if (e.X != ixStart || e.Y != iyStart) { Cursor.Show(); timerSaver.Enabled = false; Application.Exit(); }

4. 回應 Windows 參數

系統傳遞 /c (設定)、/a (密碼) 參數。本範例無選項,僅彈出訊息並結束。

if (args[0].Substring(0,2).Equals("/c")) { MessageBox.Show("無設定選項"); Application.Exit(); }
else if (args[0] == "/a") { MessageBox.Show("無密碼選項"); Application.Exit(); }

編譯與部署

csc /t:winexe screen.cs

產生 Screen.exe 改名 Screen.scr 複製至 System32 目錄即可在螢幕保護程式設定中選用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved