子ウィンドウを列挙し、ウィンドウ ハンドルのリストを返すカスタム関数を作成しています。P/Invoke による関数の宣言を次に示します。
[System.Runtime.InteropServices.DllImport("user32.Dll")]
public static extern bool EnumWindows (EnumWindowsCallback lpEnumCallbackFunc, int lParam);
[System.Runtime.InteropServices.DllImport("user32")]
public static extern bool EnumChildWindows (IntPtr hWnd, EnumWindowsCallback lpEnumCallbackFunc, int lParam);
問題は、あるシナリオでは Int32 値を、別のシナリオでは IntPtr を渡すことができる必要があることです。
- パラメータを IntPtr に変更した場合、int をそれにキャストし、後で確実に Int32 にキャストすることはできますか?
- パラメータを Int32 のままにした場合、自分のアプリは 32 ビットですが、ターゲット プロセスは 64 ビット (Windows サイドバー) であるため、IntPtr.ToInt32 は常に機能しますか?