Xamarin.Macで、アプリケーションの多重起動をチェックするには

NSRunningApplicationクラスのGetRunningApplications()メソッドは、起動している指定したバンドルIDのアプリケーションの配列(NSRunningApplication[])を返します。

public override void DidFinishLaunching(NSNotification notification)
{
    var apps = NSRunningApplication.GetRunningApplications(NSBundle.MainBundle.BundleIdentifier);
    if (apps.Length > 1)
    {
        Console.WriteLine($"アプリケーションはすでに起動しています。");
        NSApplication.SharedApplication.Terminate(this);
    }
}

サンプルプログラム

Githubからサンプルプログラムをダウンロードできます。

すでにアプリケーションが起動しているときはコンソールにメッセージを出力して、アプリケーションを終了します。

macOSにRubyをインストールする

rbenvを使って、rubyをインストールする手順をまとめました。

目次

  1. Homebrewをインストールする
  2. rbenvのインストール
    1. rbenvのインストール
    2. rbenvの初期設定
    3. インストールできるrubyのバージョンを調べる
      4.ruby 2.5.3をインストールする
    4. インストールされているrubyのバージョンを表示する
    5. 使用するrubyを切り替える

1.Homebrewをインストールする

rbenvをインストールするために必要なHomebrewをインストールする。

インストールの欄に記述されているコマンドを実行する。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

正しくインストールされたことを確認する

brew -v

バージョンが表示されたら正常にインストールされている。

Homebrew 1.8.4

2.rbenvのインストール

rbenvのサイトにインストール方法が書かれている。

2.1.rbenvのインストール

次のコマンドを実行して、rbenvをインストールする。

brew install rbenv

2.2.rbenvの初期設定

次のコマンドを実行する。

rbenv init

以下のようなコマンドが表示される。

# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

表示されたコマンド eval “$(rbenv init -)” を.bash_profileに追記する。

vim ~/.bash_profile

sourceコマンドを実行して、.bash_profileを読み直す。

source ~/.bash_profile

rbenv-doctorスクリプトを使用してrbenvが正しくセットアップされていることを確認する。

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

次のような表示であればインストールは成功している。

Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20181019)
Counting installed Ruby versions: 1 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK

2.3.インストールできるrubyのバージョンを調べる

次のコマンドを実行する。

rbenv install -l

インストール可能なバージョンが表示される。

2.4.ruby 2.5.3をインストールする

次のコマンドを実行して、ruby 2.5.3をインストールする。

rbenv install 2.5.3

インストールしたバージョンを使用できるようにするため、次のコマンドを実行します。

rbenv rehash

2.5.インストールされているrubyのバージョンを表示する

次のコマンドを実行する。

rbenv versions

インストールされているバージョンが表示される。

* system (set by /Users/yamamototakashi/.rbenv/version)
2.5.3

「*」がついているバージョンが使用されるバージョンになる。

2.6.使用するrubyを切り替える

使用するrubyをバージョン 2.5.3に切り替える。

rbenv global 2.5.3

rubyのバージョンを確認する。

ruby -v

設定したバージョンになっている。

ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin18]

Xamarin.Macで、NSScrollViewのスクロールのイベントを取得するには

NSScrollViewにはスクロールのイベントはありません。

NSScrollViewのスクロールのイベントを取得するには、NSScrollViewのContentViewの”NSViewBoundsDidChangeNotification”の通知を受け取ります。

NSNotificationCenter.DefaultCenter.AddObserver(
    new NSString("NSViewBoundsDidChangeNotification"),
    (NSNotification notification) =>
    {
        var contentView = notification.Object as NSClipView;
        var location = contentView.Bounds.Location;
        Label.StringValue = new NSString($"location X:{location.X} Y:{location.Y}");
    },
    ScrollView.ContentView);

サンプルプログラム

Githubからサンプルプログラムをダウンロードできます。

Xamarin.Macでマウスカーソルの座標と押されているボタンを取得するには

マウスの座標を取得するには

マウスの座標はNSEventクラスのCurrentMouseLocationプロパティで取得します。

座標が画面座標になります。画面の左下の座標が(X:0, Y:0)になります。

var location = NSEvent.CurrentMouseLocation;

押されているマウスのボタンを取得するには

押されているマウスのボタンはNSEventクラスのCurrentPressedMouseButtonsプロパティで取得します。

var buttons = NSEvent.CurrentPressedMouseButtons;

サンプルプログラム

サンプルプログラムはGithubからダウンロードできます。

Xamarin.Macで、マウスの座標と押されているマウスのボタンを取得するサンプルアプリケーションです。

更新ボタン(またはcontrol+Aキー)を押すと、その時のマウスの座標と押されているマウスのボタンを表示します。