EmpressiaLibrary 1.0.17.1

Empressia Library.

Install-Package EmpressiaLibrary -Version 1.0.17.1
dotnet add package EmpressiaLibrary --version 1.0.17.1
<PackageReference Include="EmpressiaLibrary" Version="1.0.17.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EmpressiaLibrary --version 1.0.17.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Empressia Library

このライブラリは、.NETFramework用のライブラリです。
主に自分用です。

中身の一覧とかメモ

以下を使用できます。

  1. ex だいたい名前の通りの追加クラスたち。
    1. ByteQueue
    2. BytesKeyDirectory
    3. EDictionary XMLで保存するための拡張されたDictionary。
    4. EndlessStream
    5. ExceptionEventArgs
    6. EXMLSerializeer XMLを簡単にSerialize、Deserializeするためのクラス。
    7. ExtensionMethods いろんな基本的なクラスの拡張メソッドが入っている静的クラス。
    8. MessageEventArgs
    9. NetworkBitConverter
    10. StreamUtilities 二つのStreamが一致している前提で確認をするメソッドがあります。
  2. setting アプリケーションの設定用……だけど、使いにくいかも?
    1. SettingNode
    2. SettingSerializer
    3. SettingTree
    4. SettingMergable
  3. ui WPF用のコンポーネントです。
    1. converter WPF用のConverterです。
      1. BoolReverseConverter
      2. BoolsToVisibilityConverter 複数の真偽値から表示するかどうかを切り替えるConverter。
      3. BoolToVisibilityConverter
      4. DateTimeToStringConverter
      5. EnumContainsConverter
      6. EnumToVisibilityConverter
      7. Int32ToVisibilityConverter
      8. VisibilityToBoolConverter
    2. win32
      1. WPFWindowManager ウィンドウ管理。点滅させるとか。
    3. ClassNameDataTemplateSelector バインドされるデータのクラス名でDataTemplateを切り替えるSelector。
    4. ERibbonWindow 古いです。EWindowSupporterを使ってください。
    5. EWindow 古いです。EWindowSupporterを使ってください。
    6. EWindowSupporter Windowの表示位置とかを自動で記録するための補助クラス。
    7. ImageButton 前景と背景を指定できる画像ボタン。
    8. SettingWindow 設定用のWindow。
    9. SimpleInputWindow シンプルな入力Window。
  4. win32 Win32 APIの適当なWrapperです。
    1. AVIManager よくわからない。
    2. DisplayManager 画面管理。
    3. DisplayPowerManager 電源管理。
    4. HookManager Windowメッセージのフック管理。
    5. KeyboardManager キーボード管理。
    6. SystemTrayManager システムトレイ管理。
    7. WindowManager ウィンドウ管理。

StreamUtilities

何をするの?

今は、メソッド1個だけ。
ふたつのStreamの中身の値が一致していることを確認します。

どういうとき使うの?

二つのファイルが同じはずだけど本当に同じか確認するときとか。
異なる想定じゃなくて、同じはずっていう想定で組まれています。

使い方

次みたいな感じで使います。

using(FileStream s1 = new FileStream("s1.png", FileMode.Open, FileAccess.Read))
using(FileStream s2 = new FileStream("s2.png", FileMode.Open, FileAccess.Read)) {
    if(StreamUtilities.containsSameBytes(s1, s2)) {
        Console.WriteLine("一致しました。");
    }
}

HookManager

何をするの?

Windowsメッセージを簡単にフックするためのクラス。

どういうとき使うの?

システム上で起こるキーボードとマウスの入力を読み取りたい時に使います。
クリック、とかじゃなくて、ボタンを押した離したっていう感じです。

使い方

今のところの想定は、次みたいな感じ。

using(KeyboardGlobalSession session = HookManager.createKeyboardGloalSession()) {
    session.Hook += (code, wParam, lParam) => {
        // 変換もフィルターも関係なく処理したいとき用。たぶん、使わない。
    };
    session.HandleFilter += (code, wParam, lParam) => {
        // Handleを呼ばないようにフィルターしたいとき用の処理。wParamで間引きたいとき用。trueを返すとHandleが呼ばれなくなる。
    };
    session.Handle += (message, info) => {
        // イベント処理。
    };
    // ここで止めるとか。
    // 別に、ちゃんと解放処理入れてあるから、usingじゃなくてもDisposeされる限り平気だけど。
    // アプリケーション終わって自動で解放されるときでも良いんだけど。
    // いらなくなったら、すぐに解放しないとね。重要なリソースだし。
}

WindowManager

何をするの?

Windowの情報を得ます。

どういうとき使うの?

ウィンドウのプロセスID、タイトルとかがほしいとき……かな。

使い方

今のところの想定は、次みたいな感じ。

WindowInformation info = WindowManager.getForegroundWindow();
if(info == null) { return; }
Console.WriteLine(info.TitleText);
Console.WriteLine(info.ProcessID);
Console.WriteLine(info.ModuleFilePath);

トラブルシュート

WindowManagerでModuleFilePathがとれないんだけど。

アプリのビルドがx86になっているか、AnyCPUで32ビット優先の設定になっていないか確認しましょう。


最近の更新履歴

  • 2018/05/19 1.0.17.1
    • HookManagerを拡張しました。
  • 2018/05/14 1.0.17.0
    • 一部のuintになっていたインターフェースをintに修正しました。
  • 2018/05/13 1.0.16.6
    • WindowsのMessageの一部のメソッド定義が謝っていた問題を修正しました。
  • 2018/05/13 1.0.16.5
    • WindowsのMessageを発行するためのメソッドなどを追加しました。
  • 2018/05/05 1.0.16.4
    • HookManager付近の定数のアクセシビリティを変更しました。
  • 2018/05/04 1.0.16.3
    • WindowManager関連のメソッドを増やしました。
  • 2018/05/03 1.0.16.1
    • 定数定義を増やしました。
  • 2018/05/03 1.0.16.0
    • KeyboardManagerあたりを変更しました。
  • 2018/05/02 1.0.15.0
    • MSLLHOOKSTRUCTのフィールドとプロパティを変更しました。
  • 2018/05/01 1.0.14.5
    • WindowManagerで位置とサイズをとれるようにしました。
  • 2018/05/01 1.0.14.4
    • WindowManagerのModuleFilePathの内部での取得方法を変更しました。
  • 2018/05/01 1.0.14.3
    • WindowManagerにメソッドを追加してインスタンスの構成方法を変更しました。
  • 2018/05/01 1.0.14.2
    • WindowManagerでProcessIDとThreadIDがとれない問題を修正しました。
  • 2018/05/01 1.0.14.1
    • HookManagerでHookできる対象を追加しました。
  • 2018/04/30 1.0.14.0
    • WindowManagerをWPFManagerに変更しました。
    • WindowManagerを追加しました。
    • HookMangerのHandlerFilterの動きを修正しました。
  • 2018/04/29 1.0.13.2
    • HookManager.GlobalSessionがGCでクラッシュする問題を修正しました。
  • 2018/04/29 1.0.13.1
    • HookManagerにHandleFilterを追加しました。
    • HookManager.GlobalSessionがGCでクラッシュする問題を修正しました。
  • 2018/04/29 1.0.13.0
    • GlobalHookManagerをHookManagerに変更しました。
  • 2018/04/28 1.0.12.2
    • GlobalHookManagerが思ったように動かない不具合を修正しました。
  • 2018/04/25 1.0.12.0
    • GlobalHookManagerを追加しました。
  • 2018/01/04 1.0.11.0
    • StreamUtilitiesを追加しました。

Empressia Library

このライブラリは、.NETFramework用のライブラリです。
主に自分用です。

中身の一覧とかメモ

以下を使用できます。

  1. ex だいたい名前の通りの追加クラスたち。
    1. ByteQueue
    2. BytesKeyDirectory
    3. EDictionary XMLで保存するための拡張されたDictionary。
    4. EndlessStream
    5. ExceptionEventArgs
    6. EXMLSerializeer XMLを簡単にSerialize、Deserializeするためのクラス。
    7. ExtensionMethods いろんな基本的なクラスの拡張メソッドが入っている静的クラス。
    8. MessageEventArgs
    9. NetworkBitConverter
    10. StreamUtilities 二つのStreamが一致している前提で確認をするメソッドがあります。
  2. setting アプリケーションの設定用……だけど、使いにくいかも?
    1. SettingNode
    2. SettingSerializer
    3. SettingTree
    4. SettingMergable
  3. ui WPF用のコンポーネントです。
    1. converter WPF用のConverterです。
      1. BoolReverseConverter
      2. BoolsToVisibilityConverter 複数の真偽値から表示するかどうかを切り替えるConverter。
      3. BoolToVisibilityConverter
      4. DateTimeToStringConverter
      5. EnumContainsConverter
      6. EnumToVisibilityConverter
      7. Int32ToVisibilityConverter
      8. VisibilityToBoolConverter
    2. win32
      1. WPFWindowManager ウィンドウ管理。点滅させるとか。
    3. ClassNameDataTemplateSelector バインドされるデータのクラス名でDataTemplateを切り替えるSelector。
    4. ERibbonWindow 古いです。EWindowSupporterを使ってください。
    5. EWindow 古いです。EWindowSupporterを使ってください。
    6. EWindowSupporter Windowの表示位置とかを自動で記録するための補助クラス。
    7. ImageButton 前景と背景を指定できる画像ボタン。
    8. SettingWindow 設定用のWindow。
    9. SimpleInputWindow シンプルな入力Window。
  4. win32 Win32 APIの適当なWrapperです。
    1. AVIManager よくわからない。
    2. DisplayManager 画面管理。
    3. DisplayPowerManager 電源管理。
    4. HookManager Windowメッセージのフック管理。
    5. KeyboardManager キーボード管理。
    6. SystemTrayManager システムトレイ管理。
    7. WindowManager ウィンドウ管理。

StreamUtilities

何をするの?

今は、メソッド1個だけ。
ふたつのStreamの中身の値が一致していることを確認します。

どういうとき使うの?

二つのファイルが同じはずだけど本当に同じか確認するときとか。
異なる想定じゃなくて、同じはずっていう想定で組まれています。

使い方

次みたいな感じで使います。

using(FileStream s1 = new FileStream("s1.png", FileMode.Open, FileAccess.Read))
using(FileStream s2 = new FileStream("s2.png", FileMode.Open, FileAccess.Read)) {
    if(StreamUtilities.containsSameBytes(s1, s2)) {
        Console.WriteLine("一致しました。");
    }
}

HookManager

何をするの?

Windowsメッセージを簡単にフックするためのクラス。

どういうとき使うの?

システム上で起こるキーボードとマウスの入力を読み取りたい時に使います。
クリック、とかじゃなくて、ボタンを押した離したっていう感じです。

使い方

今のところの想定は、次みたいな感じ。

using(KeyboardGlobalSession session = HookManager.createKeyboardGloalSession()) {
    session.Hook += (code, wParam, lParam) => {
        // 変換もフィルターも関係なく処理したいとき用。たぶん、使わない。
    };
    session.HandleFilter += (code, wParam, lParam) => {
        // Handleを呼ばないようにフィルターしたいとき用の処理。wParamで間引きたいとき用。trueを返すとHandleが呼ばれなくなる。
    };
    session.Handle += (message, info) => {
        // イベント処理。
    };
    // ここで止めるとか。
    // 別に、ちゃんと解放処理入れてあるから、usingじゃなくてもDisposeされる限り平気だけど。
    // アプリケーション終わって自動で解放されるときでも良いんだけど。
    // いらなくなったら、すぐに解放しないとね。重要なリソースだし。
}

WindowManager

何をするの?

Windowの情報を得ます。

どういうとき使うの?

ウィンドウのプロセスID、タイトルとかがほしいとき……かな。

使い方

今のところの想定は、次みたいな感じ。

WindowInformation info = WindowManager.getForegroundWindow();
if(info == null) { return; }
Console.WriteLine(info.TitleText);
Console.WriteLine(info.ProcessID);
Console.WriteLine(info.ModuleFilePath);

トラブルシュート

WindowManagerでModuleFilePathがとれないんだけど。

アプリのビルドがx86になっているか、AnyCPUで32ビット優先の設定になっていないか確認しましょう。


最近の更新履歴

  • 2018/05/19 1.0.17.1
    • HookManagerを拡張しました。
  • 2018/05/14 1.0.17.0
    • 一部のuintになっていたインターフェースをintに修正しました。
  • 2018/05/13 1.0.16.6
    • WindowsのMessageの一部のメソッド定義が謝っていた問題を修正しました。
  • 2018/05/13 1.0.16.5
    • WindowsのMessageを発行するためのメソッドなどを追加しました。
  • 2018/05/05 1.0.16.4
    • HookManager付近の定数のアクセシビリティを変更しました。
  • 2018/05/04 1.0.16.3
    • WindowManager関連のメソッドを増やしました。
  • 2018/05/03 1.0.16.1
    • 定数定義を増やしました。
  • 2018/05/03 1.0.16.0
    • KeyboardManagerあたりを変更しました。
  • 2018/05/02 1.0.15.0
    • MSLLHOOKSTRUCTのフィールドとプロパティを変更しました。
  • 2018/05/01 1.0.14.5
    • WindowManagerで位置とサイズをとれるようにしました。
  • 2018/05/01 1.0.14.4
    • WindowManagerのModuleFilePathの内部での取得方法を変更しました。
  • 2018/05/01 1.0.14.3
    • WindowManagerにメソッドを追加してインスタンスの構成方法を変更しました。
  • 2018/05/01 1.0.14.2
    • WindowManagerでProcessIDとThreadIDがとれない問題を修正しました。
  • 2018/05/01 1.0.14.1
    • HookManagerでHookできる対象を追加しました。
  • 2018/04/30 1.0.14.0
    • WindowManagerをWPFManagerに変更しました。
    • WindowManagerを追加しました。
    • HookMangerのHandlerFilterの動きを修正しました。
  • 2018/04/29 1.0.13.2
    • HookManager.GlobalSessionがGCでクラッシュする問題を修正しました。
  • 2018/04/29 1.0.13.1
    • HookManagerにHandleFilterを追加しました。
    • HookManager.GlobalSessionがGCでクラッシュする問題を修正しました。
  • 2018/04/29 1.0.13.0
    • GlobalHookManagerをHookManagerに変更しました。
  • 2018/04/28 1.0.12.2
    • GlobalHookManagerが思ったように動かない不具合を修正しました。
  • 2018/04/25 1.0.12.0
    • GlobalHookManagerを追加しました。
  • 2018/01/04 1.0.11.0
    • StreamUtilitiesを追加しました。

Dependencies

This package has no dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.0.17.1 259 5/19/2018
1.0.17 270 5/14/2018
1.0.16.6 301 5/13/2018
1.0.16.5 260 5/13/2018
1.0.16.4 261 5/5/2018
1.0.16.3 257 5/4/2018
1.0.16.1 259 5/3/2018
1.0.16 260 5/3/2018
1.0.15 258 5/2/2018
1.0.14.5 270 5/2/2018
1.0.14.4 257 5/1/2018
1.0.14.3 255 5/1/2018
1.0.14.1 250 5/1/2018
1.0.14 251 4/30/2018
1.0.13.2 276 4/29/2018
1.0.13.1 252 4/29/2018
1.0.13 254 4/29/2018
1.0.12.2 256 4/28/2018
1.0.12.1 236 4/28/2018
1.0.12 249 4/27/2018
1.0.11.1 365 1/5/2018
1.0.11 284 1/4/2018
1.0.10.8 508 9/22/2016