備忘録

備忘録

exe ファイルのアイコンをコマンドラインで変更する方法

Ⅰ. はじめに

タイトルの通り「exe ファイルのアイコンをコマンドラインで変更する方法」です。

Ⅱ. やり方

1. rcedit を clone する
git clone https://github.com/electron/rcedit
2. rcedit.sln を開き、ビルドする

GitHub の Releases にアップロードされている exe ファイルは古いので自分で最新版をビルドします。
※私の環境では古い物でアイコンを変更することが出来ませんでした。

3. アイコンを変更する
rcedit "MyApp.exe" --set-icon "icon.ico"

Go で chromedp を利用して Chrome を操作する方法

Ⅰ. はじめに

タイトルの通り「Go で chromedp を利用して Chrome を自動操作する方法」です。

Ⅱ. やり方

1. ライブラリをインストールする
go get github.com/chromedp/chromedp
2. サンプルプログラムを書く
package main

import (
  "context"
  "log"
  "time"

  "github.com/chromedp/chromedp"
)

func main() {
  allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), []chromedp.ExecAllocatorOption{
    chromedp.NoFirstRun,
    chromedp.NoDefaultBrowserCheck,
    chromedp.DisableGPU,
    // chromedp.NoSandbox,
    // chromedp.Headless,

    chromedp.Flag("disable-infobars", true),
  }...)
  defer cancel()

  ctx, cancel := chromedp.NewContext(allocCtx, chromedp.WithLogf(log.Printf))
  defer cancel()

  ctx, cancel = context.WithTimeout(ctx, 15*time.Second)
  defer cancel()

  var value string
  var attributes map[string]string
  err := chromedp.Run(ctx,
    chromedp.Navigate("https://example.org/"),
    chromedp.WaitVisible("/html/body/div/h1"),
    // innerHTML を取得する
    chromedp.InnerHTML("/html/body/div/h1", &value),

    // 属性を取得する
    chromedp.Attributes("/html/body/div/p[2]/a", &attributes),

    // chromedp.Value("xpath", &value),
    // chromedp.Click("xpath"),
    // chromedp.SendKeys("xpath", "hoge"),
  )
  if err != nil {
    log.Fatal(err)
  }

  log.Printf("h1 innerHTML = %s", value)
  log.Printf("a href = %s", attributes["href"])
}

実行結果

h1 innerHTML = Example Domain
a href = http://www.iana.org/domains/example

Windowsでテキストファイル新規作成時の表示名を変更する方法

Ⅰ. はじめに

タイトルの通り「Windowsでテキストファイル新規作成時の表示名を変更する方法」です。

Ⅱ. やり方

1. レジストリエディタで以下パスを開く
HKEY_CLASSES_ROOT\Local Settings\MuiCache
2. 以下のキーを探す
@C:\Windows\system32\notepad.exe,-469
3. 任意の値に書き換える

f:id:kagasu:20190910080443p:plain

実行結果

f:id:kagasu:20190910080615p:plain

Ⅲ. その他

留意点

この記事で紹介した方法はキャッシュを変更するだけなので、未知のタイミングで初期化される場合があります。

ファイルを素早く作成する方法
右クリック → X → T

または

メニューキー → X → T

C#でFCMを利用してPUSH通知を送信する方法

Ⅰ. はじめに

タイトルの通り「C#でFCMを利用してPUSH通知を送信する方法」です。
※FCM = Firebase Cloud Messaging

Ⅱ. やり方

1. 必要なパッケージをNuGetからインストールする
dotnet add package FirebaseAdmin --version 2.3.0
2. Firebase サービスアカウントの秘密鍵(serviceAccountKey.json)をダウンロードする


3. サンプルプログラムを書く
using FirebaseAdmin;
using FirebaseAdmin.Messaging;
using Google.Apis.Auth.OAuth2;

var app = FirebaseApp.Create(new AppOptions()
{
  Credential = GoogleCredential.FromFile("serviceAccountKey.json")
});

var fcm = FirebaseMessaging.GetMessaging(app);

var message = new Message()
{
  Notification = new Notification
  {
    Title = "title",
    Body = "body"
  },
  Data = new Dictionary<string, string>
  {
    ["key001"] = "value001",
    ["key002"] = "value002"
  },
  Token = "token",
};

await fcm.SendAsync(message);

実行結果


Goでスクリーンショットを撮る方法

Ⅰ. はじめに

タイトルの通り「Goでスクリーンショットを撮る方法」です。

Ⅱ. やり方

1. ライブラリをインストールする
go get github.com/kbinani/screenshot
2. サンプルプログラムを書く
package main

import (
  "image/png"
  "os"

  "github.com/kbinani/screenshot"
)

func main() {
  bounds := screenshot.GetDisplayBounds(0)
  img, _ := screenshot.CaptureRect(bounds)

  file, _ := os.Create("out.png")
  defer file.Close()
  png.Encode(file, img)
  // jpeg.Encode(file, img, &jpeg.Options{Quality: 80})
}

実行結果

out.png が出力された
f:id:kagasu:20190830085448p:plain