1

子ウィンドウを列挙し、ウィンドウ ハンドルのリストを返すカスタム関数を作成しています。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 は常に機能しますか?
4

1 に答える 1