diff --git a/src/livelywpf/livelywpf/Properties/Resources.zh-Hant.resx b/src/livelywpf/livelywpf/Properties/Resources.zh-Hant.resx
index 133c329e..e7a8d12f 100644
--- a/src/livelywpf/livelywpf/Properties/Resources.zh-Hant.resx
+++ b/src/livelywpf/livelywpf/Properties/Resources.zh-Hant.resx
@@ -117,9 +117,33 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 線上討論社群
+
+
+ API 文件和幫助
+
+
+ Lively 動態桌布遇到了致命錯誤。
+
+Windows 檔案總管在最近30秒內重新啟動了兩次!這也許是 Lively 動態桌布與其他桌面自訂軟體或 Windows 的衝突造成的。為了防止出現更多問題,所有桌布已被終止。
+
偵測到不相容軟體,工具列主題已禁用。
+
+ Lively 動態桌布官方網站
+
+
+ 大多數現代 LCD 和 LED 顯示器都不會出現老化問題,因此任何桌布都可以用作螢幕保護程式。
+
+對於容易老化的 OLED、電漿或 CRT 顯示器,建議使用有規律運動的動態桌布和深色整體主題,以減輕殘影;但此功能未經測試,無法保證其有效性。
+
+Lively 動態桌布的螢幕保護程式主要用於為您的電腦新增另一層客製化可能性,使用螢幕保護程式作為老化保護手段請自行承擔風險!
+
+
+ 回報軟體問題
+
選取一個檔案或指定一個網站以設定為桌布。
@@ -141,13 +165,13 @@
你正在開啟一個外部應用程式作為桌布。
有害應用程式可能包含綑綁軟體,病毒.. 而且損壞你的作業系統。
-請只在你信任此應用程式的來源時繼續。
+請僅在你信任此應用程式的來源時繼續。
- Lively 已最小化至系統工具列,右鍵點擊 Lively 的圖示以存取更多選項。
+ Lively 已最小化至系統匣,右鍵點擊 Lively 動態桌布的圖示以存取更多選項。
- 請重新啟動 Lively 以使設定生效。
+ 請重新啟動 Lively 動態桌布以使設定生效。
繼續操作前請停止桌布。
@@ -168,11 +192,18 @@
輸入網站連結以載入,支援來自 shadertoy.com 的著色器連結
- 我將幫助您開始設定 Lively。
+ 此精靈將幫助你開始設定 Lively 動態桌布。
你的 Windows N/KN 版本將需要下載附加解碼元件以支援桌布的影片播放。
+
+ 為開發人員購買咖啡以示支持
+
+
+ 您即將變更為 Beta (開發人員) 版。
+更新將會很頻繁,並且可能包含漏洞!
+
更新失敗;請嘗試從以下位址下載安裝程式:
https://github.com/rocksdanister/lively/releases
@@ -181,7 +212,7 @@ https://github.com/rocksdanister/lively/releases
桌布檔案已損毀,請嘗試重新下載。
- 糟糕...好像出了點問題 :(
+ 糟糕... 好像出了點問題 :(
為了更好地理解此錯誤並解決問題,請與開發人員分享日誌檔。
分享日誌檔的說明:
https://github.com/rocksdanister/lively/wiki
@@ -206,15 +237,15 @@ https://github.com/rocksdanister/lively/wiki
您是否要還原之前運作的動態桌布?
- 看起來需要進行一些設定才能使 Lively 正常工作:
-1. 按 Win + R 鍵以開啟執行,
-2. 輸入 SystemPropertiesPerformance.exe,點擊 "確定" 以開啟效能選項。
-3. 啟用/選定 "在視窗內部以動畫方式顯示控制項和元素" (如果已經選定,請反選然後再次選定) 並套用。
-4. 點擊 "套用" 然後點擊 "確定" 以關閉視窗。
+ 看起來需要進行一些設定才能使 Lively 動態桌布正常工作:
+1. 按 Win + R 快速鍵以開啟「執行」,
+2. 輸入「SystemPropertiesPerformance.exe」,點選「確定」以開啟「效能選項」。
+3. 啟用/選定「在視窗內部以動畫方式顯示控制項和元素」(如果已經選定,請反選然後再次選定) 並套用。
+4. 點選「套用」然後點按「確定」以關閉視窗。
如果是 Windows 7 作業系統只需設定 - "調整成最佳外觀" 然後套用。
如果仍無法正常工作, 請關閉並重新啟動 Lively / Windows。
-(在部分 Windows 10 預覽版構建中無法正常工作)
+(在部分 Windows 10 預覽人員組建中無法正常工作)
新增
@@ -240,6 +271,9 @@ https://github.com/rocksdanister/lively/wiki
取消
+
+ 變更桌布
+
關閉
@@ -250,7 +284,7 @@ https://github.com/rocksdanister/lively/wiki
已完成!
- 點擊此處以管理桌布。
+ 點選此處以管理桌布。
轉換為影片
@@ -289,25 +323,28 @@ https://github.com/rocksdanister/lively/wiki
退出
- 匯出 Lively .zip
+ 匯出為 Lively 動態桌布 .zip 檔
- 一些功能在此版本 Lively 中不可用。
+ 一些功能在此版本 Lively 動態桌布中不可用。
找不到檔案
- 動態 GIF
+ GIF 動畫
- 給予 Star 來顯示你對本軟體的喜愛吧
+ 給予 Star 以顯示你對本軟體的喜愛
開始
- 幫助翻譯 Lively
+ 幫助翻譯
+
+
+ 小時
安裝
@@ -315,9 +352,18 @@ https://github.com/rocksdanister/lively/wiki
鍵盤
+
+ 最後檢查
+
+
+ 了解更多
+
授權
+
+ 分鐘
+
資訊
@@ -334,13 +380,13 @@ https://github.com/rocksdanister/lively/wiki
繼續
- 不
+ 否
關閉
- 確定
+ 是
開啟
@@ -354,6 +400,9 @@ https://github.com/rocksdanister/lively/wiki
所有處理程序
+
+ Direct3D
+
前景處理程序
@@ -403,16 +452,22 @@ https://github.com/rocksdanister/lively/wiki
來源
- 開始
+ 啟動
- 結束
+ 停止
- 你享受使用 Lively 嗎?請留下評論 :)
+ 你享受使用 Lively 動態桌布嗎?請留下評論 :)
- 支持
+ 支援開發
+
+
+ 切換至 Beta 版 (開發頻道)
+
+
+ 切換至穩定版 (預設頻道)
標籤
@@ -430,7 +485,7 @@ https://github.com/rocksdanister/lively/wiki
平滑
- 桌布
+ 桌布取色
平滑(桌布取色)
@@ -541,7 +596,7 @@ https://github.com/rocksdanister/lively/wiki
桌布音量等級。
- (僅適用於可充電裝置) 變更斷開交流電源後的播放行為。
+ 變更斷開交流電源後的播放行為。
輸入用於除錯網頁桌布的連接埠,需要重新啟動瀏覽器以使改動生效。
@@ -554,8 +609,7 @@ https://github.com/rocksdanister/lively/wiki
設定動態桌布的一個畫面作為桌面背景。
- 獨立:僅在有應用程式處於 焦點/全螢幕 狀態的螢幕上暫停動態桌布。
-所有:如果任何應用程式已進入 焦點/全螢幕 模式,則在所有螢幕上暫停動態桌布。
+ 選擇在所有螢幕暫停桌布,或是僅在應用程式取得焦點\全螢幕運作的相關螢幕上如此操作。
建立日誌回報檔。
@@ -564,10 +618,10 @@ https://github.com/rocksdanister/lively/wiki
選取用於 GIF 桌布的播放器。
- 系統工具列中圖示的可見性,Lively 將在隱藏圖示的情況下繼續運作。
+ 系統工具列中圖示的可見性,Lively 動態桌布將在隱藏圖示的情況下繼續運作。
- 將 Lively 重新啟動以套用新語言。
+ 將 Lively 動態桌布重新啟動以套用新語言。
完成初始設定以繼續。
@@ -576,8 +630,16 @@ https://github.com/rocksdanister/lively/wiki
設定動態桌布的一個畫面作為鎖定螢幕背景。
- 前景處理程序:更輕量,僅偵測前景中的單個處理程序來確定桌布播放行為。
-所有處理程序:更多負載,掃描所有處理程序以確定播放行為。
+ 桌布暫停演算法。
+
+
+ 當 Windows 省電模式啟用時變更播放行為。
+
+
+ 當遠端桌面工作階段啟用時變更播放行為。
+
+
+ 在選定非活躍時段後,使用目前桌布作為螢幕保護程式。
如果偵測到受支援的影片串流連結,將使用影片播放器,而不是載入網頁。
@@ -585,6 +647,9 @@ https://github.com/rocksdanister/lively/wiki
選取你想要的線上影片品質。
+
+ 將軟體版本從 Beta 版更改為穩定版,或是相反。
+
改變系統工作列外觀。
@@ -665,7 +730,10 @@ Edge 是 Windows 10 的內建網頁渲染器。
瀏覽影片,GIF,網頁...檔案設定為桌布
- 除錯連接埠
+ 除錯埠
+
+
+ 更新日誌
社群
@@ -739,6 +807,12 @@ Edge 是 Windows 10 的內建網頁渲染器。
請稍候
+
+ 當處於省電模式
+
+
+ 當處於遠端桌面
+
回報 Bug
@@ -748,6 +822,12 @@ Edge 是 Windows 10 的內建網頁渲染器。
控制台
+
+ 螢幕保護程式
+
+
+ 恢復工作階段後,顯示登入螢幕
+
選取檔案
@@ -785,6 +865,9 @@ Edge 是 Windows 10 的內建網頁渲染器。
使用者介面
+
+ 更新
+
影片
@@ -828,74 +911,6 @@ Edge 是 Windows 10 的內建網頁渲染器。
載入網頁
- 隨 Windows 開機啟動
-
-
- 螢幕保護程式
-
-
- 在選定的非活動時長後設定當前桌布為你的螢幕保護程式。
-
-
- 小時
-
-
- 分鐘
-
-
- 了解更多
-
-
- 大多數現代 LCD 和 LED 顯示器都不會出現老化問題,因此任何桌布都可以用作螢幕保護程式。
-
-對於容易老化的 OLED、電漿或 CRT 顯示器,建議使用有規律運動的動態桌布和深色整體主題,以減輕老化;但此功能未經測試,無法保證其有效性。
-
-Lively 動態桌布的螢幕保護程式主要用於為您的電腦新增另一層客製化可能性,使用螢幕保護程式作為老化保護手段請自行承擔風險!
-
-
- 更換桌布
-
-
- 上次檢查
-
-
- 更新
-
-
- 線上社群
+ 隨 Windows 啟動
-
- API 文件和幫助
-
-
- 官方網頁
-
-
- 報告軟體問題
-
-
- 為開發人員購買咖啡以示支持
-
-
- 您即將變更為 Beta (開發人員) 版。
-更新會很頻繁,並且可能包含錯誤!
-
-
- 變更至 Beta 版 (開發頻道)
-
-
- 變更至穩定版 (預設頻道)
-
-
- 將軟體版本從 Beta 版變更為穩定版,反之亦然。
-
-
- 更新日誌
-
-
- Direct 3D
-
-
- 在恢復後顯示登入介面
-
diff --git a/src/livelywpf/livelywpf/Views/WndProcMsgWindow.xaml.cs b/src/livelywpf/livelywpf/Views/WndProcMsgWindow.xaml.cs
index c57916b5..a424cb8c 100644
--- a/src/livelywpf/livelywpf/Views/WndProcMsgWindow.xaml.cs
+++ b/src/livelywpf/livelywpf/Views/WndProcMsgWindow.xaml.cs
@@ -20,6 +20,7 @@ namespace livelywpf
public partial class WndProcMsgWindow : Window
{
private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
+ private int prevExplorerPid = GetTaskbarExplorerPid();
private DateTime prevCrashTime = DateTime.MinValue;
public WndProcMsgWindow()
@@ -46,23 +47,29 @@ private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref b
}
else if (msg == NativeMethods.WM_TASKBARCREATED)
{
- //explorer crash detection, new taskbar is created everytime explorer is started..
Logger.Info("WM_TASKBARCREATED: New taskbar created.");
- if ((DateTime.Now - prevCrashTime).TotalSeconds > 30)
+ int newExplorerPid = GetTaskbarExplorerPid();
+ if (prevExplorerPid != newExplorerPid)
{
- SetupDesktop.ResetWorkerW();
+ //Explorer crash detection, dpi change also sends WM_TASKBARCREATED..
+ Logger.Info($"Explorer crashed, pid mismatch: {prevExplorerPid} != {newExplorerPid}");
+ if ((DateTime.Now - prevCrashTime).TotalSeconds > 30)
+ {
+ SetupDesktop.ResetWorkerW();
+ }
+ else
+ {
+ //todo: move this to core.
+ Logger.Warn("Explorer restarted multiple times in the last 30s.");
+ _ = Task.Run(() => MessageBox.Show(Properties.Resources.DescExplorerCrash,
+ $"{Properties.Resources.TitleAppName} - {Properties.Resources.TextError}",
+ MessageBoxButton.OK, MessageBoxImage.Error));
+ SetupDesktop.TerminateAllWallpapers();
+ SetupDesktop.ResetWorkerW();
+ }
+ prevCrashTime = DateTime.Now;
+ prevExplorerPid = newExplorerPid;
}
- else
- {
- //todo: move this to core.
- Logger.Warn("Explorer restarted multiple times in the last 30s.");
- _ = Task.Run(() => MessageBox.Show(Properties.Resources.DescExplorerCrash,
- $"{Properties.Resources.TitleAppName} - {Properties.Resources.TextError}",
- MessageBoxButton.OK, MessageBoxImage.Error));
- SetupDesktop.TerminateAllWallpapers();
- SetupDesktop.ResetWorkerW();
- }
- prevCrashTime = DateTime.Now;
}
else if (msg == (uint)NativeMethods.WM.QUERYENDSESSION && Program.IsMSIX)
{
@@ -77,5 +84,15 @@ private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref b
return IntPtr.Zero;
}
+
+ #region helpers
+
+ private static int GetTaskbarExplorerPid()
+ {
+ _ = NativeMethods.GetWindowThreadProcessId(NativeMethods.FindWindow("Shell_TrayWnd", null), out int pid);
+ return pid;
+ }
+
+ #endregion //helpers
}
}
diff --git a/src/livelywpf/livelywpf/livelywpf.csproj b/src/livelywpf/livelywpf/livelywpf.csproj
index a352eed9..7772bccd 100644
--- a/src/livelywpf/livelywpf/livelywpf.csproj
+++ b/src/livelywpf/livelywpf/livelywpf.csproj
@@ -10,7 +10,7 @@
livelywpf.Program
appicon.ico
1.0.0
- 1.7.2.0
+ 1.7.2.2
@@ -29,10 +29,10 @@
-
+
-
+