Я боролся с этим всю ночь. Я просто не понимаю, что не так. Я пытаюсь получить значок на рабочем столе + размер подписи. У меня есть некоторые функции, которые находят дескриптор рабочего стола и помещают его в переменную с именем SysListView32_hwnd. Я подтвердил, что это правильно с шпионской программой Windows. Вот часть, с которой у меня проблемы.
Rectangle rct = new Rectangle();
IntPtr pRct = Marshal.AllocHGlobal(Marshal.SizeOf(rct));
Marshal.StructureToPtr(rct, pRct, true);
SendMessage(SysListView32_hwnd, LVM_GETITEMRECT, (IntPtr)0, pRct);
Rectangle Rect = (Rectangle)Marshal.PtrToStructure(pRct, typeof(Rectangle));
Marshal.FreeHGlobal(pRct);
Debug.WriteLine(Rect.Height + " " + Rect.Width);
Вылетает исследователь каждый раз.
C # Visual Studio 2010
Windows 7 x64, и я компилирую как 64-битную программу
Здесь - мое полное приложение, если необходимо