トップレベルのウィンドウを反復処理し、一連の基準を満たしている場合にそれらをリストに入れる関数を作成しようとしています。現時点では、静的変数にウィンドウを追加することでこれを機能させることができますが、この静的変数を回避するために、代わりにのList<IntPtr> instances
リストへのポインターを渡したいと思います。EnumWindowsProc
lParam
fixed
メモリー内のリストの位置を修正するために使用する必要があると思いますが、これを行う方法がわかりません。リストをコールバック関数に渡すためにこれを試しました:
unsafe
{
fixed (void* dp = &instances)
{
WinApi.EnumWindows(new WinApi.EnumWindowsProc(FindPPWindows), dp);
}
}
しかし、私は得る
Cannot take the address of, get the size of, or declare a pointer to a managed type ('System.Collections.GenericList<IntPtr>')
私はc#に慣れていないので、これを行う方法がよくわかりません-または、可能であっても、参照を含むマネージドタイプをマーシャリングすることは不可能であると読みましたが、メモリ内で修正してポインターを作成するだけで済みますそれにポインタを戻し、それを使用します。どうすればこれを機能させることができますか?