Microsoft.Windows.CsWin32とは?
こちらのGitHubに記載の通り、Win32 APIにアクセスするために作成するクラス(通常NativeMethods)を自動生成してくれるライブラリです。
利用したい関数名を事前に記載しておくだけで、ビルド時にNativeMethodsクラスを作成してくれます。ややこしいところを吸収してくれるのは助かりますね😉
使い方はReadMeを見ればわかると思うので、詰まったところだけ記載します。
注意
0.1.560-betaで確認しています。
詰まったところ
HWND型がGenerateされない?
Windows.Win32.Foundation名前空間にいました。(ドキュメントに記載ないよね?)
WPFでHWNDはどうやって取得するの?
公式のサンプルコードが見つからなかったのですが、以下の記載で取得できています。
参考:WPF で Visual Studio 2012 のような光るウィンドウを作る | grabacr.nét
/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="window">対象ウィンドウ</param>
internal unsafe ClipboardController(Window window)
{
// WPFでウィンドウプロシージャをフックする場合、
// 対象WindowからHwndSourceを取得し、それに対してフックを追加する
HwndSource source = (HwndSource)PresentationSource.FromVisual(window);
source.AddHook(WndProc);
// ハンドルを取得しリスナを追加
hWnd = new(source.Handle);
_ = PInvoke.AddClipboardFormatListener(hWnd);
}
作ったもの