みかづきメモ

プログラミング学習帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ

Windows で壁紙が変更されたことを知りたい

壁紙が変更されたことを検知して、何かしたい!って場面に遭遇したので簡単に残しておきます。
Microsoft.Win32.SystemEvents.UserPreferenceChanged は DPI の調整などでも発動するので、
それ以外の方法で知る必要があります。

そこで、 ManagementEventWatcher を使います。
こんな感じで、デスクトップ画像が何かしら変わったら e.Dump() が実行されます。

using System.Management;
using System.Security.Principal;
using System.Threading.Tasks;

async Task Main()
{
    var watcher = new ManagementEventWatcher();
    var identity = WindowsIdentity.GetCurrent();

    var hive = "HKEY_USERS";
    var path = $@"{identity.User.Value}\\Control Panel\\Desktop";
    var name = "wallpaper";
    watcher.Query = new EventQuery($"SELECT * FROM RegistryValueChangeEvent WHERE Hive = '{hive}' AND KeyPath = '{path}' AND ValueName = '{name}'");
    watcher.EventArrived += (sender, e) => e.Dump();
    watcher.Start();
    
    await Task.Delay(1000 * 30); // wait for 30sec
    
    watcher.Stop();
}

レジストリ的には HKEY_CURRENT_USER から辿れば良いのですが、クエリには使えないようなので、
WindowsIdentity からユーザーのキーを取得して、フルパスでアクセスしに行っています。

ちなみにレジストリは大文字小文字認識しないようですね。

ということで久しぶりの記事でした。では~٩( 'ω' )۶

ローカルで GitHub Actions 開発をやりたい!

GitHub Actions をちまちま作っているのですが、いちいち push などをせずにローカル環境で
開発する方法みたいなのが見つからなかったので書いておきます。
(そもそも GitHub Actions を作っている人があまりいなさそうだけど...)

続きを読む

Pixela と Azure Functions で日々の SNS への投稿数を記録したい

2018年11月中旬頃から、 Misskey への日々の投稿数を Pixela に記録しているので、
私はこうやりました!という記事です。
普段はあまりしない自作の成果物の宣伝もあるけど許してネ。

続きを読む

人生で初めてアドベントカレンダーに参加してみた感想

某社のアドベントカレンダーに寄稿したので、それの感想みたいなのを。
技術記事ではないけども、まあ分類としてはこっちかなということでこちらに。

続きを読む