Что такое handles
? Я предполагаю, что это массив оконных дескрипторов
Как определяется TileWindows
(подпись)?
Я попробовал ваш код, и он действительно работал после удаления ключевого слова ref
из последнего параметра.
GCHandle gcHandle = GCHandle.Alloc(handles, GCHandleType.Pinned);
IntPtr arrayHandle = gcHandle.AddrOfPinnedObject();
TileWindows(IntPtr.Zero,
(uint)(Tile.Vertical | Tile.SkipDisabled),
IntPtr.Zero,
(uint)handles.Length, arrayHandle);
gcHandle.Free();
с сигнатурой функции:
[DllImport("user32.dll")]
static extern ushort TileWindows(IntPtr hwndParent, uint wHow, IntPtr lpRect,
uint cKids, IntPtr lpKids);