使用C++/CLI開發自動獲取Windows鎖屏壁紙的小工具

Windows鎖屏壁紙

Windows10目前都會默認使用鎖屏壁紙,有時候會有喜歡的圖片出現,雖然可以手工保存下來,
方法也很簡單,但如果每次都要手工處理,那就會很麻煩。
windows會定期從服務器獲取圖片,放到如下用戶目錄:

C:\Users\%username%\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\

cw5n1h2txyewy是根據某種機制生成的,不同windows版本可能會變(不過現在win10的幾個版本都沒有變),但前面的部分總是固定的。

C:\Users\%username%\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_

每張鎖屏都會有橫、豎兩個版本,windows每次會取回後再根據用戶設備選擇顯示。圖片會保存爲沒有後綴的jpg文件,將這些文件複製出來,更改後綴名爲jpg後就可以看到圖片,還有一些輔助文件並不是圖片,置之不理即可。一般圖片都大於100K,可用文件大小做簡單判斷。

C++/CLI以及實現考慮

C++/CLI作爲託管C++的升級,本就是比較生僻、少有人用的技術,隨着它的後續C++/WinRT的推出,更是黃花中的黃花,幾乎沒有人去用了。但是作爲C++和.net的結合的技術,對於C++開發者來說,可以方便的整合C++代碼和.NET的強大功能,還是很有用處的。比如在這個小工具中可以使用WinForm替代MFC開發界面,效率真是不知高到哪裏去了。

當然這裏用C++/CLI完全沒有必要,直接用C#會更簡單。
爲了練習,可以感受一下C++用.net的便捷性,也可以學習一下CLI的一些特殊語法和用法。
實現的基本思路是:

  • 用WinForm實現設定界面
  • 用NotifyIcon實現系統托盤
  • 用FileSystemWatcher檢測文件夾的變化(圖片文件新增事件檢測)
  • 用Image判斷新增文件是否爲圖片、以及圖片的大小和橫、豎選擇

代碼

代碼本身很簡單,已經放到github上,可以下載。

界面

設定界面
在這裏插入圖片描述

說明

一般情況下只需要設置一下複製目錄,點擊[Start Monitor]即可。

  • 監測目錄默認設置爲鎖屏壁紙所在目錄,一般不需要修改,當然可以手工更改
  • 當程序運行後,如果有新鎖屏壁紙出現,就可以根據用戶的要求(大小、橫屏、豎屏)等將符合要求的圖片複製到指定目錄
  • 如果設置了自動啓動,會在電腦啓動後就自動運行
  • 點擊Minimize後,程序縮小到系統托盤,雙擊托盤圖標或右鍵菜單可再次顯示設定界面
  • 右鍵點擊系統托盤圖標,在菜單出選擇退出即可退出程序
  • 抓取到的圖片數(如果有)會顯示在界面下方,並且會彈出windows氣泡進行提示
  • 複製目錄需要事先建好,如果設定成爲桌面壁紙目錄,就可以實現將鎖屏壁紙當做桌面壁紙的自動化

抓取結果

在這裏插入圖片描述
簡單、好用。

zip下載

不願意自己編譯的朋友,可以直接下載下面的zip文件,解開雙擊exe即可直接使用。
(需要安裝.net framework 4.0以上)
https://download.csdn.net/download/ydogg/11975205

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章