HeyCHのブログ

慢性疲労のへいちゃんです

【C#】タスクトレイに常駐するアプリの作り方(.NET5もOK)

今、ミストトレインガールズ(X指定)っていうゲームをやっていて、基本放置でアイテムや経験値を稼ぐようになっている。
ずーっと放置できれば良いんだけど、毎朝5時にスタート画面に戻されてしまう。
リスタートして再び放置するのはちょっと難しすぎるので、5時ちょい過ぎにPCの電源を落とすアプリを作ることにしました。
ウィンドウをずっと表示していると邪魔なので、タスクトレイに常駐するアプリとすることにしました。

アイコンの作成

タスクトレイに常駐させる場合、NotifyIconというものを使うのですが、自前のアイコンがあったほうが良いよねって事で作ります。
僕の場合、GIMP2をインストールして、32×32で作りました。(マルチサイズのアイコンも作れるっぽいですが面倒(技術が無い)なので1つだけ)

f:id:HeyCH:20210709144642p:plain
PNGなのでICOに変更する必要有り

※ここでは「Shutdowner.ico」という名前で保存したこととする。

アプリ作成

  • Visual Studio を起動
  • 新しいプロジェクトの作成
  • テンプレートでWindowsフォームアプリ(ここでは.NET5用)を選択して「次へ」
  • 適当な名前を付けて「次へ」(ここでは「Shutdowner」とする)
  • ターゲットフレームワーク(ここでは.NET5)を選択して「作成」

作成したアイコンをリソースに入れる

  • プロジェクト(適当に付けた名前)を右クリックして「プロパティ」を表示
  • 「リソース」を選択し、「このプロジェクトには規定のリソースが含まれていません。ファイルを作成するには、ここをクリックしてください。」をクリック
  • この画面に先ほど作ったアイコンをドラッグ&ドロップ

Program.csの編集

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Shutdowner {
    static class Program {
        static NotifyIcon nicon;
        /// <summary>
        ///  The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() {
            //元からあるコードはコメントアウト
            //Application.SetHighDpiMode(HighDpiMode.SystemAware);
            //Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new Form1());

            nicon = new NotifyIcon();
            nicon.Icon = Shutdowner.Properties.Resources.Shutdowner;
            nicon.Text = "ツールチップに表示されるテキスト";
            nicon.Visible = true;

            Application.Run();
        }
    }
}

ついでにアプリのアイコンも設定しちゃう

  • プロジェクトのプロパティで「アプリケーション」を選択
  • アイコンとマニフェストの「アイコン」から「Resources\Shutdowner.ico」を選択

これでビルドすれば、EXEファイルのアイコンと起動したときにタスクトレイに表示されるアイコンが「Shutdowner.ico」になる
※EXEから起動した場合、今のところ終了する処理がないのでデバッグで実行した方が良い(タスクマネージャーから終了すれば良いけど)

PCでInstagramを見る時のためのChrome拡張機能

PCでInstagramを見てるとき、「画像小さいな」とか「この画像(動画)ダウンロードしたいな」とか思う事ありませんか?

え?思わない?…じゃぁもういいです…。

でも、僕は思ったんでChrome拡張機能として作りました!!

ですが、拡張機能公開にはお金払わないといけないみたいなので、ソースコードの公開とそれを使ったChromeへのインストール方法を紹介します。

インストール方法

  1. https://github.com/Hey-CH/InstaSrcOpenerにアクセス
  2. 「Code」ボタンを押して「Download ZIP」を選択
  3. ダウンロードしたZIPファイルを解凍(ZIPファイルと同じ場所に「InstaSrcOpener-master」フォルダができるとする)
  4. できた「InstaSrcOpener-master」(フォルダ内にもう1個「InstaSrcOpener-master」フォルダがある場合はそれ)を、邪魔にならない場所にコピーして「InstaSrcOpener」(別に何でも良いけど)に名前変更する
  5. Chromeを起動し、右上にあるパズルのピースのような形の「拡張機能」ボタンを押す
  6. 右上に「デベロッパーモード」のスイッチがあるのでONにする(「パッケージ化されていない拡張機能を読み込む」ボタンが表示されればOK)
  7. 「パッケージ化されていない拡張機能を読み込む」ボタンを押し、先ほどコピーした「InstaSrcOpener」を選択

使い方

  1. ChromeInstagramにアクセス
  2. タイムラインから「投稿へ移動」したり、検索結果をクリックしたりして「投稿とコメントが表示されている状態」にする
  3. 右クリックして「InstaOpen」をクリック(表示されていなければバグ)
  4. 新しいタブに画像や動画が表示される

制限事項

  • 動画は最初の1個だけ表示(複数投稿されているものが確認できなかったため)
  • 動画でsrcが「blob:」で始まるものは表示できないため無視
  • 複数投稿(画像)されている場合、全部は表示できない(自分でクリックしてもらい複数回「InstaOpen」を押してもらう必要がある)