主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2020/06/28
暇だったので .NET Foundation (github.com/dotnet) のリポジトリ一覧を眺めていると、
Windows の P/Invoke の定義をしているリポジトリがあったので、
それを使って Win32 API を呼び出してみます。
前提環境は以下の通り
今回は、簡単に Window を列挙する API 群を使ってみます。
まずは、 PInvoke.User32
を NuGet からインストールします。
インストールしたら、あとは以下のように書くだけで、各 API が使用できます。
using System;
using static PInvoke.User32;
namespace PInvokeExample
{
internal static class Program
{
private static void Main(string[] args)
{
EnumWindows((hWnd, param) =>
{
var length = GetWindowTextLength(hWnd);
if (length > 0)
{
var str = new char[length + 1];
GetWindowText(hWnd, str, str.Length);
Console.WriteLine(str);
}
return true;
}, IntPtr.Zero);
Console.ReadLine();
}
}
}
若干使いにくい部分 (StringBuilder
渡せなかったり) もあるけど、
各 API の定義を pinvoke.net とかから自分で用意しなくて良いので便利。
多くの Win32 API を使う場合は、こういうのを使うのもアリではないでしょうか。
ということで、ではでは(。☌ᴗ☌。)