EmpressiaLibrary 1.0.16.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package EmpressiaLibrary --version 1.0.16.1                
NuGet\Install-Package EmpressiaLibrary -Version 1.0.16.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EmpressiaLibrary" Version="1.0.16.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EmpressiaLibrary --version 1.0.16.1                
#r "nuget: EmpressiaLibrary, 1.0.16.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install EmpressiaLibrary as a Cake Addin
#addin nuget:?package=EmpressiaLibrary&version=1.0.16.1

// Install EmpressiaLibrary as a Cake Tool
#tool nuget:?package=EmpressiaLibrary&version=1.0.16.1                

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/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を追加しました。
Product Compatible and additional computed target framework versions.
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.17.1 1,212 5/19/2018
1.0.17 1,110 5/14/2018
1.0.16.6 1,148 5/13/2018
1.0.16.5 1,096 5/13/2018
1.0.16.4 1,033 5/5/2018
1.0.16.3 1,036 5/4/2018
1.0.16.1 1,039 5/3/2018
1.0.16 1,048 5/3/2018
1.0.15 1,117 5/2/2018
1.0.14.5 1,083 5/2/2018
1.0.14.4 1,099 5/1/2018
1.0.14.3 1,116 5/1/2018
1.0.14.1 1,143 5/1/2018
1.0.14 1,114 4/30/2018
1.0.13.2 1,108 4/29/2018
1.0.13.1 1,121 4/29/2018
1.0.13 1,102 4/29/2018
1.0.12.2 1,096 4/28/2018
1.0.12.1 1,078 4/28/2018
1.0.12 1,046 4/27/2018
1.0.11.1 1,254 1/5/2018
1.0.11 1,081 1/4/2018
1.0.10.8 2,271 9/22/2016