我正在编写一个自定义函数来枚举子窗口并返回窗口句柄列表。这是根据 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 是否总是有效?