1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Win32 APIを扱いやすくするMicrosoft.Windows.CsWin32を使うときに躓いたことのメモ

Last updated at Posted at 2021-09-21

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);
}

作ったもの

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?